pax_global_header 0000666 0000000 0000000 00000000064 12253122131 0014502 g ustar 00root root 0000000 0000000 52 comment=5ae7c58b7fe61dd0153b98136a5363d924c17568
exodusii-6.02.dfsg.1/ 0000775 0000000 0000000 00000000000 12253122131 0014343 5 ustar 00root root 0000000 0000000 exodusii-6.02.dfsg.1/ChangeLog 0000664 0000000 0000000 00000007346 12253122131 0016127 0 ustar 00root root 0000000 0000000 ========================================================================
*** Permit 0 as valid entity (block, set, map) id
* Version 5.09 -- Modifications to let zero be a valid entity (element
block, nodeset, sideset, map, other sets and blocks). There is a
new define EX_INVALID_ID (-1) which now indicates that the id for
an entity has not yet been set. All positive integers are now
valid id values.
========================================================================
*** Long Name support.
Exodus from version 5.08 and later can support names of length up
to NC_MAXNAME which is currently 256. The internals of the exodus
database have changed with the addition of a new 'dimension' and a new
database attribute.
This has the following implications:
*. The old library can read a new database if the new database does
not use names longer than 32 characters.
*. If the new database uses longer names, the old library will crash.
*. New library with old database will work fine.
*. New library with new database, no code changes. If the database
uses long names, they will be truncated (with message to stderr) at
32 characters. An output database will limit names to 32
characters by default.
The following code changes are used to work with long names:
========================================
Reading a database:
* Query a database for the maximum length of a name stored on the
database. This does not include the space for the trailing null.
int max_name_length = ex_inquire_int(exoid,
EX_INQ_DB_MAX_USED_NAME_LENGTH);
* Tell the exodus API the maximum name length that your client code
can handle. This is the size of the character strings that are
passed to the ex_get_names() and similar calls. Note that the
maximum_length does not include the trailing null. That means that
if you tell the library to give you 32-character names, the memory
buffer you pass to the library must be 33 characters.
int status = ex_set_max_name_length(exoid, maximum_length);
If this size is less than the length of a name on the database, the
name will be truncated and a message printed to stderr.
* Inquire the size set for the max_name_length. Will return 32 by
default, or if ex_set_max_name_length was called, it will return the
size set in that call.
int max_name_length = ex_inquire_int(exoid,
EX_INQ_CUR_MAX_ALLOWED_NAME_LENGTH);
* Inquire the size that the database used at creation time for the
maximum name size. This is the value used for
ex_set_max_name_length() when the database was created. This isn't
really needed unless you are appending to an existing database and
want to know how long of names it will support.
========================================
Writing a database:
* After the ex_create() call and before the call to ex_put_init() or
ex_put_init_ext(), call ex_set_max_name_length(exoid, max_length); to
tell the database the maximum size names that you will be
outputting. If this isn't called, then it will default to 32
character names.
* The code will keep track of the maximum length that was written and
will update an attribute on the database with that length. This is
queryable via the following function:
int max_name_length = ex_inquire_int(exoid,
EX_INQ_DB_MAX_USED_NAME_LENGTH);
========================================
Names that are included:
* Entity names (element block, nodeset, sideset, faceblock, ...)
* Attribute names
* Map names
* Results variable names
Still 32 characters:
* QA strings
* element type in ex_get_block, ex_put_block calls.
Still 80 characters:
* info records
* title.
========================================
Questions / Concerns / Problems:
Greg Sjaardema.
gdsjaar@sandia.gov or gsjaardema@gmail.com
exodusii-6.02.dfsg.1/README.NEMESIS 0000664 0000000 0000000 00000001560 12253122131 0016327 0 ustar 00root root 0000000 0000000 NOTE: All nemesis api functions are now included in the exodus library.
For almost all functions, the "ne_" portion of the function name
is replaced by "ex_". For example, "ne_put_init_info" in the nemesis
API is now "ex_put_init_info" in the exodus API.
The exceptions are:
* "ne_put_version" is "ex_put_nemesis_version"
* "ne_get_node_map" is "ex_get_processor_node_maps"
* "ne_put_node_map" is "ex_put_processor_node_maps"
* "ne_get_elem_map" is "ex_get_processor_elem_maps"
* "ne_put_elem_map" is "ex_put_processor_elem_maps"
The nemesis library can still be used, but all functions are
simply implemented as wrappers that call the corresponding
exodus API function.
Unless you are building a legacy code that uses the nemesis API,
it is best to just use the exodus API and library.
exodusii-6.02.dfsg.1/exodus/ 0000775 0000000 0000000 00000000000 12253122131 0015652 5 ustar 00root root 0000000 0000000 exodusii-6.02.dfsg.1/exodus/CMakeLists.txt 0000664 0000000 0000000 00000002706 12253122131 0020417 0 ustar 00root root 0000000 0000000 cmake_minimum_required(VERSION 2.6)
PROJECT(ExodusII C CXX Fortran)
SET(EXODUSII_VERSION_MAJOR "5")
SET(EXODUSII_VERSION_MINOR "14")
SET(EXODUSII_VERSION_PATCH "0")
SET(EXODUSII_VERSION "${EXODUSII_VERSION_MAJOR}.${EXODUSII_VERSION_MINOR}")
SET(EXODUSII_VERSION_FULL "${EXODUSII_VERSION}.${EXODUSII_VERSION_PATCH}")
OPTION(BUILD_SHARED "Build the exodus libraries shared." OFF)
IF(BUILD_SHARED)
SET(EXODUS_LIBRARY_TYPE SHARED)
ELSE(BUILD_SHARED)
SET(EXODUS_LIBRARY_TYPE STATIC)
ENDIF(BUILD_SHARED)
SUBDIRS(cbind forbind)
find_path( NETCDF_INCLUDE_DIR netcdf.h
$ENV{ACCESS}/inc
$ENV{NETCDF_DIR}/inc
$ENV{NETCDF_DIR}/include
$ENV{NETCDF_DIR}/libsrc
)
find_library( NETCDF_LIBRARY
NAMES netcdf
PATHS "$ENV{ACCESS}/lib"
"$ENV{NETCDF_DIR}/lib"
"$ENV{NETCDF_DIR}/libsrc/.libs"
)
find_program (NETCDF_NCDUMP ncdump
$ENV{ACCESS}/bin
$ENV{NETCDF_DIR}/bin
$ENV{NETCDF_DIR}/ncdump
)
# Hack for HDF5
find_library( HDF5_LIBRARY hdf5
$ENV{ACCESS}/lib/shared
$ENV{ACCESS}/lib
$ENV{NETCDF_DIR}/lib
$ENV{NETCDF_DIR}/libsrc/.libs
/usr/local/hdf5/lib
)
find_library( HDF5HL_LIBRARY hdf5_hl
$ENV{ACCESS}/lib/shared
$ENV{ACCESS}/lib
$ENV{NETCDF_DIR}/lib
$ENV{NETCDF_DIR}/libsrc/.libs
/usr/local/hdf5/lib
)
# Check for ZLib, but only if using HDF5.
FIND_PACKAGE(ZLIB)
IF(NOT ZLIB_LIBRARY)
MESSAGE(FATAL_ERROR "HDF5 Support specified, cannot find ZLib.")
ENDIF()
SET(USE_ZLIB ON)
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS})
exodusii-6.02.dfsg.1/exodus/COPYRIGHT 0000664 0000000 0000000 00000003156 12253122131 0017152 0 ustar 00root root 0000000 0000000 Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
retains certain rights in this software.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Sandia Corporation nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
exodusii-6.02.dfsg.1/exodus/DartConfig.cmake 0000664 0000000 0000000 00000001241 12253122131 0020672 0 ustar 00root root 0000000 0000000 # Dashboard is opened for submissions for a 24 hour period starting at
# the specified NIGHLY_START_TIME. Time is specified in 24 hour format.
SET (NIGHTLY_START_TIME "21:00:00 EDT")
# Dart server to submit results (used by client)
SET (DROP_SITE "tigre.ca.sandia.gov")
SET (DROP_LOCATION "Drop/")
SET (DROP_SITE_USER "dart")
SET (DROP_METHOD "scp")
SET (TRIGGER_SITE "http://${DROP_SITE}/~dart/cgi-bin/Dart-vtkSNL.pl")
# Project Home Page
SET (PROJECT_URL "http://tigre.ca.sandia.gov/vtkSNL")
SET (CVS_WEB_URL "http://${DROP_SITE}/vtk/")
SET (CVS_WEB_CVSROOT "vtkSNL")
SET (USE_DOXYGEN "On")
SET (DOXYGEN_URL "http://tigre.ca.sandia.gov/vtkSNL/Documentation/Doxygen/" )
exodusii-6.02.dfsg.1/exodus/Doxyfile 0000664 0000000 0000000 00000214132 12253122131 0017363 0 ustar 00root root 0000000 0000000 # Doxyfile 1.7.3
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
#
# All text after a hash (#) is considered a comment and will be ignored
# The format is:
# TAG = value [value, ...]
# For lists items can also be appended using:
# TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (" ")
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
# This tag specifies the encoding used for all characters in the config file
# that follow. The default is UTF-8 which is also the encoding used for all
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
# iconv built into libc) for the transcoding. See
# http://www.gnu.org/software/libiconv for the list of possible encodings.
DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
PROJECT_NAME = ExodusII
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or
# if some version control system is used.
PROJECT_NUMBER = 5.23
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer
# a quick idea about the purpose of the project. Keep the description short.
PROJECT_BRIEF =
# With the PROJECT_LOGO tag one can specify an logo or icon that is
# included in the documentation. The maximum height of the logo should not
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
# Doxygen will copy the logo to the output directory.
PROJECT_LOGO =
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
OUTPUT_DIRECTORY =
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output
# format and will distribute the generated files over these directories.
# Enabling this option can be useful when feeding doxygen a huge amount of
# source files, where putting all generated files in the same directory would
# otherwise cause performance problems for the file system.
CREATE_SUBDIRS = NO
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# The default language is English, other supported languages are:
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
OUTPUT_LANGUAGE = English
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
# include brief member descriptions after the members that are listed in
# the file and class documentation (similar to JavaDoc).
# Set to NO to disable this.
BRIEF_MEMBER_DESC = YES
# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
# the brief description of a member or function before the detailed description.
# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
# brief descriptions will be completely suppressed.
REPEAT_BRIEF = YES
# This tag implements a quasi-intelligent brief description abbreviator
# that is used to form the text in various listings. Each string
# in this list, if found as the leading text of the brief description, will be
# stripped from the text and the result after processing the whole list, is
# used as the annotated text. Otherwise, the brief description is used as-is.
# If left blank, the following values are used ("$name" is automatically
# replaced with the name of the entity): "The $name class" "The $name widget"
# "The $name file" "is" "provides" "specifies" "contains"
# "represents" "a" "an" "the"
ABBREVIATE_BRIEF =
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# Doxygen will generate a detailed section even if there is only a brief
# description.
ALWAYS_DETAILED_SEC = NO
# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
# inherited members of a class in the documentation of that class as if those
# members were ordinary class members. Constructors, destructors and assignment
# operators of the base classes will not be shown.
INLINE_INHERITED_MEMB = NO
# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
# path before files name in the file list and in the header files. If set
# to NO the shortest path that makes the file name unique will be used.
FULL_PATH_NAMES = YES
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
# can be used to strip a user-defined part of the path. Stripping is
# only done if one of the specified strings matches the left-hand part of
# the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which doxygen is run is used as the
# path to strip.
STRIP_FROM_PATH =
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
# the reader which header file to include in order to use a class.
# If left blank only the name of the header file containing the class
# definition is used. Otherwise one should specify the include paths that
# are normally passed to the compiler using the -I flag.
STRIP_FROM_INC_PATH =
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
# (but less readable) file names. This can be useful if your file system
# doesn't support long names like on DOS, Mac, or CD-ROM.
SHORT_NAMES = NO
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
# will interpret the first line (until the first dot) of a JavaDoc-style
# comment as the brief description. If set to NO, the JavaDoc
# comments will behave just like regular Qt-style comments
# (thus requiring an explicit @brief command for a brief description.)
JAVADOC_AUTOBRIEF = NO
# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
# interpret the first line (until the first dot) of a Qt-style
# comment as the brief description. If set to NO, the comments
# will behave just like regular Qt-style comments (thus requiring
# an explicit \brief command for a brief description.)
QT_AUTOBRIEF = NO
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
# treat a multi-line C++ special comment block (i.e. a block of //! or ///
# comments) as a brief description. This used to be the default behaviour.
# The new default is to treat a multi-line C++ comment block as a detailed
# description. Set this tag to YES if you prefer the old behaviour instead.
MULTILINE_CPP_IS_BRIEF = NO
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
# member inherits the documentation from any documented member that it
# re-implements.
INHERIT_DOCS = YES
# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
# a new page for each member. If set to NO, the documentation of a member will
# be part of the file/class/namespace that contains it.
SEPARATE_MEMBER_PAGES = NO
# The TAB_SIZE tag can be used to set the number of spaces in a tab.
# Doxygen uses this value to replace tabs by spaces in code fragments.
TAB_SIZE = 1
# This tag can be used to specify a number of aliases that acts
# as commands in the documentation. An alias has the form "name=value".
# For example adding "sideeffect=\par Side Effects:\n" will allow you to
# put the command \sideeffect (or @sideeffect) in the documentation, which
# will result in a user-defined paragraph with heading "Side Effects:".
# You can put \n's in the value part of an alias to insert newlines.
ALIASES = "func{1}=\1" \
"fparam{1}=\1" \
"file{1}=\1" \
"comment{1}=...\1" \
"undoc=\xrefitem undoc \"Undocumented\" \"Undocumented\""
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
# sources only. Doxygen will then generate output that is more tailored for C.
# For instance, some of the names that are used will be different. The list
# of all members will be omitted, etc.
OPTIMIZE_OUTPUT_FOR_C = YES
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
# sources only. Doxygen will then generate output that is more tailored for
# Java. For instance, namespaces will be presented as packages, qualified
# scopes will look different, etc.
OPTIMIZE_OUTPUT_JAVA = NO
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
# sources only. Doxygen will then generate output that is more tailored for
# Fortran.
OPTIMIZE_FOR_FORTRAN = NO
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
# sources. Doxygen will then generate output that is tailored for
# VHDL.
OPTIMIZE_OUTPUT_VHDL = NO
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given extension.
# Doxygen has a built-in mapping, but you can override or extend it using this
# tag. The format is ext=language, where ext is a file extension, and language
# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
EXTENSION_MAPPING =
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should
# set this tag to YES in order to let doxygen match functions declarations and
# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
# func(std::string) {}). This also makes the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate.
BUILTIN_STL_SUPPORT = NO
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
CPP_CLI_SUPPORT = NO
# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
# Doxygen will parse them like normal C++ but will assume all classes use public
# instead of private inheritance when no explicit protection keyword is present.
SIP_SUPPORT = NO
# For Microsoft's IDL there are propget and propput attributes to indicate getter
# and setter methods for a property. Setting this option to YES (the default)
# will make doxygen replace the get and set methods by a property in the
# documentation. This will only work if the methods are indeed getting or
# setting a simple type. If this is not the case, or you want to show the
# methods anyway, you should set this option to NO.
IDL_PROPERTY_SUPPORT = YES
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
# tag is set to YES, then doxygen will reuse the documentation of the first
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
DISTRIBUTE_GROUP_DOC = NO
# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
# the same type (for instance a group of public functions) to be put as a
# subgroup of that type (e.g. under the Public Functions section). Set it to
# NO to prevent subgrouping. Alternatively, this can be done per class using
# the \nosubgrouping command.
SUBGROUPING = YES
# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
# is documented as struct, union, or enum with the name of the typedef. So
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
# with name TypeT. When disabled the typedef will appear as a member of a file,
# namespace, or class. And the struct will be named TypeS. This can typically
# be useful for C code in case the coding convention dictates that all compound
# types are typedef'ed and only the typedef is referenced, never the tag name.
TYPEDEF_HIDES_STRUCT = NO
# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
# determine which symbols to keep in memory and which to flush to disk.
# When the cache is full, less often used symbols will be written to disk.
# For small to medium size projects (<1000 input files) the default value is
# probably good enough. For larger projects a too small cache size can cause
# doxygen to be busy swapping symbols to and from disk most of the time
# causing a significant performance penalty.
# If the system has enough physical memory increasing the cache will improve the
# performance by keeping more symbols in memory. Note that the value works on
# a logarithmic scale so increasing the size by one will roughly double the
# memory usage. The cache size is given by this formula:
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols
SYMBOL_CACHE_SIZE = 0
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
# documentation are documented, even if no documentation was available.
# Private class members and static file members will be hidden unless
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
EXTRACT_PRIVATE = NO
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
EXTRACT_STATIC = YES
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
# defined locally in source files will be included in the documentation.
# If set to NO only classes defined in header files are included.
EXTRACT_LOCAL_CLASSES = YES
# This flag is only useful for Objective-C code. When set to YES local
# methods, which are defined in the implementation section but not in
# the interface are included in the documentation.
# If set to NO (the default) only methods in the interface are included.
EXTRACT_LOCAL_METHODS = NO
# If this flag is set to YES, the members of anonymous namespaces will be
# extracted and appear in the documentation as a namespace called
# 'anonymous_namespace{file}', where file will be replaced with the base
# name of the file that contains the anonymous namespace. By default
# anonymous namespaces are hidden.
EXTRACT_ANON_NSPACES = NO
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
# undocumented members of documented classes, files or namespaces.
# If set to NO (the default) these members will be included in the
# various overviews, but no documentation section is generated.
# This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_MEMBERS = NO
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy.
# If set to NO (the default) these classes will be included in the various
# overviews. This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_CLASSES = NO
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
# friend (class|struct|union) declarations.
# If set to NO (the default) these declarations will be included in the
# documentation.
HIDE_FRIEND_COMPOUNDS = NO
# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
# documentation blocks found inside the body of a function.
# If set to NO (the default) these blocks will be appended to the
# function's detailed documentation block.
HIDE_IN_BODY_DOCS = NO
# The INTERNAL_DOCS tag determines if documentation
# that is typed after a \internal command is included. If the tag is set
# to NO (the default) then the documentation will be excluded.
# Set it to YES to include the internal documentation.
INTERNAL_DOCS = YES
# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
# file names in lower-case letters. If set to YES upper-case letters are also
# allowed. This is useful if you have classes or files whose names only differ
# in case and if your file system supports case sensitive file names. Windows
# and Mac users are advised to set this option to NO.
CASE_SENSE_NAMES = YES
# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
# will show members with their full class and namespace scopes in the
# documentation. If set to YES the scope will be hidden.
HIDE_SCOPE_NAMES = NO
# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
# will put a list of the files that are included by a file in the documentation
# of that file.
SHOW_INCLUDE_FILES = YES
# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
# will list include files with double quotes in the documentation
# rather than with sharp brackets.
FORCE_LOCAL_INCLUDES = NO
# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
# is inserted in the documentation for inline members.
INLINE_INFO = YES
# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
# will sort the (detailed) documentation of file and class members
# alphabetically by member name. If set to NO the members will appear in
# declaration order.
SORT_MEMBER_DOCS = YES
# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
# brief documentation of file, namespace and class members alphabetically
# by member name. If set to NO (the default) the members will appear in
# declaration order.
SORT_BRIEF_DOCS = NO
# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
# will sort the (brief and detailed) documentation of class members so that
# constructors and destructors are listed first. If set to NO (the default)
# the constructors will appear in the respective orders defined by
# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
SORT_MEMBERS_CTORS_1ST = NO
# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
# hierarchy of group names into alphabetical order. If set to NO (the default)
# the group names will appear in their defined order.
SORT_GROUP_NAMES = NO
# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
# sorted by fully-qualified names, including namespaces. If set to
# NO (the default), the class list will be sorted only by class name,
# not including the namespace part.
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
# Note: This option applies only to the class list, not to the
# alphabetical list.
SORT_BY_SCOPE_NAME = NO
# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
# do proper type resolution of all parameters of a function it will reject a
# match between the prototype and the implementation of a member function even
# if there is only one candidate or it is obvious which candidate to choose
# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
# will still accept a match between prototype and implementation in such cases.
STRICT_PROTO_MATCHING = NO
# The GENERATE_TODOLIST tag can be used to enable (YES) or
# disable (NO) the todo list. This list is created by putting \todo
# commands in the documentation.
GENERATE_TODOLIST = YES
# The GENERATE_TESTLIST tag can be used to enable (YES) or
# disable (NO) the test list. This list is created by putting \test
# commands in the documentation.
GENERATE_TESTLIST = YES
# The GENERATE_BUGLIST tag can be used to enable (YES) or
# disable (NO) the bug list. This list is created by putting \bug
# commands in the documentation.
GENERATE_BUGLIST = YES
# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
# disable (NO) the deprecated list. This list is created by putting
# \deprecated commands in the documentation.
GENERATE_DEPRECATEDLIST= YES
# The ENABLED_SECTIONS tag can be used to enable conditional
# documentation sections, marked by \if sectionname ... \endif.
ENABLED_SECTIONS =
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
# the initial value of a variable or macro consists of for it to appear in
# the documentation. If the initializer consists of more lines than specified
# here it will be hidden. Use a value of 0 to hide initializers completely.
# The appearance of the initializer of individual variables and macros in the
# documentation can be controlled using \showinitializer or \hideinitializer
# command in the documentation regardless of this setting.
MAX_INITIALIZER_LINES = 30
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
# at the bottom of the documentation of classes and structs. If set to YES the
# list will mention the files that were used to generate the documentation.
SHOW_USED_FILES = YES
# If the sources in your project are distributed over multiple directories
# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
# in the documentation. The default is NO.
SHOW_DIRECTORIES = YES
# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
# This will remove the Files entry from the Quick Index and from the
# Folder Tree View (if specified). The default is YES.
SHOW_FILES = YES
# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
# Namespaces page. This will remove the Namespaces entry from the Quick Index
# and from the Folder Tree View (if specified). The default is YES.
SHOW_NAMESPACES = YES
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from
# the version control system). Doxygen will invoke the program by executing (via
# popen()) the command , where is the value of
# the FILE_VERSION_FILTER tag, and is the name of an input file
# provided by doxygen. Whatever the program writes to standard output
# is used as the file version. See the manual for examples.
FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
# output files in an output format independent way. The create the layout file
# that represents doxygen's defaults, run doxygen with the -l option.
# You can optionally specify a file name after the option, if omitted
# DoxygenLayout.xml will be used as the name of the layout file.
LAYOUT_FILE =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
# The QUIET tag can be used to turn on/off the messages that are generated
# by doxygen. Possible values are YES and NO. If left blank NO is used.
QUIET = NO
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated by doxygen. Possible values are YES and NO. If left blank
# NO is used.
WARNINGS = YES
# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
# automatically be disabled.
WARN_IF_UNDOCUMENTED = NO
# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as not documenting some
# parameters in a documented function, or documenting parameters that
# don't exist or using markup commands wrongly.
WARN_IF_DOC_ERROR = YES
# The WARN_NO_PARAMDOC option can be enabled to get warnings for
# functions that are documented, but have no documentation for their parameters
# or return value. If set to NO (the default) doxygen will only warn about
# wrong or incomplete parameter documentation, but not about the absence of
# documentation.
WARN_NO_PARAMDOC = YES
# The WARN_FORMAT tag determines the format of the warning messages that
# doxygen can produce. The string should contain the $file, $line, and $text
# tags, which will be replaced by the file and line number from which the
# warning originated and the warning text. Optionally the format may contain
# $version, which will be replaced by the version of the file (if it could
# be obtained via FILE_VERSION_FILTER)
WARN_FORMAT = "$file:$line: $text"
# The WARN_LOGFILE tag can be used to specify a file to which warning
# and error messages should be written. If left blank the output is written
# to stderr.
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
# The INPUT tag can be used to specify the files and/or directories that contain
# documented source files. You may enter file names like "myfile.cpp" or
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
INPUT = cbind/include \
cbind/src \
forbind/src
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
# also the default input encoding. Doxygen uses libiconv (or the iconv built
# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
# the list of possible encodings.
INPUT_ENCODING = UTF-8
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left
# blank the following patterns are tested:
# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
# *.f90 *.f *.for *.vhd *.vhdl
FILE_PATTERNS = *.c \
*.h
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
# should be searched for input files as well. Possible values are YES and NO.
# If left blank NO is used.
RECURSIVE = NO
# The EXCLUDE tag can be used to specify files and/or directories that should
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
EXCLUDE =
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input.
EXCLUDE_SYMLINKS = NO
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
# certain files from those directories. Note that the wildcards are matched
# against the file with absolute path, so to exclude all test directories
# for example use the pattern */test/*
EXCLUDE_PATTERNS =
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
# output. The symbol name can be a fully qualified name, a word, or if the
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# AClass::ANamespace, ANamespace::*Test
EXCLUDE_SYMBOLS =
# The EXAMPLE_PATH tag can be used to specify one or more files or
# directories that contain example code fragments that are included (see
# the \include command).
EXAMPLE_PATH =
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left
# blank all files are included.
EXAMPLE_PATTERNS =
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude
# commands irrespective of the value of the RECURSIVE tag.
# Possible values are YES and NO. If left blank NO is used.
EXAMPLE_RECURSIVE = NO
# The IMAGE_PATH tag can be used to specify one or more files or
# directories that contain image that are included in the documentation (see
# the \image command).
IMAGE_PATH =
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
# by executing (via popen()) the command , where
# is the value of the INPUT_FILTER tag, and is the name of an
# input file. Doxygen will then use the output that the filter program writes
# to standard output. If FILTER_PATTERNS is specified, this tag will be
# ignored.
INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the
# filter if there is a match. The filters are a list of the form:
# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
# info on how filters are used. If FILTER_PATTERNS is empty or if
# non of the patterns match the file name, INPUT_FILTER is applied.
FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will be used to filter the input files when producing source
# files to browse (i.e. when SOURCE_BROWSER is set to YES).
FILTER_SOURCE_FILES = NO
# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
# and it is also possible to disable source filtering for a specific pattern
# using *.ext= (so without naming a filter). This option only has effect when
# FILTER_SOURCE_FILES is enabled.
FILTER_SOURCE_PATTERNS =
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
# If the SOURCE_BROWSER tag is set to YES then a list of source files will
# be generated. Documented entities will be cross-referenced with these sources.
# Note: To get rid of all source code in the generated output, make sure also
# VERBATIM_HEADERS is set to NO.
SOURCE_BROWSER = NO
# Setting the INLINE_SOURCES tag to YES will include the body
# of functions and classes directly in the documentation.
INLINE_SOURCES = NO
# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
# doxygen to hide any special comment blocks from generated source code
# fragments. Normal C and C++ comments will always remain visible.
STRIP_CODE_COMMENTS = NO
# If the REFERENCED_BY_RELATION tag is set to YES
# then for each documented function all documented
# functions referencing it will be listed.
REFERENCED_BY_RELATION = NO
# If the REFERENCES_RELATION tag is set to YES
# then for each documented function all documented entities
# called/used by that function will be listed.
REFERENCES_RELATION = NO
# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
# link to the source code. Otherwise they will link to the documentation.
REFERENCES_LINK_SOURCE = YES
# If the USE_HTAGS tag is set to YES then the references to source code
# will point to the HTML generated by the htags(1) tool instead of doxygen
# built-in source browser. The htags tool is part of GNU's global source
# tagging system (see http://www.gnu.org/software/global/global.html). You
# will need version 4.8.6 or higher.
USE_HTAGS = NO
# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
# will generate a verbatim copy of the header file for each class for
# which an include is specified. Set to NO to disable this.
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
# of all compounds will be generated. Enable this if the project
# contains a lot of classes, structs, unions or interfaces.
ALPHABETICAL_INDEX = YES
# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
# in which this list will be split (can be a number in the range [1..20])
COLS_IN_ALPHA_INDEX = 5
# In case all classes in a project start with a common prefix, all
# classes will be put under the same header in the alphabetical index.
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
# should be ignored while generating the index headers.
IGNORE_PREFIX = ex_
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
# generate HTML output.
GENERATE_HTML = YES
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `html' will be used as the default path.
HTML_OUTPUT = html
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
# doxygen will generate files with .html extension.
HTML_FILE_EXTENSION = .html
# The HTML_HEADER tag can be used to specify a personal HTML header for
# each generated HTML page. If it is left blank doxygen will generate a
# standard header.
HTML_HEADER =
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
# each generated HTML page. If it is left blank doxygen will generate a
# standard footer.
HTML_FOOTER =
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to
# fine-tune the look of the HTML output. If the tag is left blank doxygen
# will generate a default style sheet. Note that doxygen will try to copy
# the style sheet file to the HTML output directory, so don't put your own
# stylesheet in the HTML output directory as well, or it will be erased!
#HTML_STYLESHEET = customdoxygen.css
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
# Doxygen will adjust the colors in the stylesheet and background images
# according to this color. Hue is specified as an angle on a colorwheel,
# see http://en.wikipedia.org/wiki/Hue for more information.
# For instance the value 0 represents red, 60 is yellow, 120 is green,
# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
# The allowed range is 0 to 359.
HTML_COLORSTYLE_HUE = 224
# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
# the colors in the HTML output. For a value of 0 the output will use
# grayscales only. A value of 255 will produce the most vivid colors.
HTML_COLORSTYLE_SAT = 93
# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
# the luminance component of the colors in the HTML output. Values below
# 100 gradually make the output lighter, whereas values above 100 make
# the output darker. The value divided by 100 is the actual gamma applied,
# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
# and 100 does not change the gamma.
HTML_COLORSTYLE_GAMMA = 80
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting
# this to NO can help when comparing the output of multiple runs.
HTML_TIMESTAMP = YES
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
# files or namespaces will be aligned in HTML using tables. If set to
# NO a bullet list will be used.
HTML_ALIGN_MEMBERS = YES
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded. For this to work a browser that supports
# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
HTML_DYNAMIC_SECTIONS = NO
# If the GENERATE_DOCSET tag is set to YES, additional index files
# will be generated that can be used as input for Apple's Xcode 3
# integrated development environment, introduced with OSX 10.5 (Leopard).
# To create a documentation set, doxygen will generate a Makefile in the
# HTML output directory. Running make will produce the docset in that
# directory and running "make install" will install the docset in
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
# it at startup.
# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
# for more information.
GENERATE_DOCSET = NO
# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
# feed. A documentation feed provides an umbrella under which multiple
# documentation sets from a single provider (such as a company or product suite)
# can be grouped.
DOCSET_FEEDNAME = "Doxygen generated docs"
# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
# should uniquely identify the documentation set bundle. This should be a
# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
# will append .docset to the name.
DOCSET_BUNDLE_ID = org.doxygen.Project
# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
# the documentation publisher. This should be a reverse domain-name style
# string, e.g. com.mycompany.MyDocSet.documentation.
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
DOCSET_PUBLISHER_NAME = Publisher
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
# will be generated that can be used as input for tools like the
# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
# of the generated HTML documentation.
GENERATE_HTMLHELP = NO
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
# be used to specify the file name of the resulting .chm file. You
# can add a path in front of the file if the result should not be
# written to the html output directory.
CHM_FILE =
# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
# be used to specify the location (absolute path including file name) of
# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
# the HTML help compiler on the generated index.hhp.
HHC_LOCATION =
# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
# controls if a separate .chi index file is generated (YES) or that
# it should be included in the master .chm file (NO).
GENERATE_CHI = NO
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
# is used to encode HtmlHelp index (hhk), content (hhc) and project file
# content.
CHM_INDEX_ENCODING =
# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
# controls whether a binary table of contents is generated (YES) or a
# normal table of contents (NO) in the .chm file.
BINARY_TOC = NO
# The TOC_EXPAND flag can be set to YES to add extra items for group members
# to the contents of the HTML help documentation and to the tree view.
TOC_EXPAND = NO
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
# that can be used as input for Qt's qhelpgenerator to generate a
# Qt Compressed Help (.qch) of the generated HTML documentation.
GENERATE_QHP = NO
# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
# be used to specify the file name of the resulting .qch file.
# The path specified is relative to the HTML output folder.
QCH_FILE =
# The QHP_NAMESPACE tag specifies the namespace to use when generating
# Qt Help Project output. For more information please see
# http://doc.trolltech.com/qthelpproject.html#namespace
QHP_NAMESPACE = org.doxygen.Project
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
# Qt Help Project output. For more information please see
# http://doc.trolltech.com/qthelpproject.html#virtual-folders
QHP_VIRTUAL_FOLDER = doc
# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
# add. For more information please see
# http://doc.trolltech.com/qthelpproject.html#custom-filters
QHP_CUST_FILTER_NAME =
# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see
#
# Qt Help Project / Custom Filters.
QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's
# filter section matches.
#
# Qt Help Project / Filter Attributes.
QHP_SECT_FILTER_ATTRS =
# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
# be used to specify the location of Qt's qhelpgenerator.
# If non-empty doxygen will try to run qhelpgenerator on the generated
# .qhp file.
QHG_LOCATION =
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
# will be generated, which together with the HTML files, form an Eclipse help
# plugin. To install this plugin and make it available under the help contents
# menu in Eclipse, the contents of the directory containing the HTML and XML
# files needs to be copied into the plugins directory of eclipse. The name of
# the directory within the plugins directory should be the same as
# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
# the help appears.
GENERATE_ECLIPSEHELP = NO
# A unique identifier for the eclipse help plugin. When installing the plugin
# the directory name containing the HTML and XML files should also have
# this name.
ECLIPSE_DOC_ID = org.doxygen.Project
# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
# top of each HTML page. The value NO (the default) enables the index and
# the value YES disables it.
DISABLE_INDEX = NO
# This tag can be used to set the number of enum values (range [0,1..20])
# that doxygen will group on one line in the generated HTML documentation.
# Note that a value of 0 will completely suppress the enum values from
# appearing in the overview section.
ENUM_VALUES_PER_LINE = 4
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information.
# If the tag value is set to YES, a side panel will be generated
# containing a tree-like index structure (just like the one that
# is generated for HTML Help). For this to work a browser that supports
# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
# Windows users are probably better off using the HTML help feature.
GENERATE_TREEVIEW = YES
# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
# and Class Hierarchy pages using a tree view instead of an ordered list.
USE_INLINE_TREES = NO
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree
# is shown.
TREEVIEW_WIDTH = 250
# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
# links to external symbols imported via tag files in a separate window.
EXT_LINKS_IN_WINDOW = NO
# Use this tag to change the font size of Latex formulas included
# as images in the HTML documentation. The default is 10. Note that
# when you change the font size after a successful doxygen run you need
# to manually remove any form_*.png images from the HTML output directory
# to force them to be regenerated.
FORMULA_FONTSIZE = 10
# Use the FORMULA_TRANPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are
# not supported properly for IE 6.0, but are supported on all modern browsers.
# Note that when changing this option you need to delete any form_*.png files
# in the HTML output before the changes have effect.
FORMULA_TRANSPARENT = YES
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
# (see http://www.mathjax.org) which uses client side Javascript for the
# rendering instead of using prerendered bitmaps. Use this if you do not
# have LaTeX installed or if you want to formulas look prettier in the HTML
# output. When enabled you also need to install MathJax separately and
# configure the path to it using the MATHJAX_RELPATH option.
USE_MATHJAX = NO
# When MathJax is enabled you need to specify the location relative to the
# HTML output directory using the MATHJAX_RELPATH option. The destination
# directory should contain the MathJax.js script. For instance, if the mathjax
# directory is located at the same level as the HTML output directory, then
# MATHJAX_RELPATH should be ../mathjax. The default value points to the
# mathjax.org site, so you can quickly see the result without installing
# MathJax, but it is strongly recommended to install a local copy of MathJax
# before deployment.
MATHJAX_RELPATH = http://www.mathjax.org/mathjax
# When the SEARCHENGINE tag is enabled doxygen will generate a search box
# for the HTML output. The underlying search engine uses javascript
# and DHTML and should work on any modern browser. Note that when using
# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
# (GENERATE_DOCSET) there is already a search function so this one should
# typically be disabled. For large projects the javascript based search engine
# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
SEARCHENGINE = YES
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a PHP enabled web server instead of at the web client
# using Javascript. Doxygen will generate the search PHP script and index
# file to put on the web server. The advantage of the server
# based approach is that it scales better to large projects and allows
# full text search. The disadvantages are that it is more difficult to setup
# and does not have live searching capabilities.
SERVER_BASED_SEARCH = NO
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
# generate Latex output.
GENERATE_LATEX = NO
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `latex' will be used as the default path.
LATEX_OUTPUT = latex
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked. If left blank `latex' will be used as the default command name.
# Note that when enabling USE_PDFLATEX this option is only used for
# generating bitmaps for formulas in the HTML output, but not in the
# Makefile that is written to the output directory.
LATEX_CMD_NAME = latex
# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
# generate index for LaTeX. If left blank `makeindex' will be used as the
# default command name.
MAKEINDEX_CMD_NAME = makeindex
# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
# LaTeX documents. This may be useful for small projects and may help to
# save some trees in general.
COMPACT_LATEX = NO
# The PAPER_TYPE tag can be used to set the paper type that is used
# by the printer. Possible values are: a4, letter, legal and
# executive. If left blank a4wide will be used.
PAPER_TYPE = letter
# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
# packages that should be included in the LaTeX output.
EXTRA_PACKAGES =
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
# the generated latex document. The header should contain everything until
# the first chapter. If it is left blank doxygen will generate a
# standard header. Notice: only use this tag if you know what you are doing!
LATEX_HEADER =
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
# contain links (just like the HTML output) instead of page references
# This makes the output suitable for online browsing using a pdf viewer.
PDF_HYPERLINKS = YES
# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
# plain latex in the generated Makefile. Set this option to YES to get a
# higher quality PDF documentation.
USE_PDFLATEX = YES
# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
# command to the generated LaTeX files. This will instruct LaTeX to keep
# running if errors occur, instead of asking the user for help.
# This option is also used when generating formulas in HTML.
LATEX_BATCHMODE = NO
# If LATEX_HIDE_INDICES is set to YES then doxygen will not
# include the index chapters (such as File Index, Compound Index, etc.)
# in the output.
LATEX_HIDE_INDICES = NO
# If LATEX_SOURCE_CODE is set to YES then doxygen will include
# source code with syntax highlighting in the LaTeX output.
# Note that which sources are shown also depends on other settings
# such as SOURCE_BROWSER.
LATEX_SOURCE_CODE = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
# The RTF output is optimized for Word 97 and may not look very pretty with
# other RTF readers or editors.
GENERATE_RTF = NO
# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `rtf' will be used as the default path.
RTF_OUTPUT = rtf
# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
# RTF documents. This may be useful for small projects and may help to
# save some trees in general.
COMPACT_RTF = NO
# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
# will contain hyperlink fields. The RTF file will
# contain links (just like the HTML output) instead of page references.
# This makes the output suitable for online browsing using WORD or other
# programs which support those fields.
# Note: wordpad (write) and others do not support links.
RTF_HYPERLINKS = NO
# Load stylesheet definitions from file. Syntax is similar to doxygen's
# config file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value.
RTF_STYLESHEET_FILE =
# Set optional variables used in the generation of an rtf document.
# Syntax is similar to doxygen's config file.
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
# generate man pages
GENERATE_MAN = NO
# The MAN_OUTPUT tag is used to specify where the man pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `man' will be used as the default path.
MAN_OUTPUT = man
# The MAN_EXTENSION tag determines the extension that is added to
# the generated man pages (default is the subroutine's section .3)
MAN_EXTENSION = .3
# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
# then it will generate one additional man file for each entity
# documented in the real man page(s). These additional files
# only source the real man page, but without them the man command
# would be unable to find the correct page. The default is NO.
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
# If the GENERATE_XML tag is set to YES Doxygen will
# generate an XML file that captures the structure of
# the code including all documentation.
GENERATE_XML = NO
# The XML_OUTPUT tag is used to specify where the XML pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `xml' will be used as the default path.
XML_OUTPUT = xml
# The XML_SCHEMA tag can be used to specify an XML schema,
# which can be used by a validating XML parser to check the
# syntax of the XML files.
XML_SCHEMA =
# The XML_DTD tag can be used to specify an XML DTD,
# which can be used by a validating XML parser to check the
# syntax of the XML files.
XML_DTD =
# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
# dump the program listings (including syntax highlighting
# and cross-referencing information) to the XML output. Note that
# enabling this will significantly increase the size of the XML output.
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
# generate an AutoGen Definitions (see autogen.sf.net) file
# that captures the structure of the code including all
# documentation. Note that this feature is still experimental
# and incomplete at the moment.
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
# If the GENERATE_PERLMOD tag is set to YES Doxygen will
# generate a Perl module file that captures the structure of
# the code including all documentation. Note that this
# feature is still experimental and incomplete at the
# moment.
GENERATE_PERLMOD = NO
# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
# the necessary Makefile rules, Perl scripts and LaTeX code to be able
# to generate PDF and DVI output from the Perl module output.
PERLMOD_LATEX = NO
# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
# nicely formatted so it can be parsed by a human reader. This is useful
# if you want to understand what is going on. On the other hand, if this
# tag is set to NO the size of the Perl module output will be much smaller
# and Perl will parse it just the same.
PERLMOD_PRETTY = YES
# The names of the make variables in the generated doxyrules.make file
# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
# This is useful so different doxyrules.make files included by the same
# Makefile don't overwrite each other's variables.
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
# evaluate all C-preprocessor directives found in the sources and include
# files.
ENABLE_PREPROCESSING = YES
# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
# names in the source code. If set to NO (the default) only conditional
# compilation will be performed. Macro expansion can be done in a controlled
# way by setting EXPAND_ONLY_PREDEF to YES.
MACRO_EXPANSION = YES
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
# then the macro expansion is limited to the macros specified with the
# PREDEFINED and EXPAND_AS_DEFINED tags.
EXPAND_ONLY_PREDEF = YES
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
# in the INCLUDE_PATH (see below) will be search if a #include is found.
SEARCH_INCLUDES = YES
# The INCLUDE_PATH tag can be used to specify one or more directories that
# contain include files that are not input files but should be processed by
# the preprocessor.
INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will
# be used.
INCLUDE_FILE_PATTERNS =
# The PREDEFINED tag can be used to specify one or more macro names that
# are defined before the preprocessor is started (similar to the -D option of
# gcc). The argument of the tag is a list of macros of the form: name
# or name=definition (no spaces). If the definition and the = are
# omitted =1 is assumed. To prevent a macro definition from being
# undefined via #undef or recursively expanded use the := operator
# instead of the = operator.
PREDEFINED =
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded.
# The macro definition that is found in the sources will be used.
# Use the PREDEFINED tag if you want to use a different macro definition that
# overrules the definition found in the source code.
EXPAND_AS_DEFINED = EXODUS_EXPORT
# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
# doxygen's preprocessor will remove all references to function-like macros
# that are alone on a line, have an all uppercase name, and do not end with a
# semicolon, because these will confuse the parser if not removed.
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
# The TAGFILES option can be used to specify one or more tagfiles.
# Optionally an initial location of the external documentation
# can be added for each tagfile. The format of a tag file without
# this location is as follows:
# TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows:
# TAGFILES = file1=loc1 "file2 = loc2" ...
# where "loc1" and "loc2" can be relative or absolute paths or
# URLs. If a location is present for each tag, the installdox tool
# does not have to be run to correct the links.
# Note that each tag file must have a unique name
# (where the name does NOT include the path)
# If a tag file is not located in the directory in which doxygen
# is run, you must also specify the path to the tagfile here.
TAGFILES =
# When a file name is specified after GENERATE_TAGFILE, doxygen will create
# a tag file that is based on the input files it reads.
GENERATE_TAGFILE =
# If the ALLEXTERNALS tag is set to YES all external classes will be listed
# in the class index. If set to NO only the inherited external classes
# will be listed.
ALLEXTERNALS = NO
# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
# in the modules index. If set to NO, only the current project's groups will
# be listed.
EXTERNAL_GROUPS = YES
# The PERL_PATH should be the absolute path and name of the perl script
# interpreter (i.e. the result of `which perl').
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
# or super classes. Setting the tag to NO turns the diagrams off. Note that
# this option also works with HAVE_DOT disabled, but it is recommended to
# install and use dot, since it yields more powerful graphs.
CLASS_DIAGRAMS = NO
# You can define message sequence charts within doxygen comments using the \msc
# command. Doxygen will then run the mscgen tool (see
# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
# documentation. The MSCGEN_PATH tag allows you to specify the directory where
# the mscgen tool resides. If left empty the tool is assumed to be found in the
# default search path.
MSCGEN_PATH =
# If set to YES, the inheritance and collaboration graphs will hide
# inheritance and usage relations if the target is undocumented
# or is not a class.
HIDE_UNDOC_RELATIONS = YES
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz, a graph visualization
# toolkit from AT&T and Lucent Bell Labs. The other options in this section
# have no effect if this option is set to NO (the default)
HAVE_DOT = NO
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
# allowed to run in parallel. When set to 0 (the default) doxygen will
# base this on the number of processors available in the system. You can set it
# explicitly to a value larger than 0 to get control over the balance
# between CPU load and processing speed.
DOT_NUM_THREADS = 0
# By default doxygen will write a font called Helvetica to the output
# directory and reference it in all dot files that doxygen generates.
# When you want a differently looking font you can specify the font name
# using DOT_FONTNAME. You need to make sure dot is able to find the font,
# which can be done by putting it in a standard location or by setting the
# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
# containing the font.
DOT_FONTNAME = Helvetica
# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
# The default size is 10pt.
DOT_FONTSIZE = 10
# By default doxygen will tell dot to use the output directory to look for the
# FreeSans.ttf font (which doxygen will put there itself). If you specify a
# different font using DOT_FONTNAME you can set the path where dot
# can find it using this tag.
DOT_FONTPATH =
# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for each documented class showing the direct and
# indirect inheritance relations. Setting this tag to YES will force the
# the CLASS_DIAGRAMS tag to NO.
CLASS_GRAPH = NO
# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for each documented class showing the direct and
# indirect implementation dependencies (inheritance, containment, and
# class references variables) of the class with other documented classes.
COLLABORATION_GRAPH = NO
# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for groups, showing the direct groups dependencies
GROUP_GRAPHS = YES
# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.
UML_LOOK = NO
# If set to YES, the inheritance and collaboration graphs will show the
# relations between templates and their instances.
TEMPLATE_RELATIONS = NO
# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
# tags are set to YES then doxygen will generate a graph for each documented
# file showing the direct and indirect include dependencies of the file with
# other documented files.
INCLUDE_GRAPH = NO
# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
# documented header file showing the documented files that directly or
# indirectly include this file.
INCLUDED_BY_GRAPH = NO
# If the CALL_GRAPH and HAVE_DOT options are set to YES then
# doxygen will generate a call dependency graph for every global function
# or class method. Note that enabling this option will significantly increase
# the time of a run. So in most cases it will be better to enable call graphs
# for selected functions only using the \callgraph command.
CALL_GRAPH = NO
# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
# doxygen will generate a caller dependency graph for every global function
# or class method. Note that enabling this option will significantly increase
# the time of a run. So in most cases it will be better to enable caller
# graphs for selected functions only using the \callergraph command.
CALLER_GRAPH = NO
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
# will generate a graphical hierarchy of all classes instead of a textual one.
GRAPHICAL_HIERARCHY = NO
# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
# then doxygen will show the dependencies a directory has on other directories
# in a graphical way. The dependency relations are determined by the #include
# relations between the files in the directories.
DIRECTORY_GRAPH = YES
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. Possible values are png, svg, gif or svg.
# If left blank png will be used.
DOT_IMAGE_FORMAT = gif
# The tag DOT_PATH can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
DOT_PATH = /opt/local/bin
# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the
# \dotfile command).
DOTFILE_DIRS =
# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the
# \mscfile command).
MSCFILE_DIRS =
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
# nodes that will be shown in the graph. If the number of nodes in a graph
# becomes larger than this value, doxygen will truncate the graph, which is
# visualized by representing a node as a red box. Note that doxygen if the
# number of direct children of the root node in a graph is already larger than
# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
DOT_GRAPH_MAX_NODES = 50
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
# graphs generated by dot. A depth value of 3 means that only nodes reachable
# from the root by following a path via at most 3 edges will be shown. Nodes
# that lay further from the root node will be omitted. Note that setting this
# option to 1 or 2 may greatly reduce the computation time needed for large
# code bases. Also note that the size of a graph can be further restricted by
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
MAX_DOT_GRAPH_DEPTH = 0
# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
# background. This is disabled by default, because dot on Windows does not
# seem to support this out of the box. Warning: Depending on the platform used,
# enabling this option may lead to badly anti-aliased labels on the edges of
# a graph (i.e. they become hard to read).
DOT_TRANSPARENT = NO
# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10)
# support this, this feature is disabled by default.
DOT_MULTI_TARGETS = NO
# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
# generate a legend page explaining the meaning of the various boxes and
# arrows in the dot generated graphs.
GENERATE_LEGEND = YES
# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
# remove the intermediate dot files that are used to generate
# the various graphs.
DOT_CLEANUP = YES
exodusii-6.02.dfsg.1/exodus/Imakefile 0000664 0000000 0000000 00000007141 12253122131 0017466 0 ustar 00root root 0000000 0000000 XCOMM Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
XCOMM DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
XCOMM retains certain rights in this software.
XCOMM
XCOMM Redistribution and use in source and binary forms, with or without
XCOMM modification, are permitted provided that the following conditions are
XCOMM met:
XCOMM
XCOMM * Redistributions of source code must retain the above copyright
XCOMM notice, this list of conditions and the following disclaimer.
XCOMM
XCOMM * Redistributions in binary form must reproduce the above
XCOMM copyright notice, this list of conditions and the following
XCOMM disclaimer in the documentation and/or other materials provided
XCOMM with the distribution.
XCOMM
XCOMM * Neither the name of Sandia Corporation nor the names of its
XCOMM contributors may be used to endorse or promote products derived
XCOMM from this software without specific prior written permission.
XCOMM
XCOMM THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
XCOMM "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
XCOMM LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
XCOMM A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
XCOMM OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
XCOMM SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
XCOMM LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
XCOMM DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
XCOMM THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
XCOMM (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
XCOMM OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
XCOMM
XCOMM Imakefile for ExodusII libraries
XCOMM Building ExodusII libraries for installation
/* Building ExodusII libraries for installation
* % accmkmf
* % make Makefiles
* % make
*
* Building ExodusII libraries for debugging
* % accmkmf
* % make Makefiles
* % make DEBUG=-g
*
*/
#define IHaveSubdirs
#define PassDebugFlags "DEBUG=$(DEBUG)" \
"CDEBUGFLAGS=$(CDEBUGFLAGS)" \
"CXXDEBUGFLAGS=$(CXXDEBUGFLAGS)" \
"F90DEBUGFLAGS=$(F90DEBUGFLAGS)" \
"F77DEBUGFLAGS=$(F77DEBUGFLAGS)"
#define ExtraOptions "CCOPTIONS=$(CCOPTIONS)"
INCLIST1 = exodusII.h exodusII_int.h
INCLIST2 = exodusII_int.inc exodusII.inc
SUBDIRS = cbind/include \
cbind/src \
forbind/include \
forbind/src \
cbind/test \
forbind/test
#if Build64BitAccess == YES
AllTarget(libexodus.a libexoIIv2for.a libexoIIv2for32.a)
#else
AllTarget(libexodus.a libexoIIv2for.a)
#endif
InstallSubdirIncludeList(makeincludes,cbind/include,$(INCLIST1),$(INCDIR))
InstallSubdirIncludeList(makeincludes,forbind/include,$(INCLIST2),$(INCDIR))
/* Directory for exodusII c library */
NamedTargetSubdirs(libexodus.a,cbind/src,"making exodus ",PassDebugFlags ExtraOptions,all)
/* Directory for exodusII fortran wrappers */
NamedTargetSubdirs(libexoIIv2for.a,forbind/src,"making exoIIv2for ",PassDebugFlags ExtraOptions,libexoIIv2for.a)
#if Build64BitAccess == YES
NamedTargetSubdirs(libexoIIv2for32.a,forbind/src,"making exoIIv2for32 ",PassDebugFlags ExtraOptions,libexoIIv2for32.a)
#endif
InstallLibrary(exodus,$(LIBDIR))
InstallLibrary(exoIIv2for,$(LIBDIR))
InstallLibraryAlias(exodus,exoIIv2c,$(LIBDIR))
#if Build64BitAccess == YES
InstallLibrary(exoIIv2for32,$(LIBDIR))
#endif
check: test
test:: libexodus.a libexoIIv2for.a
NamedMakeSubdirs(test,cbind/test)
NamedMakeSubdirs(test,forbind/test)
DependSubdirs($(SUBDIRS))
exodusii-6.02.dfsg.1/exodus/Makefile.standalone 0000664 0000000 0000000 00000013773 12253122131 0021454 0 ustar 00root root 0000000 0000000 # Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
# DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
# retains certain rights in this software.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
#
# * Neither the name of Sandia Corporation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#========================================================================
# A platform must define:
#
# CC == the C compiler
# FC == the Fortran compiler
# CCOPTIONS == non-optimization related flags for C compiling on this platform
# F77OPTIONS == non-optimization related flags for Fortran compiling on this platform
# RANLIB == ranlib or 'true' if no ranlib
# AR == command to build an archive library.
#
#========================================================================
SYSTEM := $(shell uname)
# Set this to yes if your netcdf is compiled with the netcdf4 extensions
# which require linking with hdf5. It is assumed that the netcdf and hdf5
# library and include paths are the same.
#========================================================================
# Netcdf
#========================================================================
USING_NETCDF4 = "YES"
NETCDF = /Users/gdsjaar/src/SEACAS
NETCDF_INC = -I$(NETCDF)/include
NETCDF_LIB = -L$(NETCDF)/lib -lnetcdf
NCDUMP = ${NETCDF}/bin/ncdump
ifeq ($(USING_NETCDF4), "YES")
LDFLAGS = -L$(NETCDF)/lib -lnetcdf -lhdf5_hl -lhdf5 -lm -lz
else
NETCDF_YES_NO = -DNOT_NETCDF4
LDFLAGS = -L$(NETCDF)/lib -lnetcdf
endif
#========================================================================
# Darwin (Apple OSX)
#========================================================================
ifeq ($(SYSTEM),Darwin)
RANLIB = ranlib
AR = ar -crsv
CC = /opt/local/bin/gcc-mp-4.8
FC = /opt/local/bin/gfortran-mp-4.8
CCOPTIONS = -DADDC_
F77OPTIONS =
F77PREC = -fdefault-real-8 -fdefault-integer-8
endif
#========================================================================
#========================================================================
# Linux
#========================================================================
ifeq ($(SYSTEM),Linux)
# Default Compiler:
COMPILER = GNU
RANLIB = ranlib
AR = ar -rcv
ifeq ($(COMPILER),Portland)
CC = pgcc
FC = pgf77
CCOPTIONS = -Mframe -DADDC_
F77OPTIONS = -fast
F77PREC = -r8 -i8
endif
ifeq ($(COMPILER),Intel)
CC = icc
FC = ifort
CCOPTIONS = -Xc -DADDC_
F77PREC = -r8 -i8
endif
ifeq ($(COMPILER),GNU)
CC = gcc
FC = gfortran
CCOPTIONS = -O2 -Wall -DADDC_
F77OPTIONS = -O2
F77PREC = -fdefault-real-8 -fdefault-integer-8
endif
endif
OPTIMIZE_FLAG = -O2
STD_DEFINES = -DVERBOSE
CFLAGS = $(OPTIMIZE_FLAG) $(CCOPTIONS) $(STD_DEFINES) $(LOC_EXOII_INC) $(NETCDF_INC) $(NETCDF_YES_NO)
FFLAGS = $(OPTIMIZE_FLAG) $(F77OPTIONS) $(LOC_EXOII_INC)
# Use include files locates in exodusii/cbind/include
LOC_EXOII_INC = -I../../cbind/include -I../../forbind/include
SUBDIRS = cbind/src forbind/src cbind/test forbind/test
all:: libexodus.a libexoIIv2for.a libexoIIv2for32.a
libexodus.a::
echo "making exodus in cbind/src"
(cd cbind/src && $(MAKE) $(MFLAGS) -f Makefile.standalone "AR=$(AR)" "CC=$(CC)" "CFLAGS=$(CFLAGS)" "RANLIB=$(RANLIB)" libexodus.a)
cp cbind/src/libexodus.a .
$(RANLIB) libexodus.a
libexoIIv2for.a::
echo "making exoIIv2for in forbind/src"
(cd forbind/src && $(MAKE) $(MFLAGS) -f Makefile.standalone "AR=$(AR)" "CC=$(CC)" "CFLAGS=$(CFLAGS)" "FC=$(FC)" "FFLAGS=$(FFLAGS)" "RANLIB=$(RANLIB)" "SYSTEM=$(SYSTEM)" libexoIIv2for.a)
cp forbind/src/libexoIIv2for.a .
$(RANLIB) libexoIIv2for.a
libexoIIv2for32.a::
echo "making exoIIv2for32 in forbind/src"
(cd forbind/src && $(MAKE) $(MFLAGS) -f Makefile.standalone "AR=$(AR)" "CC=$(CC)" "CFLAGS=$(CFLAGS)" "FC=$(FC)" "FFLAGS=$(FFLAGS)" "RANLIB=$(RANLIB)" "SYSTEM=$(SYSTEM)" libexoIIv2for32.a)
cp forbind/src/libexoIIv2for32.a .
$(RANLIB) libexoIIv2for32.a
check: test
test:: libexodus.a libexoIIv2for.a
test::
echo "making test in cbind/test"
(cd cbind/test && $(MAKE) $(MFLAGS) -f Makefile.standalone "AR=$(AR)" "CC=$(CC)" "CFLAGS=$(CFLAGS)" "LDFLAGS=$(LDFLAGS)" "RANLIB=$(RANLIB)" "NCDUMP=$(NCDUMP)" all)
test::
echo "making test in forbind/test"
(cd forbind/test && $(MAKE) $(MFLAGS) -f Makefile.standalone "AR=$(AR)" "CC=$(CC)" "CFLAGS=$(CFLAGS)" "FC=$(FC)" "FFLAGS=$(FFLAGS)" "LDFLAGS=$(LDFLAGS)" "RANLIB=$(RANLIB)" "NCDUMP=$(NCDUMP)" all)
clean::
@for flag in $(MAKEFLAGS) ''; do \
case "$$flag" in *=*) ;; *[ik]*) set +e;; esac; done; \
for i in $(SUBDIRS) ;\
do \
if test -d $$i; then \
echo "cleaning" "in $(CURRENT_DIR)/$$i..."; \
(cd $$i && $(MAKE) -f Makefile.standalone $(MFLAGS) clean); \
fi; \
done
exodusii-6.02.dfsg.1/exodus/README 0000664 0000000 0000000 00000005462 12253122131 0016541 0 ustar 00root root 0000000 0000000 ========================================================================
CONTACT:
Greg Sjaardema,
Sandia National Laboratories,
gdsjaar@sandia.gov
========================================================================
LICENSE:
The Exodus library is licensed under the terms of the BSD License.
Legal stuff (copyright, licensing restrictions, etc.) can be found in
the file COPYRIGHT which contains:
1. The Sandia Corporation Copyright Notice.
2. The BSD License.
We appreciate feedback from users of this package. Please send
comments, suggestions, and bug reports to Greg Sjaardema
.
Please identify the version of the package.
========================================================================
BUILDING
There are 4 methods for building exodus.
1. SEAMS/SEACAS Build system which is based on imake. If you have a
SEAMS or SEACAS installation, you can use its build system. In the
top-level exodus directory, do 'accmkmf' followed by 'make
Makefiles' and then 'make'
2. CMAKE: type 'cmake .' or 'cmake -i' to generate the Makefiles
followed by 'make'. There is a cmake-script file which shows how I configure
cmake.
3. Makefile.standalone. Edit the top-level Makefile.standalone file
and specify the compiler and other options as detailed in the
file. Then, do "make -f Makefile.standalone".
4. Building in the Trilinos system as part of the seacas package.
See the Trilinos documentation for more details.
Once you have built the library, you can test it by typing "make
check"
========================================================================
NETCDF
The exodus library uses the netcdf library for low-level data
storage.
Exodus requires NetCDF version 4.2.1.1 or later.
The netcdf library must be modified slightly in order to handle the
exodus datamodel. The specific changes are:
1. include/netcdf.h -- Modify the following defines:
#define NC_MAX_DIMS 65536 /* max dimensions per file */
#define NC_MAX_VARS 524288 /* max variables per file */
#define NC_MAX_VAR_DIMS 8 /* max per variable dimensions */
If these changes are not made, the exodus library will still function
for "normal" size models, but it will fail for "large" models. The
error message from exodus/netcdf should be somewhat clear when this
happens...
2. I typically configure netcdf as follows:
./configure --enable-netcdf-4 --disable-fsync --disable-dap --disable-cdmremote
Replace "--enable-netcdf-4" with "--disable-netcdf-4" to not use the
netcdf4 extensions. They are not necessarily needed for exodus, but
will provide compression, larger model sizes, and may be faster in
some cases.
3. When running the netcdf tests, you may have to do "unlimit
stacksize" (csh/tcsh) to avoid some failures due to the increased define sizes
above.
========================================================================
exodusii-6.02.dfsg.1/exodus/cbind/ 0000775 0000000 0000000 00000000000 12253122131 0016731 5 ustar 00root root 0000000 0000000 exodusii-6.02.dfsg.1/exodus/cbind/CMakeLists.txt 0000664 0000000 0000000 00000017254 12253122131 0021502 0 ustar 00root root 0000000 0000000
CONFIGURE_FILE(
${CMAKE_CURRENT_SOURCE_DIR}/include/exodusII_cfg.h.in
${CMAKE_CURRENT_BINARY_DIR}/include/exodusII_cfg.h
@ONLY IMMEDIATE)
INCLUDE_DIRECTORIES(
"${CMAKE_CURRENT_SOURCE_DIR}/include"
"${CMAKE_CURRENT_BINARY_DIR}/include"
"${NETCDF_INCLUDE_DIR}"
)
SET(cbind_SRCS
src/ex_close.c
src/ex_conv.c
src/ex_copy.c
src/ex_create.c
src/ex_cvt_nodes_to_sides.c
src/ex_err.c
src/ex_get_all_times.c
src/ex_get_attr.c
src/ex_get_attr_names.c
src/ex_get_attr_param.c
src/ex_get_block.c
src/ex_get_block_param.c
src/ex_get_cmap_params.c
src/ex_get_concat_node_sets.c
src/ex_get_concat_sets.c
src/ex_get_concat_side_set_node_count.c
src/ex_get_concat_side_sets.c
src/ex_get_conn.c
src/ex_get_coord.c
src/ex_get_coord_names.c
src/ex_get_coordinate_frames.c
src/ex_get_eb_info_global.c
src/ex_get_elem_attr.c
src/ex_get_elem_attr_names.c
src/ex_get_elem_blk_ids.c
src/ex_get_elem_block.c
src/ex_get_elem_cmap.c
src/ex_get_elem_conn.c
src/ex_get_elem_map.c
src/ex_get_elem_num_map.c
src/ex_get_elem_type.c
src/ex_get_elem_var.c
src/ex_get_elem_var_tab.c
src/ex_get_elem_var_time.c
src/ex_get_entity_count_per_polyhedra.c
src/ex_get_glob_var_time.c
src/ex_get_glob_vars.c
src/ex_get_id_map.c
src/ex_get_ids.c
src/ex_get_info.c
src/ex_get_init.c
src/ex_get_init_ext.c
src/ex_get_init_global.c
src/ex_get_init_info.c
src/ex_get_loadbal_param.c
src/ex_get_map.c
src/ex_get_map_param.c
src/ex_get_n_attr.c
src/ex_get_n_conn.c
src/ex_get_n_coord.c
src/ex_get_n_elem_attr.c
src/ex_get_n_elem_conn.c
src/ex_get_n_elem_num_map.c
src/ex_get_n_elem_var.c
src/ex_get_n_nodal_var.c
src/ex_get_n_node_num_map.c
src/ex_get_n_node_set.c
src/ex_get_n_node_set_df.c
src/ex_get_n_one_attr.c
src/ex_get_n_side_set.c
src/ex_get_n_side_set_df.c
src/ex_get_n_var.c
src/ex_get_name.c
src/ex_get_names.c
src/ex_get_nodal_var.c
src/ex_get_nodal_var_time.c
src/ex_get_node_cmap.c
src/ex_get_node_map.c
src/ex_get_node_num_map.c
src/ex_get_node_set.c
src/ex_get_node_set_dist_fact.c
src/ex_get_node_set_ids.c
src/ex_get_node_set_param.c
src/ex_get_ns_param_global.c
src/ex_get_nset_var.c
src/ex_get_nset_var_tab.c
src/ex_get_num_map.c
src/ex_get_object_truth_vector.c
src/ex_get_one_attr.c
src/ex_get_one_elem_attr.c
src/ex_get_partial_attr.c
src/ex_get_partial_conn.c
src/ex_get_partial_coord.c
src/ex_get_partial_elem_attr.c
src/ex_get_partial_elem_conn.c
src/ex_get_partial_elem_map.c
src/ex_get_partial_elem_num_map.c
src/ex_get_partial_elem_var.c
src/ex_get_partial_id_map.c
src/ex_get_partial_nodal_var.c
src/ex_get_partial_node_num_map.c
src/ex_get_partial_node_set.c
src/ex_get_partial_node_set_df.c
src/ex_get_partial_num_map.c
src/ex_get_partial_one_attr.c
src/ex_get_partial_set_dist_fact.c
src/ex_get_partial_side_set.c
src/ex_get_partial_side_set_df.c
src/ex_get_partial_var.c
src/ex_get_processor_elem_maps.c
src/ex_get_processor_node_maps.c
src/ex_get_prop.c
src/ex_get_prop_array.c
src/ex_get_prop_names.c
src/ex_get_qa.c
src/ex_get_set.c
src/ex_get_set_dist_fact.c
src/ex_get_set_param.c
src/ex_get_sets.c
src/ex_get_side_set.c
src/ex_get_side_set_dist_fact.c
src/ex_get_side_set_ids.c
src/ex_get_side_set_node_count.c
src/ex_get_side_set_node_list.c
src/ex_get_side_set_node_list_len.c
src/ex_get_side_set_param.c
src/ex_get_ss_param_global.c
src/ex_get_sset_var.c
src/ex_get_sset_var_tab.c
src/ex_get_time.c
src/ex_get_truth_table.c
src/ex_get_var.c
src/ex_get_var_name.c
src/ex_get_var_names.c
src/ex_get_var_param.c
src/ex_get_var_tab.c
src/ex_get_var_time.c
src/ex_get_variable_name.c
src/ex_get_variable_names.c
src/ex_get_variable_param.c
src/ex_inquire.c
src/ex_ne_util.c
src/ex_open.c
src/ex_opts.c
src/ex_put_all_var_param.c
src/ex_put_all_var_param_ext.c
src/ex_put_attr.c
src/ex_put_attr_names.c
src/ex_put_attr_param.c
src/ex_put_block.c
src/ex_put_block_param.c
src/ex_put_cmap_params.c
src/ex_put_cmap_params_cc.c
src/ex_put_concat_all_blocks.c
src/ex_put_concat_elem_block.c
src/ex_put_concat_node_sets.c
src/ex_put_concat_sets.c
src/ex_put_concat_side_sets.c
src/ex_put_concat_var_param.c
src/ex_put_conn.c
src/ex_put_coord.c
src/ex_put_coord_names.c
src/ex_put_coordinate_frames.c
src/ex_put_eb_info_global.c
src/ex_put_elem_attr.c
src/ex_put_elem_attr_names.c
src/ex_put_elem_block.c
src/ex_put_elem_cmap.c
src/ex_put_elem_conn.c
src/ex_put_elem_map.c
src/ex_put_elem_num_map.c
src/ex_put_elem_var.c
src/ex_put_elem_var_slab.c
src/ex_put_elem_var_tab.c
src/ex_put_entity_count_per_polyhedra.c
src/ex_put_glob_vars.c
src/ex_put_id_map.c
src/ex_put_info.c
src/ex_put_init.c
src/ex_put_init_ext.c
src/ex_put_init_global.c
src/ex_put_init_info.c
src/ex_put_loadbal_param.c
src/ex_put_loadbal_param_cc.c
src/ex_put_map.c
src/ex_put_map_param.c
src/ex_put_n_attr.c
src/ex_put_n_coord.c
src/ex_put_n_elem_attr.c
src/ex_put_n_elem_conn.c
src/ex_put_n_elem_num_map.c
src/ex_put_n_nodal_var.c
src/ex_put_n_node_num_map.c
src/ex_put_n_node_set.c
src/ex_put_n_node_set_df.c
src/ex_put_n_one_attr.c
src/ex_put_n_side_set.c
src/ex_put_n_side_set_df.c
src/ex_put_n_var.c
src/ex_put_name.c
src/ex_put_names.c
src/ex_put_nodal_var.c
src/ex_put_nodal_var_slab.c
src/ex_put_node_cmap.c
src/ex_put_node_map.c
src/ex_put_node_num_map.c
src/ex_put_node_set.c
src/ex_put_node_set_dist_fact.c
src/ex_put_node_set_param.c
src/ex_put_ns_param_global.c
src/ex_put_nset_var.c
src/ex_put_nset_var_tab.c
src/ex_put_num_map.c
src/ex_put_one_attr.c
src/ex_put_one_elem_attr.c
src/ex_put_partial_attr.c
src/ex_put_partial_coord.c
src/ex_put_partial_elem_attr.c
src/ex_put_partial_elem_conn.c
src/ex_put_partial_elem_map.c
src/ex_put_partial_elem_num_map.c
src/ex_put_partial_id_map.c
src/ex_put_partial_nodal_var.c
src/ex_put_partial_node_num_map.c
src/ex_put_partial_node_set.c
src/ex_put_partial_node_set_df.c
src/ex_put_partial_num_map.c
src/ex_put_partial_one_attr.c
src/ex_put_partial_set.c
src/ex_put_partial_set_dist_fact.c
src/ex_put_partial_side_set.c
src/ex_put_partial_side_set_df.c
src/ex_put_partial_var.c
src/ex_put_processor_elem_maps.c
src/ex_put_processor_node_maps.c
src/ex_put_prop.c
src/ex_put_prop_array.c
src/ex_put_prop_names.c
src/ex_put_qa.c
src/ex_put_set.c
src/ex_put_set_dist_fact.c
src/ex_put_set_param.c
src/ex_put_sets.c
src/ex_put_side_set.c
src/ex_put_side_set_dist_fact.c
src/ex_put_side_set_param.c
src/ex_put_ss_param_global.c
src/ex_put_sset_var.c
src/ex_put_sset_var_tab.c
src/ex_put_time.c
src/ex_put_truth_table.c
src/ex_put_var.c
src/ex_put_var_name.c
src/ex_put_var_names.c
src/ex_put_var_param.c
src/ex_put_var_tab.c
src/ex_put_variable_name.c
src/ex_put_variable_names.c
src/ex_put_variable_param.c
src/ex_update.c
src/ex_utils.c
)
SET(cbind_HEADERS
include/exodusII.h
include/exodusII_int.h
)
IF(APPLE)
SET_SOURCE_FILES_PROPERTIES(
src/ex_utils.c
PROPERTIES
COMPILE_FLAGS -fno-common)
ENDIF(APPLE)
ADD_LIBRARY(exoIIv2c ${EXODUS_LIBRARY_TYPE} ${cbind_SRCS})
TARGET_LINK_LIBRARIES(exoIIv2c ${NETCDF_LIBRARY} ${HDF5_LIBRARY} ${HDF5HL_LIBRARY} ${ZLIB_LIBRARY})
IF(MSVC)
set_target_properties(exoIIv2c PROPERTIES COMPILE_DEFINITIONS _CRT_SECURE_NO_WARNINGS)
ENDIF(MSVC)
IF(EXODUS_LIBRARY_PROPERTIES)
SET_TARGET_PROPERTIES(exoIIv2c PROPERTIES ${EXODUS_LIBRARY_PROPERTIES})
ENDIF(EXODUS_LIBRARY_PROPERTIES)
IF(NOT EXODUS_INSTALL_NO_LIBRARIES)
INSTALL(TARGETS exoIIv2c
RUNTIME DESTINATION lib COMPONENT Runtime
LIBRARY DESTINATION lib COMPONENT Runtime
ARCHIVE DESTINATION lib COMPONENT Development)
INSTALL(FILES ${cbind_HEADERS} DESTINATION include COMPONENT Development)
ENDIF(NOT EXODUS_INSTALL_NO_LIBRARIES)
INCLUDE (${CMAKE_ROOT}/Modules/Dart.cmake)
IF (BUILD_TESTING)
ENABLE_TESTING()
SUBDIRS(test)
ENDIF (BUILD_TESTING)
exodusii-6.02.dfsg.1/exodus/cbind/include/ 0000775 0000000 0000000 00000000000 12253122131 0020354 5 ustar 00root root 0000000 0000000 exodusii-6.02.dfsg.1/exodus/cbind/include/Imakefile 0000664 0000000 0000000 00000000314 12253122131 0022163 0 ustar 00root root 0000000 0000000
INCLIST=exodusII.h exodusII_int.h
InstallIncludeList(install,$(INCLIST),$(INCDIR))
#if defined(BuildParallelAwareExodus)
INCLISTP=exodusII_par.h
InstallIncludeList(install,$(INCLISTP),$(INCDIR))
#endif
exodusii-6.02.dfsg.1/exodus/cbind/include/doxygen.h 0000664 0000000 0000000 00000033376 12253122131 0022216 0 ustar 00root root 0000000 0000000 /*! \mainpage ExodusII API Documentation
\section intro Introduction
EXODUS is the successor of the widely used finite element (FE) data file format EXODUS
(henceforth referred to as EXODUS I) developed by Mills-Curran and Flanagan. It
continues the concept of a common database for multiple application codes (mesh generators,
analysis codes, visualization software, etc.) rather than code-specific utilities, affording
flexibility and robustness for both the application code developer and application code user.
By using the EXODUS data model, a user inherits the flexibility of using a large array of
application codes (including vendor-supplied codes) which access this common data file
directly or via translators.
The uses of the EXODUS data model include the following:
- Problem definition -- mesh generation, specification of locations of boundary conditions and load application, specification of material types.
- Simulation -- model input and results output.
- Visualization -- model verification, results postprocessing, data interrogation, and analysis tracking.
\section avail License and Availability
The EXODUS library is licensed under the BSD open source license.
Copyright (c) 2005 Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000
with Sandia Corporation, the U.S. Government retains certain rights in this software.
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list
of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
-Neither the name of Sandia Corporation nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The ExodusII library source code is available on Sourceforge at
http://sourceforge.net/projects/exodusii
For bug reports, documentation errors, and enhancement suggestions, contact:
- Gregory D. Sjaardema
- PHONE: (505) 844-2701
- EMAIL: gdsjaar@sandia.gov
\section devel Development of EXODUS
The evolution of the EXODUS data model has been steered by FE application code developers
who desire the advantages of a common data format. The EXODUS model has been
designed to overcome deficiencies in the EXODUS I file format and meet the following
functional requirements as specified by these developers:
- Random read/write access.
- Application programming interface (API) -- provide routines callable from FORTRAN, C, and C++ application codes.
- Extensible -- allow new data objects to be added without modifying the application programs that use the file format.
- Machine independent -- data should be independent of the machine which generated it.
- Real-time access during analysis -- allow access to the data in a file while the file is
being created.
To address these requirements, the open source database library
etCDF (http://www.unidata.ucar.edu/software/netcdf/) was selected to handle the low-level data storage. The EXODUS
II library functions provide the mapping between FE data objects and
netCDF dimensions, attributes, and variables. Thus, the code developer
interacts with the data model using the vocabulary of an FE analyst
(element connectivity, nodal coordinates, etc.) and is relieved of the
details of the data access mechanism.
Because an EXODUS file is a netCDF file, an application program can
access data via the EXODUS API or the netCDF API directly. Although
accessing the data directly via the netCDF API requires more in-depth
understanding of netCDF, this capability is a powerful feature that
allows the development of auxiliary libraries of special purpose
functions not offered in the standard EXODUS library. For example,
if an application required access to the coordinates of a single node
(the standard library function returns the coordinates for all of the
nodes in the model), a simple function could be written that calls
netCDF routines directly to read the data of interest.
\section descrip Description of Data Objects
The data in EXODUS files can be divided into three primary
categories: initialization data, model, and results.
Initialization data includes sizing parameters (number of nodes,
number of elements, etc.), optional quality assurance information
(names of codes that have operated on the data), and optional
informational text.
The model is described by data which are static (do not change through
time). These data include nodal coordinates, element connectivity
(node lists for each element), element attributes, and node sets and
side sets (used to aid in applying loading conditions and boundary
constraints).
The results are optional and include five types of variables -- nodal,
element, nodeset, sideset, and global -- each of which is stored
through time. Nodal results are output (at each time step) for all the
nodes in the model. An example of a nodal variable is displacement in
the X direction. Element, nodeset, and sideset results are output (at
each time step) for all entities (elements, nodes, sides) in one or
more entity block. For example, stress may be an element
variable. Another use of element variables is to record element status
(a binary flag indicating whether each element is "alive" or "dead")
through time. Global results are output (at each time step) for a
single element or node, or for a single property. Linear momentum of a
structure and the acceleration at a particular point are both examples
of global variables. Although these examples correspond to typical FE
applications, the data format is flexible enough to accommodate a
spectrum of uses.
A few conventions and limitations must be cited:
- There are no restrictions on the frequency of results output except
that the time value associated with each successive time step must
increase monotonically.
- To output results at different frequencies (i.e., variable A at
every simulation time step, variable B at every other time step)
multiple EXODUS files must be used.
- There are no limits to the number of each type of results, but once
declared, the number cannot change.
- If the mesh geometry or topology changes in time (i.e., number of
nodes increases, connectivity changes), then the new geometrymust be
output to a new EXODUS file.
\section int64 Integer Bulkdata Storage Details
The EXODUS database can store integer bulk data, entity map data, and
mesh entity (block/set) ids in either 32-bit or 64-bit integer format. The data
considered "bulk data" are:
- element, face, and edge connectivity lists,
- element, face, edge, and node set entity lists,
The entity map data is any data stored in one of the 'map' objects on
the exodus file. This includes:
- id maps
- number maps
- order maps
- processor node maps
- processor element maps.
A mesh entity id is the id of any block (element block, edge block,
...); set (node set, face set, ...), coordinate frame, and
communication map.
When an EXODUS file is created via the ex_create() function, the
'mode' argument provides the mechanism for specifying how integer data
will be passed as arguments to the API functions and also how the
integer data will be stored on the database. The ex_open() function
also provides a mechanism for specifying how integer data will be
passed as arguments.
The method uses the 'mode' argument to the ex_open() and
ex_create() functions. The mode is a 32-bit integer in which certain
bits are turned on by or'ing certain predefined constants.
exoid = ex_create( EX_TEST_FILENAME,
EX_CLOBBER|EX_MAPS_INT64_DB|EX_MAPS_INT64_API,
&appWordSize, &diskWordSize );
The constants related to the integer size (32-bit or 64-bit)
specification are:
- EX_MAPS_INT64_DB -- entity map data
- EX_IDS_INT64_DB -- mesh entity ids
- EX_BULK_INT64_DB -- bulk data
- EX_ALL_INT64_DB -- (the above 3 or'd together)
- EX_MAPS_INT64_API -- entity map data
- EX_IDS_INT64_API -- mesh entity ids
- EX_BULK_INT64_API -- bulk data
- EX_ALL_INT64_API -- (the above 3 or'd together)
The constants that end with "_DB" specify that that particular integer
data is stored on the database as 64-bit integers; the constants that
end with "_API" specify that that particular integer data is passed
to/from API functions as 64-bit integers.
If the range of the data being transmitted is larger than the
permitted integer range (for example, if the data is stored on the
database as 64-bit ints and the application specifies passing data as
32-bit ints), the api function will return an error.
The three types of integer data whose storage can be specified are
- maps (EX_MAPS_INT64_),
- "bulk data" including connectivity lists and entity lists (EX_BULK_INT64_), and
- entity ids which are the ids of element, face, edge, and node sets
and blocks; and map ids (EX_IDS_INT64_)
The function ex_int64_status(exoid) is used to determine the integer
storage types being used for the EXODUS database 'exoid'. It returns
an integer which can be and'ed with the above flags to determine
either the storage type or function parameter type.
For example, if
(EX_MAPS_INT64_DB \& ex_int64_status(exoid)) is true, then map data is
being stored as 64-bit integers for that database.
It is not possible to determine the integer data size on a database
without opening the database via an ex_open() call. However, the
integer size specification for API functions can be changed at any
time via the ex_set_int64_status(exoid, mode) function. The mode is
one or more of EX_MAPS_INT64_API, EX_IDS_INT64_API, or
EX_BULK_INT64_API, or'd together. Any exodus function calls after
that point will use the specified integer size. Note that a call to
ex_set_int64_status(exoid, mode) overrides any previous setting for
the integer sizes used in the API. The ex_create() function is the
only way to specify the integer sizes specification for database
integers.
\subsection int64_fortran_api Fortran API
The fortran api is uses the same mechanism as was described above for
the C API. If using the "8-byte real and 8-byte int" fortran mode
typically used by the SEACAS applications (the compiler automatically
promotes all integers and reals to 8-byte quantities), then the
fortran exodus library will automatically enable the *_API
options; the client still needs to specify the *_DB options.
\subsection int64_fortran_imp Fortran Implementation
The new capability to pass 64-bit integer data through the fortran and
C API functions simplifies the implementation of the "8-byte real
8-byte int" usage of the exodus library. Previously, the wrapper
routines in addrwrap.F were required to convert the 8-byte integer
data on the client side to/from 4-byte integers on the library
side. This required extra memory allocation and complications that are
now handled at the lowest level in the netcdf library. The
map-related functions in the fortran api have all been converted to
pass 64-bit integers down to the C API which has removed some code and
simplified those functions.
\section Database Options (Compression, Name Length, File Type)
The ex_set_option() function call is used to set various options on the
database. Valid values for 'option' are:
| Option Name | Option Values
-------------------------|---------------
| EX_OPT_MAX_NAME_LENGTH | Maximum length of names that will be returned/passed via api call.
| EX_OPT_COMPRESSION_TYPE | Not currently used; default is gzip
| EX_OPT_COMPRESSION_LEVEL | In the range [0..9]. A value of 0 indicates no compression
| EX_OPT_COMPRESSION_SHUFFLE | 1 if enabled, 0 if disabled
| EX_OPT_INTEGER_SIZE_API | 4 or 8 indicating byte size of integers used in api functions.
| EX_OPT_INTEGER_SIZE_DB | Query only, returns 4 or 8 indicating byte size of integers stored on database.
The compression-related options are only available on netcdf-4 files
since the underlying hdf5 compression functionality is used for the
implementation. The compression level indicates how much effort should
be expended in the compression and the computational expense increases
with higher levels; in many cases, a compression level of 1 is
sufficient.
\defgroup ResultsData Results Data
@{
This section describes data file utility functions for creating /
opening a file, initializing a file with global parameters, reading /
writing information text, inquiring on parameters stored in the data
file, and error reporting.
@}
\defgroup Utilities Data File Utilities
@{
This section describes data file utility functions for creating /
opening a file, initializing a file with global parameters, reading /
writing information text, inquiring on parameters stored in the data
file, and error reporting.
@}
\defgroup ModelDescription Model Description
@{
The routines in this section read and write information which
describe an exodus finite element model. This includes nodal
coordinates, element order map, element connectivity arrays,
element attributes, node sets, side sets, and object properties.
@}
*/
exodusii-6.02.dfsg.1/exodus/cbind/include/exodusII.h 0000664 0000000 0000000 00000224723 12253122131 0022270 0 ustar 00root root 0000000 0000000 /*
* Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
* DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
* retains certain rights in this software.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* * Neither the name of Sandia Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/*****************************************************************************
*
* exodusII.h - Exodus II API include file
*
*****************************************************************************/
#ifndef EXODUS_II_HDR
#define EXODUS_II_HDR
#include "netcdf.h"
#if defined(PARALLEL_AWARE_EXODUS)
#include "netcdf_par.h"
#endif
#include
#include
#include
#ifndef NC_INT64
#error "NetCDF version 4.1.2 or later is required."
#endif
/* EXODUS II version number */
#define EX_API_VERS 6.02f
#define EX_API_VERS_NODOT 602
#define EX_VERS EX_API_VERS
#define NEMESIS_API_VERSION EX_API_VERS
#define NEMESIS_API_VERSION_NODOT EX_API_VERS_NODOT
#define NEMESIS_FILE_VERSION 2.6
/*
* need following extern if this include file is used in a C++
* program, to keep the C++ compiler from mangling the function names.
*/
#ifdef __cplusplus
extern "C" {
#endif
/*
* The following are miscellaneous constants used in the EXODUS II
* API. They should already be defined, but are left over from the
* old days...
*/
#ifndef TRUE
#define TRUE -1
#endif
#ifndef FALSE
#define FALSE 0
#endif
/**
* \defgroup FileVars Variables controlling the file creation mode.
*@{
*/
/* Modes for ex_open */
#define EX_READ 0x0000 /**< ex_open(): open file for reading (default) */
#define EX_WRITE 0x0001 /**< ex_open(): open existing file for appending. */
#define EX_NOCLOBBER 0x0004 /**< Don't overwrite existing database, default */
#define EX_CLOBBER 0x0008 /**< Overwrite existing database if it exists */
#define EX_NORMAL_MODEL 0x0010 /**< disable mods that permit storage of larger models */
#define EX_LARGE_MODEL 0x0020 /**< enable mods that permit storage of larger models */
#define EX_NETCDF4 0x0040 /**< use the hdf5-based netcdf4 output */
#define EX_NOSHARE 0x0080 /**< Do not open netcdf file in "share" mode */
#define EX_SHARE 0x0100 /**< Do open netcdf file in "share" mode */
#define EX_NOCLASSIC 0x0200 /**< Do not force netcdf to classic mode in netcdf4 mode */
/* Need to distinguish between storage on database (DB in name) and
passed through the API functions (API in name).
*/
#define EX_MAPS_INT64_DB 0x0400 /**< All maps (id, order, ...) store int64_t values */
#define EX_IDS_INT64_DB 0x0800 /**< All entity ids (sets, blocks, maps) are int64_t values */
#define EX_BULK_INT64_DB 0x1000 /**< All integer bulk data (local indices, counts, maps); not ids */
#define EX_ALL_INT64_DB (EX_MAPS_INT64_DB|EX_IDS_INT64_DB|EX_BULK_INT64_DB) /**< All of the above... */
#define EX_MAPS_INT64_API 0x2000 /**< All maps (id, order, ...) store int64_t values */
#define EX_IDS_INT64_API 0x4000 /**< All entity ids (sets, blocks, maps) are int64_t values */
#define EX_BULK_INT64_API 0x8000 /**< All integer bulk data (local indices, counts, maps); not ids */
#define EX_INQ_INT64_API 0x10000 /**< Integers passed to/from ex_inquire are int64_t */
#define EX_ALL_INT64_API (EX_MAPS_INT64_API|EX_IDS_INT64_API|EX_BULK_INT64_API|EX_INQ_INT64_API) /**< All of the above... */
/* Parallel IO mode flags... */
#define EX_MPIIO 0x20000
#define EX_MPIPOSIX 0x40000
#define EX_PNETCDF 0x80000
/*@}*/
/*! \sa ex_inquire() */
enum ex_inquiry {
EX_INQ_FILE_TYPE = 1, /**< inquire EXODUS II file type*/
EX_INQ_API_VERS = 2, /**< inquire API version number */
EX_INQ_DB_VERS = 3, /**< inquire database version number */
EX_INQ_TITLE = 4, /**< inquire database title */
EX_INQ_DIM = 5, /**< inquire number of dimensions */
EX_INQ_NODES = 6, /**< inquire number of nodes */
EX_INQ_ELEM = 7, /**< inquire number of elements */
EX_INQ_ELEM_BLK = 8, /**< inquire number of element blocks */
EX_INQ_NODE_SETS = 9, /**< inquire number of node sets*/
EX_INQ_NS_NODE_LEN = 10, /**< inquire length of node set node list */
EX_INQ_SIDE_SETS = 11, /**< inquire number of side sets*/
EX_INQ_SS_NODE_LEN = 12, /**< inquire length of side set node list */
EX_INQ_SS_ELEM_LEN = 13, /**< inquire length of side set element list */
EX_INQ_QA = 14, /**< inquire number of QA records */
EX_INQ_INFO = 15, /**< inquire number of info records */
EX_INQ_TIME = 16, /**< inquire number of time steps in the database */
EX_INQ_EB_PROP = 17, /**< inquire number of element block properties */
EX_INQ_NS_PROP = 18, /**< inquire number of node set properties */
EX_INQ_SS_PROP = 19, /**< inquire number of side set properties */
EX_INQ_NS_DF_LEN = 20, /**< inquire length of node set distribution factor list*/
EX_INQ_SS_DF_LEN = 21, /**< inquire length of side set distribution factor list*/
EX_INQ_LIB_VERS = 22, /**< inquire API Lib vers number*/
EX_INQ_EM_PROP = 23, /**< inquire number of element map properties */
EX_INQ_NM_PROP = 24, /**< inquire number of node map properties */
EX_INQ_ELEM_MAP = 25, /**< inquire number of element maps */
EX_INQ_NODE_MAP = 26, /**< inquire number of node maps*/
EX_INQ_EDGE = 27, /**< inquire number of edges */
EX_INQ_EDGE_BLK = 28, /**< inquire number of edge blocks */
EX_INQ_EDGE_SETS = 29, /**< inquire number of edge sets */
EX_INQ_ES_LEN = 30, /**< inquire length of concat edge set edge list */
EX_INQ_ES_DF_LEN = 31, /**< inquire length of concat edge set dist factor list*/
EX_INQ_EDGE_PROP = 32, /**< inquire number of properties stored per edge block */
EX_INQ_ES_PROP = 33, /**< inquire number of properties stored per edge set */
EX_INQ_FACE = 34, /**< inquire number of faces */
EX_INQ_FACE_BLK = 35, /**< inquire number of face blocks */
EX_INQ_FACE_SETS = 36, /**< inquire number of face sets */
EX_INQ_FS_LEN = 37, /**< inquire length of concat face set face list */
EX_INQ_FS_DF_LEN = 38, /**< inquire length of concat face set dist factor list*/
EX_INQ_FACE_PROP = 39, /**< inquire number of properties stored per face block */
EX_INQ_FS_PROP = 40, /**< inquire number of properties stored per face set */
EX_INQ_ELEM_SETS = 41, /**< inquire number of element sets */
EX_INQ_ELS_LEN = 42, /**< inquire length of concat element set element list */
EX_INQ_ELS_DF_LEN = 43, /**< inquire length of concat element set dist factor list*/
EX_INQ_ELS_PROP = 44, /**< inquire number of properties stored per elem set */
EX_INQ_EDGE_MAP = 45, /**< inquire number of edge maps */
EX_INQ_FACE_MAP = 46, /**< inquire number of face maps */
EX_INQ_COORD_FRAMES = 47, /**< inquire number of coordinate frames */
EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH = 48, /**< inquire size of MAX_NAME_LENGTH dimension on database */
EX_INQ_DB_MAX_USED_NAME_LENGTH = 49, /**< inquire size of MAX_NAME_LENGTH dimension on database */
EX_INQ_MAX_READ_NAME_LENGTH = 50, /**< inquire client-specified max size of returned names */
EX_INQ_DB_FLOAT_SIZE = 51, /**< inquire size of floating-point values stored on database */
EX_INQ_NUM_CHILD_GROUPS= 52, /**< inquire number of groups contained in this (exoid) group */
EX_INQ_GROUP_PARENT = 53, /**< inquire id of parent of this (exoid) group; returns exoid if at root */
EX_INQ_GROUP_ROOT = 54, /**< inquire id of root group "/" of this (exoid) group; returns exoid if at root */
EX_INQ_GROUP_NAME_LEN = 55, /**< inquire length of name of group exoid */
EX_INQ_GROUP_NAME = 56, /**< inquire name of group exoid. "/" returned for root group */
EX_INQ_FULL_GROUP_NAME_LEN = 57, /**< inquire length of full path name of this (exoid) group */
EX_INQ_FULL_GROUP_NAME = 58, /**< inquire full "/"-separated path name of this (exoid) group */
EX_INQ_INVALID = -1};
typedef enum ex_inquiry ex_inquiry;
/* Options */
/**
* \defgroup FileOptions Variables controlling the compression, name size, and integer size.
*@{
*/
/* Modes for ex_open */
/*! \sa ex_set_option() */
enum ex_option_type {
EX_OPT_MAX_NAME_LENGTH = 1,
EX_OPT_COMPRESSION_TYPE, /* Currently not used. GZip by default */
EX_OPT_COMPRESSION_LEVEL, /* 0 (disabled/fastest) ... 9 (best/slowest) */
EX_OPT_COMPRESSION_SHUFFLE, /* 0 (disabled); 1 (enabled) */
EX_OPT_INTEGER_SIZE_API, /* See *_INT64_* values above */
EX_OPT_INTEGER_SIZE_DB /* (query only) */
};
typedef enum ex_option_type ex_option_type;
/*@}*/
enum ex_entity_type {
EX_NODAL = 14, /**< nodal "block" for variables*/
EX_NODE_BLOCK = 14, /**< alias for EX_NODAL */
EX_NODE_SET = 2, /**< node set property code */
EX_EDGE_BLOCK = 6, /**< edge block property code */
EX_EDGE_SET = 7, /**< edge set property code */
EX_FACE_BLOCK = 8, /**< face block property code */
EX_FACE_SET = 9, /**< face set property code */
EX_ELEM_BLOCK = 1, /**< element block property code*/
EX_ELEM_SET = 10, /**< face set property code */
EX_SIDE_SET = 3, /**< side set property code */
EX_ELEM_MAP = 4, /**< element map property code */
EX_NODE_MAP = 5, /**< node map property code */
EX_EDGE_MAP = 11, /**< edge map property code */
EX_FACE_MAP = 12, /**< face map property code */
EX_GLOBAL = 13, /**< global "block" for variables*/
EX_COORDINATE = 15, /**< kluge so some internal wrapper functions work */
EX_INVALID = -1};
typedef enum ex_entity_type ex_entity_type;
/**
* ex_opts() function codes - codes are OR'ed into exopts
*/
enum ex_options {
EX_DEFAULT = 0,
EX_VERBOSE = 1, /**< verbose mode message flag */
EX_DEBUG = 2, /**< debug mode def */
EX_ABORT = 4, /**< abort mode flag def */
EX_NULLVERBOSE = 8 /**< verbose mode for null entity detection warning */
};
typedef enum ex_options ex_options;
/** The value used to indicate that an entity (block, nset, sset)
has not had its id set to a valid value
*/
#define EX_INVALID_ID -1
/**
* \defgroup StringLengths maximum string lengths;
* constants that are used as netcdf dimensions must be of type long
* @{
*/
/** Maximum length of QA record, element type name */
#define MAX_STR_LENGTH 32L
/** Maximum length of an entity name, attribute name, variable name */
#define MAX_NAME_LENGTH MAX_STR_LENGTH
/** Maximum length of the database title or an information record */
#define MAX_LINE_LENGTH 80L
/** Maximum length of an error message passed to ex_err() function. Typically, internal use only */
#define MAX_ERR_LENGTH 256
/* @} */
/** Specifies that this argument is the id of an entity: element block, nodeset, sideset, ... */
typedef int64_t ex_entity_id;
/** The mechanism for passing double/float and int/int64_t both use a
void*; to avoid some confusion as to whether a function takes an
integer or a float/double, the following typedef is used for the
integer argument
*/
typedef void void_int;
/**
* \defgroup APIStructs Structures used by external API functions.
* @{
*/
typedef struct ex_init_params {
char title[MAX_LINE_LENGTH + 1];
int64_t num_dim;
int64_t num_nodes;
int64_t num_edge;
int64_t num_edge_blk;
int64_t num_face;
int64_t num_face_blk;
int64_t num_elem;
int64_t num_elem_blk;
int64_t num_node_sets;
int64_t num_edge_sets;
int64_t num_face_sets;
int64_t num_side_sets;
int64_t num_elem_sets;
int64_t num_node_maps;
int64_t num_edge_maps;
int64_t num_face_maps;
int64_t num_elem_maps;
} ex_init_params;
typedef struct ex_block {
int64_t id;
ex_entity_type type;
char topology[MAX_STR_LENGTH+1];
int64_t num_entry;
int64_t num_nodes_per_entry;
int64_t num_edges_per_entry;
int64_t num_faces_per_entry;
int64_t num_attribute;
} ex_block;
typedef struct ex_set {
int64_t id;
ex_entity_type type;
int64_t num_entry;
int64_t num_distribution_factor;
void_int* entry_list;
void_int* extra_list;
void* distribution_factor_list;
} ex_set;
typedef struct ex_block_params {
void_int* edge_blk_id;
char** edge_type;
int* num_edge_this_blk;
int* num_nodes_per_edge;
int* num_attr_edge;
void_int* face_blk_id;
char** face_type;
int* num_face_this_blk;
int* num_nodes_per_face;
int* num_attr_face;
void_int* elem_blk_id;
char** elem_type;
int* num_elem_this_blk;
int* num_nodes_per_elem;
int* num_edges_per_elem;
int* num_faces_per_elem;
int* num_attr_elem;
int define_maps;
} ex_block_params;
typedef struct ex_set_specs {
void_int* sets_ids;
void_int* num_entries_per_set;
void_int* num_dist_per_set;
void_int* sets_entry_index;
void_int* sets_dist_index;
void_int* sets_entry_list;
void_int* sets_extra_list;
void* sets_dist_fact;
} ex_set_specs;
typedef struct ex_var_params {
int num_glob;
int num_node;
int num_edge;
int num_face;
int num_elem;
int num_nset;
int num_eset;
int num_fset;
int num_sset;
int num_elset;
int* edge_var_tab;
int* face_var_tab;
int* elem_var_tab;
int* nset_var_tab;
int* eset_var_tab;
int* fset_var_tab;
int* sset_var_tab;
int* elset_var_tab;
} ex_var_params;
/* @} */
#ifndef EXODUS_EXPORT
#define EXODUS_EXPORT extern
#endif /* EXODUS_EXPORT */
/* routines for file initialization i/o */
EXODUS_EXPORT int ex_close (int exoid);
EXODUS_EXPORT int ex_copy (int in_exoid, int out_exoid);
#define ex_create(path, mode, comp_ws, io_ws) ex_create_int(path, mode, comp_ws, io_ws, EX_API_VERS_NODOT)
EXODUS_EXPORT int ex_create_int (const char *path, int cmode, int *comp_ws, int *io_ws, int my_version);
EXODUS_EXPORT int ex_create_group (int parent_id, const char *group_name);
EXODUS_EXPORT int ex_get_group_id(int exoid, const char *group_name, int *group_id);
EXODUS_EXPORT int ex_get_group_ids(int exoid, int *num_children, int *child_ids);
EXODUS_EXPORT int ex_get_all_times (int exoid,
void *time_values);
EXODUS_EXPORT int ex_get_coord_names (int exoid,
char **coord_names);
EXODUS_EXPORT int ex_get_coord (int exoid,
void *x_coor,
void *y_coor,
void *z_coor);
EXODUS_EXPORT int ex_get_n_coord (int exoid,
int64_t start_node_num,
int64_t num_nodes,
void *x_coor,
void *y_coor,
void *z_coor);
EXODUS_EXPORT int ex_get_partial_coord (int exoid,
int64_t start_node_num,
int64_t num_nodes,
void *x_coor,
void *y_coor,
void *z_coor);
EXODUS_EXPORT int ex_get_ids (int exoid,
ex_entity_type obj_type,
void_int *ids);
EXODUS_EXPORT int ex_get_coordinate_frames(int exoid,
int *nframes,
void_int *cf_ids,
void* pt_coordinates,
char* tags);
EXODUS_EXPORT int ex_get_glob_vars (int exoid,
int time_step,
int num_glob_vars,
void *glob_var_vals);
EXODUS_EXPORT int ex_get_glob_var_time (int exoid,
int glob_var_index,
int beg_time_step,
int end_time_step,
void *glob_var_vals);
EXODUS_EXPORT int ex_get_info (int exoid, char **info);
EXODUS_EXPORT int ex_put_init_ext (int exoid, const ex_init_params *param);
EXODUS_EXPORT int ex_get_init_ext (int exoid, ex_init_params *param);
EXODUS_EXPORT int ex_get_init (int exoid,
char *title,
void_int *num_dim,
void_int *num_nodes,
void_int *num_elem,
void_int *num_elem_blk,
void_int *num_node_sets,
void_int *num_side_sets);
EXODUS_EXPORT int ex_put_init (int exoid,
const char *title,
int64_t num_dim,
int64_t num_nodes,
int64_t num_elem,
int64_t num_elem_blk,
int64_t num_node_sets,
int64_t num_side_sets);
EXODUS_EXPORT int ex_get_map_param (int exoid,
int *num_node_maps,
int *num_elem_maps);
EXODUS_EXPORT int ex_get_name (int exoid,
ex_entity_type obj_type,
ex_entity_id entity_id,
char *name);
EXODUS_EXPORT int ex_get_names (int exoid,
ex_entity_type obj_type,
char **names);
EXODUS_EXPORT int ex_get_nset_var_tab (int exoid,
int num_nodesets,
int num_nset_var,
int *nset_var_tab);
EXODUS_EXPORT int ex_get_n_nodal_var (int exoid,
int time_step,
int nodal_var_index,
int64_t start_node,
int64_t num_nodes,
void *nodal_var_vals);
EXODUS_EXPORT int ex_get_partial_nodal_var (int exoid,
int time_step,
int nodal_var_index,
int64_t start_node,
int64_t num_nodes,
void *nodal_var_vals);
EXODUS_EXPORT int ex_get_prop_array (int exoid,
ex_entity_type obj_type,
const char *prop_name,
void_int *values);
EXODUS_EXPORT int ex_get_prop (int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
const char *prop_name,
void_int *value);
EXODUS_EXPORT int ex_get_partial_num_map (int exoid,
ex_entity_type map_type,
ex_entity_id map_id,
int64_t ent_start,
int64_t ent_count,
void_int *elem_map);
EXODUS_EXPORT int ex_get_prop_names (int exoid,
ex_entity_type obj_type,
char **prop_names);
EXODUS_EXPORT int ex_get_qa (int exoid,
char *qa_record[][4]);
EXODUS_EXPORT int ex_get_time (int exoid,
int time_step,
void *time_value);
EXODUS_EXPORT int ex_get_variable_names (int exoid,
ex_entity_type obj_type,
int num_vars,
char *var_names[]);
EXODUS_EXPORT int ex_get_variable_name (int exoid,
ex_entity_type obj_type,
int var_num,
char *var_name);
EXODUS_EXPORT int ex_get_variable_param (int exoid,
ex_entity_type obj_type,
int *num_vars);
EXODUS_EXPORT int ex_get_object_truth_vector (int exoid,
ex_entity_type var_type,
ex_entity_id object_id,
int num_var,
int *var_vector);
EXODUS_EXPORT int ex_get_truth_table (int exoid,
ex_entity_type obj_type,
int num_blk,
int num_var,
int *var_tab);
#define ex_open(path, mode, comp_ws, io_ws, version) ex_open_int(path, mode, comp_ws, io_ws, version, EX_API_VERS_NODOT)
EXODUS_EXPORT int ex_open_int (const char *path,
int mode,
int *comp_ws,
int *io_ws,
float *version, int my_version);
EXODUS_EXPORT int ex_put_attr_param (int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
int num_attrs);
EXODUS_EXPORT int ex_get_attr_param (int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
int *num_attrs);
EXODUS_EXPORT int ex_put_all_var_param (int exoid,
int num_g, int num_n,
int num_e, int *elem_var_tab,
int num_m, int *nset_var_tab,
int num_s, int *sset_var_tab);
EXODUS_EXPORT int ex_put_concat_elem_block (int exoid,
const void_int* elem_blk_id,
char *elem_type[],
const void_int* num_elem_this_blk,
const void_int* num_nodes_per_elem,
const void_int* num_attr,
int define_maps);
EXODUS_EXPORT int ex_put_coord_names (int exoid,
char *coord_names[]);
EXODUS_EXPORT int ex_put_coord (int exoid,
const void *x_coor,
const void *y_coor,
const void *z_coor);
EXODUS_EXPORT int ex_put_n_coord (int exoid,
int64_t start_node_num,
int64_t num_nodes,
const void *x_coor,
const void *y_coor,
const void *z_coor);
EXODUS_EXPORT int ex_put_partial_coord (int exoid,
int64_t start_node_num,
int64_t num_nodes,
const void *x_coor,
const void *y_coor,
const void *z_coor);
EXODUS_EXPORT int ex_put_id_map(int exoid,
ex_entity_type obj_type,
const void_int *map);
EXODUS_EXPORT int ex_put_partial_id_map(int exoid,
ex_entity_type obj_type,
int64_t start_entity_num,
int64_t num_entities,
const void_int *map);
EXODUS_EXPORT int ex_put_n_elem_num_map (int exoid,
int64_t start_ent,
int64_t num_ents,
const void_int *map);
EXODUS_EXPORT int ex_put_n_node_num_map (int exoid,
int64_t start_ent,
int64_t num_ents,
const void_int *map);
EXODUS_EXPORT int ex_put_partial_elem_num_map (int exoid,
int64_t start_ent,
int64_t num_ents,
const void_int *map);
EXODUS_EXPORT int ex_put_partial_node_num_map (int exoid,
int64_t start_ent,
int64_t num_ents,
const void_int *map);
EXODUS_EXPORT int ex_get_id_map(int exoid,
ex_entity_type obj_type,
void_int *map);
EXODUS_EXPORT int ex_get_partial_id_map (int exoid,
ex_entity_type map_type,
int64_t start_entity_num,
int64_t num_entities,
void_int* map);
EXODUS_EXPORT int ex_put_coordinate_frames(int exoid,
int nframes,
const void_int *cf_ids,
void* pt_coordinates,
const char* tags);
EXODUS_EXPORT int ex_put_info (int exoid,
int num_info,
char *info[]);
EXODUS_EXPORT int ex_put_map_param (int exoid,
int num_node_maps,
int num_elem_maps);
EXODUS_EXPORT int ex_put_name (int exoid,
ex_entity_type obj_type,
ex_entity_id entity_id,
const char *name);
EXODUS_EXPORT int ex_put_names (int exoid,
ex_entity_type obj_type,
char *names[]);
EXODUS_EXPORT int ex_put_n_one_attr( int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
int64_t start_num,
int64_t num_ent,
int attrib_index,
const void *attrib );
EXODUS_EXPORT int ex_put_partial_one_attr( int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
int64_t start_num,
int64_t num_ent,
int attrib_index,
const void *attrib );
EXODUS_EXPORT int ex_put_prop (int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
const char *prop_name,
ex_entity_id value);
EXODUS_EXPORT int ex_put_prop_array (int exoid,
ex_entity_type obj_type,
const char *prop_name,
const void_int *values);
EXODUS_EXPORT int ex_put_prop_names (int exoid,
ex_entity_type obj_type,
int num_props,
char **prop_names);
EXODUS_EXPORT int ex_put_qa (int exoid,
int num_qa_records,
char* qa_record[][4]);
EXODUS_EXPORT int ex_put_time (int exoid,
int time_step,
const void *time_value);
EXODUS_EXPORT int ex_put_variable_name (int exoid,
ex_entity_type obj_type,
int var_num,
const char *var_name);
EXODUS_EXPORT int ex_put_variable_names (int exoid,
ex_entity_type obj_type,
int num_vars,
char* var_names[]);
EXODUS_EXPORT int ex_put_variable_param (int exoid,
ex_entity_type obj_type,
int num_vars);
EXODUS_EXPORT int ex_put_truth_table (int exoid,
ex_entity_type obj_type,
int num_blk,
int num_var,
int *var_tab);
EXODUS_EXPORT int ex_update (int exoid);
EXODUS_EXPORT int ex_get_num_props (int exoid, ex_entity_type obj_type);
EXODUS_EXPORT int ex_large_model(int exoid);
EXODUS_EXPORT size_t ex_header_size(int exoid);
EXODUS_EXPORT void ex_err(const char *module_name, const char *message, int err_num);
EXODUS_EXPORT void ex_get_err(const char** msg, const char** func, int* errcode);
EXODUS_EXPORT int ex_opts(int options);
EXODUS_EXPORT int ex_inquire(int exoid, int inquiry, void_int*, float*, char*);
EXODUS_EXPORT int64_t ex_inquire_int(int exoid, int inquiry);
EXODUS_EXPORT int ex_int64_status(int exoid);
EXODUS_EXPORT int ex_set_int64_status(int exoid, int mode);
/** Note that the max name length setting is global at this time; not specific
* to a particular database; however, the exoid option is passed to give
* flexibility in the future to implement this on a database-by-database basis.
*/
EXODUS_EXPORT int ex_set_max_name_length(int exoid, int length);
EXODUS_EXPORT int ex_set_option(int exoid, ex_option_type option, int option_value);
/* Write Node Edge Face or Element Number Map */
EXODUS_EXPORT int ex_put_num_map(int exoid,
ex_entity_type map_type,
ex_entity_id map_id,
const void_int *map);
/* Read Number Map */
EXODUS_EXPORT int ex_get_num_map(int exoid,
ex_entity_type map_type,
ex_entity_id map_id,
void_int *map);
/* Write Edge Face or Element Block Parameters */
EXODUS_EXPORT int ex_put_block(int exoid,
ex_entity_type blk_type,
ex_entity_id blk_id,
const char *entry_descrip,
int64_t num_entries_this_blk,
int64_t num_nodes_per_entry,
int64_t num_edges_per_entry,
int64_t num_faces_per_entry,
int64_t num_attr_per_entry);
/*! \deprecated Use ex_get_block_param() */
EXODUS_EXPORT int ex_get_block(int exoid,
ex_entity_type blk_type,
ex_entity_id blk_id,
char *elem_type,
void_int *num_entries_this_blk,
void_int *num_nodes_per_entry,
void_int *num_edges_per_entry,
void_int *num_faces_per_entry,
void_int *num_attr_per_entry);
/* Read Edge Face or Element Block Parameters */
EXODUS_EXPORT int ex_get_block_param(int exoid,
ex_block *block);
EXODUS_EXPORT int ex_put_block_param(int exoid,
const ex_block block);
/* Write All Edge Face and Element Block Parameters */
EXODUS_EXPORT int ex_put_concat_all_blocks(int exoid,
const ex_block_params *param);
EXODUS_EXPORT int ex_put_entity_count_per_polyhedra(int exoid,
ex_entity_type blk_type,
ex_entity_id blk_id,
const int *entity_counts);
EXODUS_EXPORT int ex_get_entity_count_per_polyhedra(int exoid,
ex_entity_type blk_type,
ex_entity_id blk_id,
int *entity_counts);
/* Write Edge Face or Element Block Connectivity */
EXODUS_EXPORT int ex_put_conn(int exoid,
ex_entity_type blk_type,
ex_entity_id blk_id,
const void_int *node_conn,
const void_int *elem_edge_conn,
const void_int *elem_face_conn);
/* Read Edge Face or Element Block Connectivity */
EXODUS_EXPORT int ex_get_conn(int exoid,
ex_entity_type blk_type,
ex_entity_id blk_id,
void_int *nodeconn,
void_int *edgeconn,
void_int *faceconn);
/* Read Partial Edge Face or Element Block Connectivity */
EXODUS_EXPORT int ex_get_n_conn(int exoid,
ex_entity_type blk_type,
ex_entity_id blk_id,
int64_t start_num,
int64_t num_ent,
void_int *nodeconn,
void_int *edgeconn,
void_int *faceconn);
EXODUS_EXPORT int ex_get_partial_conn(int exoid,
ex_entity_type blk_type,
ex_entity_id blk_id,
int64_t start_num,
int64_t num_ent,
void_int *nodeconn,
void_int *edgeconn,
void_int *faceconn);
/* Write Edge Face or Element Block Attributes */
EXODUS_EXPORT int ex_put_attr(int exoid,
ex_entity_type blk_type,
ex_entity_id blk_id,
const void *attrib);
EXODUS_EXPORT int ex_put_partial_attr (int exoid,
ex_entity_type blk_type,
ex_entity_id blk_id,
int64_t start_entity,
int64_t num_entity,
const void *attrib);
/* Read Edge Face or Element Block Attributes */
EXODUS_EXPORT int ex_get_attr(int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
void *attrib);
EXODUS_EXPORT int ex_get_n_attr(int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
int64_t start_num,
int64_t num_ent,
void *attrib);
EXODUS_EXPORT int ex_get_partial_attr(int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
int64_t start_num,
int64_t num_ent,
void *attrib);
/* Write One Edge Face or Element Block Attribute */
EXODUS_EXPORT int ex_put_one_attr(int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
int attrib_index,
const void *attrib);
/* Read One Edge Face or Element Block Attribute */
EXODUS_EXPORT int ex_get_one_attr(int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
int attrib_index,
void *attrib);
/* Read One Edge Face or Element Block Attribute */
EXODUS_EXPORT int ex_get_n_one_attr(int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
int64_t start_num,
int64_t num_ent,
int attrib_index,
void *attrib);
EXODUS_EXPORT int ex_get_partial_one_attr(int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
int64_t start_num,
int64_t num_ent,
int attrib_index,
void *attrib);
/* Write Edge Face or Element Block Attribute Names */
EXODUS_EXPORT int ex_put_attr_names(int exoid,
ex_entity_type blk_type,
ex_entity_id blk_id,
char **names);
/* Read Edge Face or Element Block Attribute Names */
EXODUS_EXPORT int ex_get_attr_names(int exoid,
ex_entity_type obj_type,
ex_entity_id obj_id,
char **names);
/* Write Node Edge Face or Side Set Parameters */
EXODUS_EXPORT int ex_put_set_param(int exoid,
ex_entity_type set_type,
ex_entity_id set_id,
int64_t num_entries_in_set,
int64_t num_dist_fact_in_set);
/* Read Node Edge Face or Side Set Parameters */
EXODUS_EXPORT int ex_get_set_param(int exoid,
ex_entity_type set_type,
ex_entity_id set_id,
void_int *num_entry_in_set,
void_int *num_dist_fact_in_set);
/* Write a Node Edge Face or Side Set */
EXODUS_EXPORT int ex_put_set(int exoid,
ex_entity_type set_type,
ex_entity_id set_id,
const void_int *set_entry_list,
const void_int *set_extra_list);
EXODUS_EXPORT int ex_put_partial_set(int exoid,
ex_entity_type set_type,
ex_entity_id set_id,
int64_t offset,
int64_t count,
const void_int *set_entry_list,
const void_int *set_extra_list);
/* Read a Node Edge Face or Side Set */
EXODUS_EXPORT int ex_get_set(int exoid,
ex_entity_type set_type,
ex_entity_id set_id,
void_int *set_entry_list,
void_int *set_extra_list);
/* Write Node Edge Face or Side Set Distribution Factors */
EXODUS_EXPORT int ex_put_set_dist_fact(int exoid,
ex_entity_type set_type,
ex_entity_id set_id,
const void *set_dist_fact);
/* Read Node Edge Face or Side Set Distribution Factors */
EXODUS_EXPORT int ex_get_set_dist_fact(int exoid,
ex_entity_type set_type,
ex_entity_id set_id,
void *set_dist_fact);
EXODUS_EXPORT int ex_get_partial_set_dist_fact (int exoid,
ex_entity_type set_type,
ex_entity_id set_id,
int64_t offset,
int64_t num_to_put,
void *set_dist_fact);
/* Write Concatenated Node Edge Face or Side Sets */
EXODUS_EXPORT int ex_put_concat_sets(int exoid,
ex_entity_type set_type,
const struct ex_set_specs *set_specs);
/* Read Concatenated Node Edge Face or Side Sets */
EXODUS_EXPORT int ex_get_concat_sets(int exoid,
ex_entity_type set_type,
struct ex_set_specs *set_specs);
/* Write Concatenated Node Edge Face or Side Sets */
EXODUS_EXPORT int ex_put_sets(int exoid,
size_t set_count,
const struct ex_set *sets);
/* Read Concatenated Node Edge Face or Side Sets */
EXODUS_EXPORT int ex_get_sets(int exoid,
size_t set_count,
struct ex_set *sets);
/* (MODIFIED) Write All Results Variables Parameters */
EXODUS_EXPORT int ex_put_all_var_param_ext(int exoid,
const ex_var_params *vp);
/* Write Edge Face or Element Variable Values on Blocks or Sets at a Time Step */
EXODUS_EXPORT int ex_put_var(int exoid,
int time_step,
ex_entity_type var_type,
int var_index,
ex_entity_id obj_id,
int64_t num_entries_this_obj,
const void *var_vals);
/* Write Partial Edge Face or Element Variable Values on Blocks or Sets at a Time Step */
EXODUS_EXPORT int ex_put_n_var(int exoid,
int time_step,
ex_entity_type var_type,
int var_index,
ex_entity_id obj_id,
int64_t start_index,
int64_t num_entities,
const void *var_vals);
EXODUS_EXPORT int ex_put_partial_var(int exoid,
int time_step,
ex_entity_type var_type,
int var_index,
ex_entity_id obj_id,
int64_t start_index,
int64_t num_entities,
const void *var_vals);
/* Read Edge Face or Element Variable Values Defined On Blocks or Sets at a Time Step */
EXODUS_EXPORT int ex_get_var(int exoid,
int time_step,
ex_entity_type var_type,
int var_index,
ex_entity_id obj_id,
int64_t num_entry_this_obj,
void *var_vals);
/* Read Partial Edge Face or Element Variable Values on Blocks or Sets at a Time Step */
EXODUS_EXPORT int ex_get_n_var(int exoid,
int time_step,
ex_entity_type var_type,
int var_index,
ex_entity_id obj_id,
int64_t start_index,
int64_t num_entities,
void *var_vals);
EXODUS_EXPORT int ex_get_n_elem_var (int exoid,
int time_step,
int elem_var_index,
ex_entity_id elem_blk_id,
int64_t num_elem_this_blk,
int64_t start_elem_num,
int64_t num_elem,
void *elem_var_vals);
EXODUS_EXPORT int ex_get_partial_var(int exoid,
int time_step,
ex_entity_type var_type,
int var_index,
ex_entity_id obj_id,
int64_t start_index,
int64_t num_entities,
void *var_vals);
EXODUS_EXPORT int ex_get_partial_elem_var (int exoid,
int time_step,
int elem_var_index,
ex_entity_id elem_blk_id,
int64_t num_elem_this_blk,
int64_t start_elem_num,
int64_t num_elem,
void *elem_var_vals);
/* Read Edge Face or Element Variable Values Defined On Blocks or Sets Through Time */
EXODUS_EXPORT int ex_get_var_time(int exoid,
ex_entity_type var_type,
int var_index,
int64_t id,
int beg_time_step,
int end_time_step,
void *var_vals);
EXODUS_EXPORT int ex_cvt_nodes_to_sides(int exoid,
void_int *num_elem_per_set,
void_int *num_nodes_per_set,
void_int *side_sets_elem_index,
void_int *side_sets_node_index,
void_int *side_sets_elem_list,
void_int *side_sets_node_list,
void_int *side_sets_side_list);
/* Can be replaced by ex_put_var ... */
EXODUS_EXPORT int ex_put_nodal_var (int exoid,
int time_step,
int nodal_var_index,
int64_t num_nodes,
const void *nodal_var_vals);
EXODUS_EXPORT int ex_put_n_nodal_var (int exoid,
int time_step,
int nodal_var_index,
int64_t start_node,
int64_t num_nodes,
const void *nodal_var_vals);
EXODUS_EXPORT int ex_put_partial_nodal_var (int exoid,
int time_step,
int nodal_var_index,
int64_t start_node,
int64_t num_nodes,
const void *nodal_var_vals);
EXODUS_EXPORT int ex_get_partial_elem_map (int exoid,
ex_entity_id map_id,
int64_t ent_start,
int64_t ent_count,
void_int *elem_map);
EXODUS_EXPORT int ex_put_partial_elem_map (int exoid,
ex_entity_id map_id,
int64_t ent_start,
int64_t ent_count,
const void_int *elem_map);
EXODUS_EXPORT int ex_put_partial_num_map (int exoid,
ex_entity_type map_type,
ex_entity_id map_id,
int64_t ent_start,
int64_t ent_count,
const void_int *map);
EXODUS_EXPORT int ex_put_partial_set_dist_fact (int exoid,
ex_entity_type set_type,
ex_entity_id set_id,
int64_t offset,
int64_t num_to_put,
const void *set_dist_fact);
/* TODO */
EXODUS_EXPORT int ex_get_concat_side_set_node_count(int exoid,
int *side_set_node_cnt_list);
/* TODO */
EXODUS_EXPORT int ex_get_side_set_node_list_len(int exoid,
ex_entity_id side_set_id,
void_int *side_set_node_list_len);
/* TODO */
EXODUS_EXPORT int ex_get_side_set_node_count(int exoid,
ex_entity_id side_set_id,
int *side_set_node_cnt_list);
/* TODO */
EXODUS_EXPORT int ex_get_side_set_node_list(int exoid,
ex_entity_id side_set_id,
void_int *side_set_node_cnt_list,
void_int *side_set_node_list);
/* ========================================================================
Functions pulled from nemesis library and incorporated into exodus...
*/
/*=============================================================================
* Initial Information Routines
*===========================================================================*/
EXODUS_EXPORT int
ex_get_init_info(int exoid, /* NemesisI file ID */
int *num_proc, /* Number of processors */
int *num_proc_in_f, /* Number of procs in this file */
char *ftype
);
EXODUS_EXPORT int
ex_put_init_info(int exoid, /* NemesisI file ID */
int num_proc, /* Number of processors */
int num_proc_in_f, /* Number of procs in this file */
char *ftype
);
EXODUS_EXPORT int
ex_get_init_global(int exoid, /* NemesisI file ID */
void_int *num_nodes_g, /* Number of global FEM nodes */
void_int *num_elems_g, /* Number of global FEM elements */
void_int *num_elem_blks_g, /* Number of global elem blocks */
void_int *num_node_sets_g, /* Number of global node sets */
void_int *num_side_sets_g /* Number of global side sets */
);
EXODUS_EXPORT int
ex_put_init_global(int exoid, /* NemesisI file ID */
int64_t num_nodes_g, /* Number of global FEM nodes */
int64_t num_elems_g, /* Number of global FEM elements */
int64_t num_elem_blks_g, /* Number of global elem blocks */
int64_t num_node_sets_g, /* Number of global node sets */
int64_t num_side_sets_g /* Number of global side sets */
);
/*=============================================================================
* Loadbalance Parameter Routines
*===========================================================================*/
EXODUS_EXPORT int
ex_get_loadbal_param(int exoid, /* NetCDF/Exodus file ID */
void_int *num_int_nodes, /* Number of internal FEM nodes */
void_int *num_bor_nodes, /* Number of border FEM nodes */
void_int *num_ext_nodes, /* Number of external FEM nodes */
void_int *num_int_elems, /* Number of internal FEM elems */
void_int *num_bor_elems, /* Number of border FEM elems */
void_int *num_node_cmaps, /* Number of nodal comm maps */
void_int *num_elem_cmaps, /* Number of elemental comm maps */
int processor /* Processor ID */
);
EXODUS_EXPORT int
ex_put_loadbal_param(int exoid, /* NemesisI file ID */
int64_t num_int_nodes, /* Number of internal FEM nodes */
int64_t num_bor_nodes, /* Number of border FEM nodes */
int64_t num_ext_nodes, /* Number of external FEM nodes */
int64_t num_int_elems, /* Number of internal FEM elems */
int64_t num_bor_elems, /* Number of border FEM elems */
int64_t num_node_cmaps,/* Number of nodal comm maps */
int64_t num_elem_cmaps,/* Number of elemental comm maps */
int processor /* Processor ID */
);
EXODUS_EXPORT int
ex_put_loadbal_param_cc(int exoid, /* NetCDF/Exodus file ID */
void_int *num_int_nodes, /* Number of internal node IDs */
void_int *num_bor_nodes, /* Number of border node IDs */
void_int *num_ext_nodes, /* Number of external node IDs */
void_int *num_int_elems, /* Number of internal elem IDs */
void_int *num_bor_elems, /* Number of border elem IDs */
void_int *num_node_cmaps, /* Number of nodal comm maps */
void_int *num_elem_cmaps /* Number of elem comm maps */
);
/*=============================================================================
* NS, SS & EB Global Parameter Routines
*===========================================================================*/
EXODUS_EXPORT int
ex_get_ns_param_global(int exoid, /* NetCDF/Exodus file ID */
void_int *ns_ids_glob, /* Global IDs of node sets */
void_int *ns_n_cnt_glob, /* Count of nodes in node sets */
void_int *ns_df_cnt_glob /* Count of dist. factors in ns */
);
EXODUS_EXPORT int
ex_put_ns_param_global(int exoid, /* NemesisI file ID */
void_int *global_ids, /* Vector of global node-set IDs */
void_int *global_n_cnts, /* Vector of node counts in node-sets */
void_int *global_df_cnts /* Vector of dist factor counts in node-sets */
);
EXODUS_EXPORT int
ex_get_ss_param_global(int exoid, /* NetCDF/Exodus file ID */
void_int *ss_ids_glob, /* Global side-set IDs */
void_int *ss_s_cnt_glob, /* Global side count */
void_int *ss_df_cnt_glob /* Global dist. factor count */
);
EXODUS_EXPORT int
ex_put_ss_param_global(int exoid, /* NemesisI file ID */
void_int *global_ids, /* Vector of global side-set IDs */
void_int *global_el_cnts, /* Vector of element/side */
/* counts in each side set */
void_int *global_df_cnts /* Vector of dist. factor */
/* counts in each side set */
);
EXODUS_EXPORT int
ex_get_eb_info_global(int exoid, /* NemesisI file ID */
void_int *el_blk_ids, /* Vector of global element IDs */
void_int *el_blk_cnts /* Vector of global element counts */
);
EXODUS_EXPORT int
ex_put_eb_info_global(int exoid, /* NemesisI file ID */
void_int *el_blk_ids, /* Vector of global element IDs */
void_int *el_blk_cnts /* Vector of global element counts */
);
/*=============================================================================
* NS, SS & EB Subset Routines
*===========================================================================*/
EXODUS_EXPORT int
ex_get_n_side_set(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id side_set_id, /* Side-set ID to read */
int64_t start_side_num, /* Starting element number */
int64_t num_sides, /* Number of sides to read */
void_int *side_set_elem_list, /* List of element IDs */
void_int *side_set_side_list /* List of side IDs */
);
EXODUS_EXPORT int
ex_put_n_side_set(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id side_set_id, /* Side-set ID to write */
int64_t start_side_num, /* Starting element number */
int64_t num_sides, /* Number of sides to write */
const void_int *side_set_elem_list, /* List of element IDs */
const void_int *side_set_side_list /* List of side IDs */
);
EXODUS_EXPORT int
ex_get_n_side_set_df(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id side_set_id, /* Side-set ID */
int64_t start_num, /* Starting df number */
int64_t num_df_to_get, /* Number of df's to read */
void *side_set_df /* Distribution factors */
);
EXODUS_EXPORT int
ex_put_n_side_set_df(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id side_set_id, /* Side-set ID */
int64_t start_num, /* Starting df number */
int64_t num_df_to_get, /* Number of df's to write */
void *side_set_df /* Distribution factors */
);
EXODUS_EXPORT int
ex_get_n_node_set(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id node_set_id, /* Node set ID */
int64_t start_node_num, /* Node index to start reading at */
int64_t num_node, /* Number of nodes to read */
void_int *node_set_node_list /* List of nodes in node set */
);
EXODUS_EXPORT int
ex_put_n_node_set(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id node_set_id, /* Node set ID */
int64_t start_node_num, /* Node index to start writing at */
int64_t num_node, /* Number of nodes to write */
const void_int *node_set_node_list /* List of nodes in node set */
);
EXODUS_EXPORT int
ex_get_n_node_set_df(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id node_set_id, /* Node-set ID */
int64_t start_num, /* Starting df number */
int64_t num_df_to_get, /* Number of df's to read */
void *node_set_df /* Distribution factors */
);
EXODUS_EXPORT int
ex_put_n_node_set_df(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id node_set_id, /* Node-set ID */
int64_t start_num, /* Starting df number */
int64_t num_df_to_get, /* Number of df's to write */
void *node_set_df /* Distribution factors */
);
EXODUS_EXPORT int
ex_get_n_elem_conn (int exoid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
int64_t start_elem_num, /* Starting position to read from */
int64_t num_elems, /* Number of elements to read */
void_int *connect /* Connectivity vector */
);
EXODUS_EXPORT int
ex_put_n_elem_conn (int exoid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
int64_t start_elem_num, /* Starting position to write to */
int64_t num_elems, /* Number of elements to write */
const void_int *connect /* Connectivity vector */
);
EXODUS_EXPORT int
ex_get_n_elem_attr (int exoid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
int64_t start_elem_num, /* Starting position to read from */
int64_t num_elems, /* Number of elements to read */
void *attrib /* Attribute */
);
EXODUS_EXPORT int
ex_put_n_elem_attr (int exoid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
int64_t start_elem_num, /* Starting position to write to */
int64_t num_elems, /* Number of elements to write */
void *attrib /* Attribute */
);
EXODUS_EXPORT int
ex_get_partial_side_set(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id side_set_id, /* Side-set ID to read */
int64_t start_side_num, /* Starting element number */
int64_t num_sides, /* Number of sides to read */
void_int *side_set_elem_list, /* List of element IDs */
void_int *side_set_side_list /* List of side IDs */
);
EXODUS_EXPORT int
ex_put_partial_side_set(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id side_set_id, /* Side-set ID to write */
int64_t start_side_num, /* Starting element number */
int64_t num_sides, /* Number of sides to write */
const void_int *side_set_elem_list, /* List of element IDs */
const void_int *side_set_side_list /* List of side IDs */
);
EXODUS_EXPORT int
ex_get_partial_side_set_df(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id side_set_id, /* Side-set ID */
int64_t start_num, /* Starting df number */
int64_t num_df_to_get, /* Number of df's to read */
void *side_set_df /* Distribution factors */
);
EXODUS_EXPORT int
ex_put_partial_side_set_df(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id side_set_id, /* Side-set ID */
int64_t start_num, /* Starting df number */
int64_t num_df_to_get, /* Number of df's to write */
void *side_set_df /* Distribution factors */
);
EXODUS_EXPORT int
ex_get_partial_node_set(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id node_set_id, /* Node set ID */
int64_t start_node_num, /* Node index to start reading at */
int64_t num_node, /* Number of nodes to read */
void_int *node_set_node_list /* List of nodes in node set */
);
EXODUS_EXPORT int
ex_put_partial_node_set(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id node_set_id, /* Node set ID */
int64_t start_node_num, /* Node index to start writing at */
int64_t num_node, /* Number of nodes to write */
const void_int *node_set_node_list /* List of nodes in node set */
);
EXODUS_EXPORT int
ex_get_partial_node_set_df(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id node_set_id, /* Node-set ID */
int64_t start_num, /* Starting df number */
int64_t num_df_to_get, /* Number of df's to read */
void *node_set_df /* Distribution factors */
);
EXODUS_EXPORT int
ex_put_partial_node_set_df(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id node_set_id, /* Node-set ID */
int64_t start_num, /* Starting df number */
int64_t num_df_to_get, /* Number of df's to write */
void *node_set_df /* Distribution factors */
);
EXODUS_EXPORT int
ex_get_partial_elem_conn (int exoid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
int64_t start_elem_num, /* Starting position to read from */
int64_t num_elems, /* Number of elements to read */
void_int *connect /* Connectivity vector */
);
EXODUS_EXPORT int
ex_put_partial_elem_conn (int exoid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
int64_t start_elem_num, /* Starting position to write to */
int64_t num_elems, /* Number of elements to write */
const void_int *connect /* Connectivity vector */
);
EXODUS_EXPORT int
ex_get_partial_elem_attr (int exoid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
int64_t start_elem_num, /* Starting position to read from */
int64_t num_elems, /* Number of elements to read */
void *attrib /* Attribute */
);
EXODUS_EXPORT int
ex_put_partial_elem_attr (int exoid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
int64_t start_elem_num, /* Starting position to write to */
int64_t num_elems, /* Number of elements to write */
void *attrib /* Attribute */
);
EXODUS_EXPORT int
ex_get_elem_type(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
char *elem_type /* The name of the element type */
);
/*=============================================================================
* Variable Routines
*===========================================================================*/
EXODUS_EXPORT int
ex_put_elem_var_slab (int exoid, /* NetCDF/Exodus file ID */
int time_step, /* time index */
int elem_var_index, /* elemental variable index */
ex_entity_id elem_blk_id, /* elemental block id */
int64_t start_pos, /* Starting position to write to */
int64_t num_vals, /* Number of elements to write */
void *elem_var_vals /* variable values */
);
EXODUS_EXPORT int
ex_put_nodal_var_slab(int exoid, /* NetCDF/Exodus file ID */
int time_step, /* The time step index */
int nodal_var_index, /* Nodal variable index */
int64_t start_pos, /* Start position for write */
int64_t num_vals, /* Number of nodal variables */
void *nodal_var_vals /* Nodal variable values */
);
/*=============================================================================
* Number Map Routines
*===========================================================================*/
EXODUS_EXPORT int
ex_get_n_elem_num_map (int exoid, /* NetCDF/Exodus file ID */
int64_t start_ent, /* Starting position to read from */
int64_t num_ents, /* Number of elements to read */
void_int *elem_map /* element map numbers */
);
EXODUS_EXPORT int
ex_get_n_node_num_map(int exoid, /* NetCDF/Exodus file ID */
int64_t start_ent, /* starting node number */
int64_t num_ents, /* number of nodes to read */
void_int *node_map /* vector for node map */
);
EXODUS_EXPORT int
ex_get_partial_elem_num_map (int exoid, /* NetCDF/Exodus file ID */
int64_t start_ent, /* Starting position to read from */
int64_t num_ents, /* Number of elements to read */
void_int *elem_map /* element map numbers */
);
EXODUS_EXPORT int
ex_get_partial_node_num_map(int exoid, /* NetCDF/Exodus file ID */
int64_t start_ent, /* starting node number */
int64_t num_ents, /* number of nodes to read */
void_int *node_map /* vector for node map */
);
EXODUS_EXPORT int
ex_get_processor_node_maps(int exoid, /* NetCDF/Exodus file ID */
void_int *node_mapi, /* Internal FEM node IDs */
void_int *node_mapb, /* Border FEM node IDs */
void_int *node_mape, /* External FEM node IDs */
int processor /* Processor IDs */
);
EXODUS_EXPORT int
ex_put_processor_node_maps(int exoid, /* NetCDF/Exodus file ID */
void_int *node_mapi, /* Internal FEM node IDs */
void_int *node_mapb, /* Border FEM node IDs */
void_int *node_mape, /* External FEM node IDs */
int processor /* This processor ID */
);
EXODUS_EXPORT int
ex_get_processor_elem_maps(int exoid, /* NetCDF/Exodus file ID */
void_int *elem_mapi, /* Internal element IDs */
void_int *elem_mapb, /* Border element IDs */
int processor /* Processor ID */
);
EXODUS_EXPORT int
ex_put_processor_elem_maps(int exoid, /* NetCDF/Exodus file ID */
void_int *elem_mapi, /* Internal FEM element IDs */
void_int *elem_mapb, /* Border FEM element IDs */
int processor /* This processor ID */
);
/*=============================================================================
* Communications Maps Routines
*===========================================================================*/
EXODUS_EXPORT int
ex_get_cmap_params(int exoid, /* NetCDF/Exodus file ID */
void_int *node_cmap_ids, /* Nodal comm. map IDs */
void_int *node_cmap_node_cnts, /* Number of nodes in each map */
void_int *elem_cmap_ids, /* Elemental comm. map IDs */
void_int *elem_cmap_elem_cnts, /* Number of elems in each map */
int processor /* This processor ID */
);
EXODUS_EXPORT int
ex_put_cmap_params(int exoid, /* NetCDF/Exodus file ID */
void_int *node_map_ids, /* Node map IDs */
void_int *node_map_node_cnts,/* Nodes in nodal comm */
void_int *elem_map_ids, /* Elem map IDs */
void_int *elem_map_elem_cnts,/* Elems in elemental comm */
int64_t processor /* This processor ID */
);
EXODUS_EXPORT int
ex_put_cmap_params_cc(int exoid, /* NetCDF/Exodus file ID */
void_int *node_map_ids, /* Node map IDs */
void_int *node_map_node_cnts, /* Nodes in nodal comm */
void_int *node_proc_ptrs, /* Pointer into array for */
/* node maps */
void_int *elem_map_ids, /* Elem map IDs */
void_int *elem_map_elem_cnts, /* Elems in elemental comm */
void_int *elem_proc_ptrs /* Pointer into array for */
/* elem maps */
);
EXODUS_EXPORT int
ex_get_node_cmap(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id map_id, /* Map ID */
void_int *node_ids, /* FEM node IDs */
void_int *proc_ids, /* Processor IDs */
int processor /* This processor ID */
);
EXODUS_EXPORT int
ex_put_node_cmap(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id map_id, /* Nodal comm map ID */
void_int *node_ids, /* FEM node IDs */
void_int *proc_ids, /* Processor IDs */
int processor /* This processor ID */
);
EXODUS_EXPORT int
ex_get_elem_cmap(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id map_id, /* Elemental comm map ID */
void_int *elem_ids, /* Element IDs */
void_int *side_ids, /* Element side IDs */
void_int *proc_ids, /* Processor IDs */
int processor /* This processor ID */
);
EXODUS_EXPORT int
ex_put_elem_cmap(int exoid, /* NetCDF/Exodus file ID */
ex_entity_id map_id, /* Elemental comm map ID */
void_int *elem_ids, /* Vector of element IDs */
void_int *side_ids, /* Vector of side IDs */
void_int *proc_ids, /* Vector of processor IDs */
int processor /* This processor ID */
);
/* ========================================================================
* Deprecated functiona
*/
EXODUS_EXPORT int ex_get_nodal_var (int exoid,
int time_step,
int nodal_var_index,
int64_t num_nodes,
void *nodal_var_vals);
EXODUS_EXPORT int ex_get_nodal_var_time (int exoid,
int nodal_var_index,
int64_t node_number,
int beg_time_step,
int end_time_step,
void *nodal_var_vals);
/* Use ex_get_concat_sets() */
EXODUS_EXPORT int ex_get_concat_node_sets (int exoid,
void_int *node_set_ids,
void_int *num_nodes_per_set,
void_int *num_df_per_set,
void_int *node_sets_node_index,
void_int *node_sets_df_index,
void_int *node_sets_node_list,
void *node_sets_dist_fact);
EXODUS_EXPORT int ex_get_concat_side_sets (int exoid,
void_int *side_set_ids,
void_int *num_elem_per_set,
void_int *num_dist_per_set,
void_int *side_sets_elem_index,
void_int *side_sets_dist_index,
void_int *side_sets_elem_list,
void_int *side_sets_side_list,
void *side_sets_dist_fact);
EXODUS_EXPORT int ex_get_elem_attr (int exoid,
ex_entity_id elem_blk_id,
void *attrib);
EXODUS_EXPORT int ex_get_elem_attr_names (int exoid,
ex_entity_id elem_blk_id,
char **names);
EXODUS_EXPORT int ex_get_elem_blk_ids (int exoid,
void_int *ids);
EXODUS_EXPORT int ex_get_elem_block (int exoid,
ex_entity_id elem_blk_id,
char *elem_type,
void_int *num_elem_this_blk,
void_int *num_nodes_per_elem,
void_int *num_attr);
EXODUS_EXPORT int ex_get_elem_conn (int exoid,
ex_entity_id elem_blk_id,
void_int *connect);
EXODUS_EXPORT int ex_get_elem_map (int exoid,
ex_entity_id map_id,
void_int *elem_map);
EXODUS_EXPORT int ex_get_elem_num_map (int exoid,
void_int *elem_map);
EXODUS_EXPORT int ex_get_elem_var (int exoid,
int time_step,
int elem_var_index,
ex_entity_id elem_blk_id,
int64_t num_elem_this_blk,
void *elem_var_vals);
EXODUS_EXPORT int ex_get_elem_var_tab (int exoid,
int num_elem_blk,
int num_elem_var,
int *elem_var_tab);
EXODUS_EXPORT int ex_get_elem_var_time (int exoid,
int elem_var_index,
int64_t elem_number,
int beg_time_step,
int end_time_step,
void *elem_var_vals);
EXODUS_EXPORT int ex_get_map (int exoid, void_int *elem_map);
EXODUS_EXPORT int ex_get_node_map (int exoid,
ex_entity_id map_id,
void_int *node_map);
EXODUS_EXPORT int ex_get_node_num_map (int exoid,
void_int *node_map);
EXODUS_EXPORT int ex_get_node_set_param (int exoid,
ex_entity_id node_set_id,
void_int *num_nodes_in_set,
void_int *num_df_in_set);
EXODUS_EXPORT int ex_get_node_set (int exoid,
ex_entity_id node_set_id,
void_int *node_set_node_list);
EXODUS_EXPORT int ex_get_node_set_dist_fact (int exoid,
ex_entity_id node_set_id,
void *node_set_dist_fact);
EXODUS_EXPORT int ex_get_node_set_ids (int exoid,
void_int *ids);
EXODUS_EXPORT int ex_get_nset_var_tab (int exoid,
int num_nodesets,
int num_nset_var,
int *nset_var_tab);
EXODUS_EXPORT int ex_get_nset_var (int exoid,
int time_step,
int nset_var_index,
ex_entity_id nset_id,
int64_t num_node_this_nset,
void *nset_var_vals);
EXODUS_EXPORT int ex_get_one_elem_attr (int exoid,
ex_entity_id elem_blk_id,
int attrib_index,
void *attrib);
EXODUS_EXPORT int ex_get_side_set (int exoid,
ex_entity_id side_set_id,
void_int *side_set_elem_list,
void_int *side_set_side_list);
EXODUS_EXPORT int ex_get_side_set_dist_fact (int exoid,
ex_entity_id side_set_id,
void *side_set_dist_fact);
EXODUS_EXPORT int ex_get_side_set_ids (int exoid,
void_int *ids);
EXODUS_EXPORT int ex_get_side_set_param (int exoid,
ex_entity_id side_set_id,
void_int *num_side_in_set,
void_int *num_dist_fact_in_set);
EXODUS_EXPORT int ex_get_sset_var (int exoid,
int time_step,
int sset_var_index,
ex_entity_id sset_id,
int64_t num_side_this_sset,
void *sset_var_vals);
EXODUS_EXPORT int ex_get_sset_var_tab (int exoid,
int num_sidesets,
int num_sset_var,
int *sset_var_tab);
EXODUS_EXPORT int ex_get_var_names (int exoid,
const char *var_type,
int num_vars,
char *var_names[]);
EXODUS_EXPORT int ex_get_var_name (int exoid,
const char *var_type,
int var_num,
char *var_name);
EXODUS_EXPORT int ex_get_var_param (int exoid,
const char *var_type,
int *num_vars);
EXODUS_EXPORT int ex_get_var_tab (int exoid,
const char *var_type,
int num_blk,
int num_var,
int *var_tab);
EXODUS_EXPORT int ex_put_concat_node_sets (int exoid,
void_int *node_set_ids,
void_int *num_nodes_per_set,
void_int *num_dist_per_set,
void_int *node_sets_node_index,
void_int *node_sets_df_index,
void_int *node_sets_node_list,
void *node_sets_dist_fact);
EXODUS_EXPORT int ex_put_concat_side_sets (int exoid,
void_int *side_set_ids,
void_int *num_elem_per_set,
void_int *num_dist_per_set,
void_int *side_sets_elem_index,
void_int *side_sets_dist_index,
void_int *side_sets_elem_list,
void_int *side_sets_side_list,
void *side_sets_dist_fact);
EXODUS_EXPORT int ex_put_concat_var_param (int exoid, int num_g, int num_n,
int num_e, int num_elem_blk, int *elem_var_tab);
EXODUS_EXPORT int ex_put_elem_attr_names(int exoid,
ex_entity_id elem_blk_id,
char *names[]);
EXODUS_EXPORT int ex_put_elem_attr (int exoid,
ex_entity_id elem_blk_id,
const void *attrib);
EXODUS_EXPORT int ex_put_elem_block (int exoid,
ex_entity_id elem_blk_id,
const char *elem_type,
int64_t num_elem_this_blk,
int64_t num_nodes_per_elem,
int64_t num_attr);
EXODUS_EXPORT int ex_put_elem_conn (int exoid,
ex_entity_id elem_blk_id,
const void_int *connect);
EXODUS_EXPORT int ex_put_elem_map (int exoid,
ex_entity_id map_id,
const void_int *elem_map);
EXODUS_EXPORT int ex_put_elem_num_map (int exoid,
const void_int *elem_map);
EXODUS_EXPORT int ex_put_elem_var (int exoid,
int time_step,
int elem_var_index,
ex_entity_id elem_blk_id,
int64_t num_elem_this_blk,
const void *elem_var_vals);
EXODUS_EXPORT int ex_put_elem_var_tab (int exoid,
int num_elem_blk,
int num_elem_var,
int *elem_var_tab);
EXODUS_EXPORT int ex_put_glob_vars (int exoid,
int time_step,
int num_glob_vars,
const void *glob_var_vals);
EXODUS_EXPORT int ex_put_map (int exoid,
const void_int *elem_map);
EXODUS_EXPORT int ex_put_node_map (int exoid,
ex_entity_id map_id,
const void_int *node_map);
EXODUS_EXPORT int ex_put_node_num_map (int exoid,
const void_int *node_map);
EXODUS_EXPORT int ex_put_node_set (int exoid,
ex_entity_id node_set_id,
const void_int *node_set_node_list);
EXODUS_EXPORT int ex_put_node_set_dist_fact (int exoid,
ex_entity_id node_set_id,
const void *node_set_dist_fact);
EXODUS_EXPORT int ex_put_node_set_param (int exoid,
ex_entity_id node_set_id,
int64_t num_nodes_in_set,
int64_t num_dist_in_set);
EXODUS_EXPORT int ex_put_nset_var (int exoid,
int time_step,
int nset_var_index,
ex_entity_id nset_id,
int64_t num_nodes_this_nset,
const void *nset_var_vals);
EXODUS_EXPORT int ex_put_nset_var_tab (int exoid,
int num_nset,
int num_nset_var,
int *nset_var_tab);
EXODUS_EXPORT int ex_put_one_elem_attr (int exoid,
ex_entity_id elem_blk_id,
int attrib_index,
const void *attrib);
EXODUS_EXPORT int ex_put_side_set (int exoid,
ex_entity_id side_set_id,
const void_int *side_set_elem_list,
const void_int *side_set_side_list);
EXODUS_EXPORT int ex_put_side_set_dist_fact (int exoid,
ex_entity_id side_set_id,
const void *side_set_dist_fact);
EXODUS_EXPORT int ex_put_side_set_param (int exoid,
ex_entity_id side_set_id,
int64_t num_side_in_set,
int64_t num_dist_fact_in_set);
EXODUS_EXPORT int ex_put_sset_var (int exoid,
int time_step,
int sset_var_index,
ex_entity_id sset_id,
int64_t num_faces_this_sset,
const void *sset_var_vals);
EXODUS_EXPORT int ex_put_sset_var_tab (int exoid,
int num_sset,
int num_sset_var,
int *sset_var_tab);
EXODUS_EXPORT int ex_put_var_name (int exoid,
const char *var_type,
int var_num,
const char *var_name);
EXODUS_EXPORT int ex_put_var_names (int exoid,
const char *var_type,
int num_vars,
char *var_names[]);
EXODUS_EXPORT int ex_put_var_param (int exoid,
const char *var_type,
int num_vars);
EXODUS_EXPORT int ex_put_var_tab (int exoid,
const char *var_type,
int num_blk,
int num_var,
int *var_tab);
/* End of Deprecated functions and their replacements
* ======================================================================== */
/* ERROR CODE DEFINITIONS AND STORAGE */
extern int exerrval; /**< shared error return value */
extern int exoptval; /**< error reporting flag (default is quiet) */
char* ex_name_of_object(ex_entity_type obj_type);
ex_entity_type ex_var_type_to_ex_entity_type(char var_type);
/* Should be internal use only, but was in external include file for
nemesis and some codes are using the function
*/
int ex_get_idx(int neid, /* NetCDF/Exodus file ID */
const char *ne_var_name, /* Nemesis index variable name */
int64_t *index, /* array of length 2 to hold results */
int pos /* position of this proc/cmap in index */
);
#ifdef __cplusplus
} /* close brackets on extern "C" declaration */
#endif
/**
* \defgroup ErrorReturnCodes Exodus error return codes - exerrval return values
* @{
*/
#define EX_MEMFAIL 1000 /**< memory allocation failure flag def */
#define EX_BADFILEMODE 1001 /**< bad file mode def */
#define EX_BADFILEID 1002 /**< bad file id def */
#define EX_WRONGFILETYPE 1003 /**< wrong file type for function */
#define EX_LOOKUPFAIL 1004 /**< id table lookup failed */
#define EX_BADPARAM 1005 /**< bad parameter passed */
#define EX_MSG -1000 /**< message print code - no error implied */
#define EX_PRTLASTMSG -1001 /**< print last error message msg code */
#define EX_NOTROOTID -1002 /**< file id is not the root id; it is a subgroup id */
#define EX_NULLENTITY -1006 /**< null entity found */
/* @} */
#endif
exodusii-6.02.dfsg.1/exodus/cbind/include/exodusII_cfg.h 0000775 0000000 0000000 00000001060 12253122131 0023075 0 ustar 00root root 0000000 0000000 #ifndef __exodusII_cfg_h
#define __exodusII_cfg_h
#define EXODUSII_VERSION_MAJOR 5
#define EXODUSII_VERSION_MINOR 14
#define EXODUSII_VERSION_PATCH 0
#define EXODUSII_VERSION "5.14.0"
#if defined(_WIN32) && !defined(WIN32)
# define WIN32
#endif
/* #undef EXODUSII_BUILD_SHARED_LIBS */
#if defined(WIN32) && defined(EXODUSII_BUILD_SHARED_LIBS)
# if defined(exoIIc_EXPORTS)
# define EXODUS_EXPORT __declspec( dllexport ) extern
# else
# define EXODUS_EXPORT __declspec( dllimport ) extern
# endif
#else
# define EXODUS_EXPORT extern
#endif
#endif
exodusii-6.02.dfsg.1/exodus/cbind/include/exodusII_cfg.h.in 0000775 0000000 0000000 00000001270 12253122131 0023505 0 ustar 00root root 0000000 0000000 #ifndef __exodusII_cfg_h
#define __exodusII_cfg_h
#define EXODUSII_VERSION_MAJOR @EXODUSII_VERSION_MAJOR@
#define EXODUSII_VERSION_MINOR @EXODUSII_VERSION_MINOR@
#define EXODUSII_VERSION_PATCH @EXODUSII_VERSION_PATCH@
#define EXODUSII_VERSION "@EXODUSII_VERSION_MAJOR@.@EXODUSII_VERSION_MINOR@.@EXODUSII_VERSION_PATCH@"
#if defined(_WIN32) && !defined(WIN32)
# define WIN32
#endif
#cmakedefine EXODUSII_BUILD_SHARED_LIBS
#if defined(WIN32) && defined(EXODUSII_BUILD_SHARED_LIBS)
# if defined(exoIIc_EXPORTS)
# define EXODUS_EXPORT __declspec( dllexport ) extern
# else
# define EXODUS_EXPORT __declspec( dllimport ) extern
# endif
#else
# define EXODUS_EXPORT extern
#endif
#endif
exodusii-6.02.dfsg.1/exodus/cbind/include/exodusII_int.h 0000664 0000000 0000000 00000123527 12253122131 0023142 0 ustar 00root root 0000000 0000000 /*
* Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
* DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
* retains certain rights in this software.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* * Neither the name of Sandia Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/*****************************************************************************
*
* exodusII_int.h - ExodusII header file for internal Exodus call use only
*
*/
#ifndef EXODUS_II_INT_HDR
#define EXODUS_II_INT_HDR
#include "netcdf.h"
#include
#ifndef __APPLE__
#if defined __STDC__ || defined __cplusplus
#include
#endif
#endif
#ifdef _MSC_VER
# pragma warning ( disable : 4127 )
# pragma warning ( disable : 4706 )
# pragma warning ( disable : 4701 )
#endif
#if defined(__BORLANDC__)
#pragma warn -8004 /* "assigned a value that is never used" */
#endif
#include
/* A format string for outputting size_t ... */
#define ST_ZU "zu"
#define MAX_VAR_NAME_LENGTH 32 /**< Internal use only */
/* this should be defined in ANSI C and C++, but just in case ... */
#ifndef NULL
#define NULL 0
#endif
/* Default "filesize" for newly created files.
* Set to 0 for normal filesize setting.
* Set to 1 for EXODUS_LARGE_MODEL setting to be the default
*/
#define EXODUS_DEFAULT_SIZE 1
/* Exodus error return codes - function return values: */
#define EX_FATAL -1 /* fatal error flag def */
#define EX_NOERR 0 /* no error flag def */
#define EX_WARN 1 /* warning flag def */
/* Used to map between root (file id) and group ids when using groups */
#define EX_FILE_ID_MASK (0xffff0000) /* Must match FILE_ID_MASK in netcdf nc4internal.h */
#define EX_GRP_ID_MASK (0x0000ffff) /* Must match GRP_ID_MASK in netcdf nc4internal.h */
/*
* This file contains defined constants that are used internally in the
* EXODUS II API.
*
* The first group of constants refer to netCDF variables, attributes, or
* dimensions in which the EXODUS II data are stored. Using the defined
* constants will allow the names of the netCDF entities to be changed easily
* in the future if needed. The first three letters of the constant identify
* the netCDF entity as a variable (VAR), dimension (DIM), or attribute (ATT).
*
* NOTE: The entity name should not have any blanks in it. Blanks are
* technically legal but some netcdf utilities (ncgen in particular)
* fail when they encounter a blank in a name.
*
* DEFINED CONSTANT ENTITY NAME DATA STORED IN ENTITY
*/
#define ATT_FILE_TYPE "type" /* obsolete */
#define ATT_TITLE "title" /* the database title */
#define ATT_API_VERSION "api_version" /* the EXODUS II api vers # */
#define ATT_API_VERSION_BLANK "api version" /* the EXODUS II api vers # */
/* used for db version 2.01 */
/* and earlier */
#define ATT_VERSION "version" /* the EXODUS II file vers # */
#define ATT_FILESIZE "file_size" /* 1=large, 0=normal */
#define ATT_FLT_WORDSIZE "floating_point_word_size"
/* word size of floating */
/* point numbers in file */
#define ATT_FLT_WORDSIZE_BLANK "floating point word size"
/* word size of floating */
/* point numbers in file */
/* used for db version 2.01 */
/* and earlier */
#define ATT_MAX_NAME_LENGTH "maximum_name_length"
#define ATT_INT64_STATUS "int64_status"
#define DIM_NUM_NODES "num_nodes" /* # of nodes */
#define DIM_NUM_DIM "num_dim" /* # of dimensions; 2- or 3-d*/
#define DIM_NUM_EDGE "num_edge" /* # of edges (over all blks)*/
#define DIM_NUM_FACE "num_face" /* # of faces (over all blks)*/
#define DIM_NUM_ELEM "num_elem" /* # of elements */
#define DIM_NUM_EL_BLK "num_el_blk" /* # of element blocks */
#define DIM_NUM_ED_BLK "num_ed_blk" /* # of edge blocks */
#define DIM_NUM_FA_BLK "num_fa_blk" /* # of face blocks */
#define VAR_COORD "coord" /* nodal coordinates */
#define VAR_COORD_X "coordx" /* X-dimension coordinate */
#define VAR_COORD_Y "coordy" /* Y-dimension coordinate */
#define VAR_COORD_Z "coordz" /* Z-dimension coordinate */
#define VAR_NAME_COOR "coor_names" /* names of coordinates */
#define VAR_NAME_EL_BLK "eb_names" /* names of element blocks */
#define VAR_NAME_NS "ns_names" /* names of node sets */
#define VAR_NAME_SS "ss_names" /* names of side sets */
#define VAR_NAME_EM "emap_names" /* names of element maps */
#define VAR_NAME_EDM "edmap_names" /* names of edge maps */
#define VAR_NAME_FAM "famap_names" /* names of face maps */
#define VAR_NAME_NM "nmap_names" /* names of node maps */
#define VAR_NAME_ED_BLK "ed_names" /* names of edge blocks */
#define VAR_NAME_FA_BLK "fa_names" /* names of face blocks */
#define VAR_NAME_ES "es_names" /* names of edge sets */
#define VAR_NAME_FS "fs_names" /* names of face sets */
#define VAR_NAME_ELS "els_names" /* names of element sets */
#define VAR_STAT_EL_BLK "eb_status" /* element block status */
#define VAR_STAT_ECONN "econn_status" /* element block edge status */
#define VAR_STAT_FCONN "fconn_status" /* element block face status */
#define VAR_STAT_ED_BLK "ed_status" /* edge block status */
#define VAR_STAT_FA_BLK "fa_status" /* face block status */
#define VAR_ID_EL_BLK "eb_prop1" /* element block ids props */
#define VAR_ID_ED_BLK "ed_prop1" /* edge block ids props */
#define VAR_ID_FA_BLK "fa_prop1" /* face block ids props */
#define ATT_NAME_ELB "elem_type" /* element type names for */
/* each element block */
#define DIM_NUM_EL_IN_BLK(num) ex_catstr("num_el_in_blk",num)
/* # of elements in element */
/* block num */
#define DIM_NUM_NOD_PER_EL(num) ex_catstr("num_nod_per_el",num)
/* # of nodes per element in */
/* element block num */
#define DIM_NUM_ATT_IN_BLK(num) ex_catstr("num_att_in_blk",num)
/* # of attributes in element*/
/* block num */
#define DIM_NUM_ED_IN_EBLK(num) ex_catstr("num_ed_in_blk",num)
/* # of edges in edge */
/* block num */
#define DIM_NUM_NOD_PER_ED(num) ex_catstr("num_nod_per_ed",num)
/* # of nodes per edge in */
/* edge block num */
#define DIM_NUM_EDG_PER_EL(num) ex_catstr("num_edg_per_el",num)
/* # of edges per element in */
/* element block num */
#define DIM_NUM_ATT_IN_EBLK(num) ex_catstr("num_att_in_eblk",num)
/* # of attributes in edge */
/* block num */
#define DIM_NUM_FA_IN_FBLK(num) ex_catstr("num_fa_in_blk",num)
/* # of faces in face */
/* block num */
#define DIM_NUM_NOD_PER_FA(num) ex_catstr("num_nod_per_fa",num)
/* # of nodes per face in */
/* face block num */
#define DIM_NUM_FAC_PER_EL(num) ex_catstr("num_fac_per_el",num)
/* # of faces per element in */
/* element block num */
#define DIM_NUM_ATT_IN_FBLK(num) ex_catstr("num_att_in_fblk",num)
/* # of attributes in face */
/* block num */
#define VAR_CONN(num) ex_catstr("connect",num)
/* element connectivity for */
/* element block num */
#define VAR_EBEPEC(num) ex_catstr("ebepecnt",num)
/* array containing number of entity per */
/* entity for n-sided face/element blocks */
#define VAR_ATTRIB(num) ex_catstr("attrib",num)
/* list of attributes for */
/* element block num */
#define VAR_NAME_ATTRIB(num) ex_catstr("attrib_name",num)
/* list of attribute names */
/* for element block num */
#define VAR_EB_PROP(num) ex_catstr("eb_prop",num)
/* list of the numth property*/
/* for all element blocks */
#define VAR_ECONN(num) ex_catstr("edgconn",num)
/* edge connectivity for */
/* element block num */
#define VAR_EBCONN(num) ex_catstr("ebconn",num)
/* edge connectivity for */
/* edge block num */
#define VAR_EATTRIB(num) ex_catstr("eattrb",num)
/* list of attributes for */
/* edge block num */
#define VAR_NAME_EATTRIB(num) ex_catstr("eattrib_name",num)
/* list of attribute names */
/* for edge block num */
#define VAR_NATTRIB "nattrb"
#define VAR_NAME_NATTRIB "nattrib_name"
#define DIM_NUM_ATT_IN_NBLK "num_att_in_nblk"
#define VAR_NSATTRIB(num) ex_catstr("nsattrb",num)
#define VAR_NAME_NSATTRIB(num) ex_catstr("nsattrib_name",num)
#define DIM_NUM_ATT_IN_NS(num) ex_catstr("num_att_in_ns",num)
#define VAR_SSATTRIB(num) ex_catstr("ssattrb",num)
#define VAR_NAME_SSATTRIB(num) ex_catstr("ssattrib_name",num)
#define DIM_NUM_ATT_IN_SS(num) ex_catstr("num_att_in_ss",num)
#define VAR_ESATTRIB(num) ex_catstr("esattrb",num)
#define VAR_NAME_ESATTRIB(num) ex_catstr("esattrib_name",num)
#define DIM_NUM_ATT_IN_ES(num) ex_catstr("num_att_in_es",num)
#define VAR_FSATTRIB(num) ex_catstr("fsattrb",num)
#define VAR_NAME_FSATTRIB(num) ex_catstr("fsattrib_name",num)
#define DIM_NUM_ATT_IN_FS(num) ex_catstr("num_att_in_fs",num)
#define VAR_ELSATTRIB(num) ex_catstr("elsattrb",num)
#define VAR_NAME_ELSATTRIB(num) ex_catstr("elsattrib_name",num)
#define DIM_NUM_ATT_IN_ELS(num) ex_catstr("num_att_in_els",num)
#define VAR_ED_PROP(num) ex_catstr("ed_prop",num)
/* list of the numth property*/
/* for all edge blocks */
#define VAR_FCONN(num) ex_catstr("facconn",num)
/* face connectivity for */
/* element block num */
#define VAR_FBCONN(num) ex_catstr("fbconn",num)
/* face connectivity for */
/* face block num */
#define VAR_FBEPEC(num) ex_catstr("fbepecnt",num)
/* array containing number of entity per */
/* entity for n-sided face/element blocks */
#define VAR_FATTRIB(num) ex_catstr("fattrb",num)
/* list of attributes for */
/* face block num */
#define VAR_NAME_FATTRIB(num) ex_catstr("fattrib_name",num)
/* list of attribute names */
/* for face block num */
#define VAR_FA_PROP(num) ex_catstr("fa_prop",num)
/* list of the numth property*/
/* for all face blocks */
#define ATT_PROP_NAME "name" /* name attached to element */
/* block, node set, side */
/* set, element map, or */
/* map properties */
#define VAR_MAP "elem_map" /* element order map */
/* obsolete, replaced by */
/* VAR_ELEM_MAP(num) */
#define DIM_NUM_SS "num_side_sets" /* # of side sets */
#define VAR_SS_STAT "ss_status" /* side set status */
#define VAR_SS_IDS "ss_prop1" /* side set id properties */
#define DIM_NUM_SIDE_SS(num) ex_catstr("num_side_ss",num)
/* # of sides in side set num*/
#define DIM_NUM_DF_SS(num) ex_catstr("num_df_ss",num)
/* # of distribution factors */
/* in side set num */
/*#define DIM_NUM_NOD_SS(num) ex_catstr("num_nod_ss",num) *** obsolete *** */
/* # of nodes in side set num*/
#define VAR_FACT_SS(num) ex_catstr("dist_fact_ss",num)
/* the distribution factors */
/* for each node in side */
/* set num */
#define VAR_ELEM_SS(num) ex_catstr("elem_ss",num)
/* list of elements in side */
/* set num */
#define VAR_SIDE_SS(num) ex_catstr("side_ss",num)
/* list of sides in side set */
#define VAR_SS_PROP(num) ex_catstr("ss_prop",num)
/* list of the numth property*/
/* for all side sets */
#define DIM_NUM_ES "num_edge_sets"/* # of edge sets */
#define VAR_ES_STAT "es_status" /* edge set status */
#define VAR_ES_IDS "es_prop1" /* edge set id properties */
#define DIM_NUM_EDGE_ES(num) ex_catstr("num_edge_es",num)
/* # of edges in edge set num*/
#define DIM_NUM_DF_ES(num) ex_catstr("num_df_es",num)
/* # of distribution factors */
/* in edge set num */
/*#define DIM_NUM_NOD_ES(num) ex_catstr("num_nod_es",num) *** obsolete *** */
/* # of nodes in edge set num*/
#define VAR_FACT_ES(num) ex_catstr("dist_fact_es",num)
/* the distribution factors */
/* for each node in edge */
/* set num */
#define VAR_EDGE_ES(num) ex_catstr("edge_es",num)
/* list of edges in edge */
/* set num */
#define VAR_ORNT_ES(num) ex_catstr("ornt_es",num)
/* list of orientations in */
/* the edge set. */
#define VAR_ES_PROP(num) ex_catstr("es_prop",num)
/* list of the numth property*/
/* for all edge sets */
#define DIM_NUM_FS "num_face_sets"/* # of face sets */
#define VAR_FS_STAT "fs_status" /* face set status */
#define VAR_FS_IDS "fs_prop1" /* face set id properties */
#define DIM_NUM_FACE_FS(num) ex_catstr("num_face_fs",num)
/* # of faces in side set num*/
#define DIM_NUM_DF_FS(num) ex_catstr("num_df_fs",num)
/* # of distribution factors */
/* in face set num */
/*#define DIM_NUM_NOD_FS(num) ex_catstr("num_nod_ss",num) *** obsolete *** */
/* # of nodes in face set num*/
#define VAR_FACT_FS(num) ex_catstr("dist_fact_fs",num)
/* the distribution factors */
/* for each node in face */
/* set num */
#define VAR_FACE_FS(num) ex_catstr("face_fs",num)
/* list of elements in face */
/* set num */
#define VAR_ORNT_FS(num) ex_catstr("ornt_fs",num)
/* list of sides in side set */
#define VAR_FS_PROP(num) ex_catstr("fs_prop",num)
/* list of the numth property*/
/* for all face sets */
#define DIM_NUM_ELS "num_elem_sets"/* # of elem sets */
#define DIM_NUM_ELE_ELS(num) ex_catstr("num_ele_els",num)
/* # of elements in elem set */
/* num */
#define DIM_NUM_DF_ELS(num) ex_catstr("num_df_els",num)
/* # of distribution factors */
/* in element set num */
#define VAR_ELS_STAT "els_status" /* elem set status */
#define VAR_ELS_IDS "els_prop1" /* elem set id properties */
#define VAR_ELEM_ELS(num) ex_catstr("elem_els",num)
/* list of elements in elem */
/* set num */
#define VAR_FACT_ELS(num) ex_catstr("dist_fact_els",num)
/* list of distribution */
/* factors in elem set num */
#define VAR_ELS_PROP(num) ex_catstr("els_prop",num)
/* list of the numth property*/
/* for all elem sets */
#define DIM_NUM_NS "num_node_sets"/* # of node sets */
#define DIM_NUM_NOD_NS(num) ex_catstr("num_nod_ns",num)
/* # of nodes in node set */
/* num */
#define DIM_NUM_DF_NS(num) ex_catstr("num_df_ns",num)
/* # of distribution factors */
/* in node set num */
#define VAR_NS_STAT "ns_status" /* node set status */
#define VAR_NS_IDS "ns_prop1" /* node set id properties */
#define VAR_NODE_NS(num) ex_catstr("node_ns",num)
/* list of nodes in node set */
/* num */
#define VAR_FACT_NS(num) ex_catstr("dist_fact_ns",num)
/* list of distribution */
/* factors in node set num */
#define VAR_NS_PROP(num) ex_catstr("ns_prop",num)
/* list of the numth property*/
/* for all node sets */
#define DIM_NUM_QA "num_qa_rec" /* # of QA records */
#define VAR_QA_TITLE "qa_records" /* QA records */
#define DIM_NUM_INFO "num_info" /* # of information records */
#define VAR_INFO "info_records" /* information records */
#define VAR_HIS_TIME "time_hist" /* obsolete */
#define VAR_WHOLE_TIME "time_whole" /* simulation times for whole*/
/* time steps */
#define VAR_ELEM_TAB "elem_var_tab" /* element variable truth */
/* table */
#define VAR_EBLK_TAB "edge_var_tab" /* edge variable truth table */
#define VAR_FBLK_TAB "face_var_tab" /* face variable truth table */
#define VAR_ELSET_TAB "elset_var_tab" /* elemset variable truth */
/* table */
#define VAR_SSET_TAB "sset_var_tab" /* sideset variable truth */
/* table */
#define VAR_FSET_TAB "fset_var_tab" /* faceset variable truth */
/* table */
#define VAR_ESET_TAB "eset_var_tab" /* edgeset variable truth */
/* table */
#define VAR_NSET_TAB "nset_var_tab" /* nodeset variable truth */
/* table */
#define DIM_NUM_GLO_VAR "num_glo_var" /* # of global variables */
#define VAR_NAME_GLO_VAR "name_glo_var" /* names of global variables */
#define VAR_GLO_VAR "vals_glo_var" /* values of global variables*/
#define DIM_NUM_NOD_VAR "num_nod_var" /* # of nodal variables */
#define VAR_NAME_NOD_VAR "name_nod_var" /* names of nodal variables */
#define VAR_NOD_VAR "vals_nod_var" /* values of nodal variables */
#define VAR_NOD_VAR_NEW(num) ex_catstr("vals_nod_var",num)
/* values of nodal variables */
#define DIM_NUM_ELE_VAR "num_elem_var" /* # of element variables */
#define VAR_NAME_ELE_VAR "name_elem_var" /* names of element variables*/
#define VAR_ELEM_VAR(num1,num2) ex_catstr2("vals_elem_var",num1,"eb",num2)
/* values of element variable*/
/* num1 in element block */
/* num2 */
#define DIM_NUM_EDG_VAR "num_edge_var" /* # of edge variables */
#define VAR_NAME_EDG_VAR "name_edge_var" /* names of edge variables */
#define VAR_EDGE_VAR(num1,num2) ex_catstr2("vals_edge_var",num1,"eb",num2)
/* values of edge variable */
/* num1 in edge block num2 */
#define DIM_NUM_FAC_VAR "num_face_var" /* # of face variables */
#define VAR_NAME_FAC_VAR "name_face_var" /* names of face variables */
#define VAR_FACE_VAR(num1,num2) ex_catstr2("vals_face_var",num1,"fb",num2)
/* values of face variable */
/* num1 in face block num2 */
#define DIM_NUM_NSET_VAR "num_nset_var" /* # of nodeset variables */
#define VAR_NAME_NSET_VAR "name_nset_var" /* names of nodeset variables*/
#define VAR_NS_VAR(num1,num2) ex_catstr2("vals_nset_var",num1,"ns",num2)
/* values of nodeset variable*/
/* num1 in nodeset num2 */
#define DIM_NUM_ESET_VAR "num_eset_var" /* # of edgeset variables */
#define VAR_NAME_ESET_VAR "name_eset_var" /* names of edgeset variables*/
#define VAR_ES_VAR(num1,num2) ex_catstr2("vals_eset_var",num1,"es",num2)
/* values of edgeset variable*/
/* num1 in edgeset num2 */
#define DIM_NUM_FSET_VAR "num_fset_var" /* # of faceset variables */
#define VAR_NAME_FSET_VAR "name_fset_var" /* names of faceset variables*/
#define VAR_FS_VAR(num1,num2) ex_catstr2("vals_fset_var",num1,"fs",num2)
/* values of faceset variable*/
/* num1 in faceset num2 */
#define DIM_NUM_SSET_VAR "num_sset_var" /* # of sideset variables */
#define VAR_NAME_SSET_VAR "name_sset_var" /* names of sideset variables*/
#define VAR_SS_VAR(num1,num2) ex_catstr2("vals_sset_var",num1,"ss",num2)
/* values of sideset variable*/
/* num1 in sideset num2 */
#define DIM_NUM_ELSET_VAR "num_elset_var" /* # of element set variables*/
#define VAR_NAME_ELSET_VAR "name_elset_var"/* names of elemset variables*/
#define VAR_ELS_VAR(num1,num2) ex_catstr2("vals_elset_var",num1,"es",num2)
/* values of elemset variable*/
/* num1 in elemset num2 */
#define DIM_NUM_HIS_VAR "num_his_var" /* obsolete */
#define VAR_NAME_HIS_VAR "name_his_var" /* obsolete */
#define VAR_HIS_VAR "vals_his_var" /* obsolete */
#define DIM_STR "len_string" /* general dimension of */
/* length MAX_STR_LENGTH */
/* used for some string lengths */
#define DIM_STR_NAME "len_name" /* general dimension of */
/* length MAX_NAME_LENGTH */
/* used for name lengths */
#define DIM_LIN "len_line" /* general dimension of */
/* length MAX_LINE_LENGTH */
/* used for long strings */
#define DIM_N4 "four" /* general dimension of */
/* length 4 */
#define DIM_TIME "time_step" /* unlimited (expandable) */
/* dimension for time steps*/
#define DIM_HTIME "hist_time_step"/* obsolete */
#define VAR_ELEM_NUM_MAP "elem_num_map" /* element numbering map */
/* obsolete, replaced by */
/* VAR_ELEM_MAP(num) */
#define VAR_FACE_NUM_MAP "face_num_map" /* face numbering map */
/* obsolete, replaced by */
/* VAR_FACE_MAP(num) */
#define VAR_EDGE_NUM_MAP "edge_num_map" /* edge numbering map */
/* obsolete, replaced by */
/* VAR_EDGE_MAP(num) */
#define VAR_NODE_NUM_MAP "node_num_map" /* node numbering map */
/* obsolete, replaced by */
/* VAR_NODE_MAP(num) */
#define DIM_NUM_EM "num_elem_maps" /* # of element maps */
#define VAR_ELEM_MAP(num) ex_catstr("elem_map",num)
/* the numth element map */
#define VAR_EM_PROP(num) ex_catstr("em_prop",num)
/* list of the numth property*/
/* for all element maps */
#define DIM_NUM_EDM "num_edge_maps" /* # of edge maps */
#define VAR_EDGE_MAP(num) ex_catstr("edge_map",num)
/* the numth edge map */
#define VAR_EDM_PROP(num) ex_catstr("edm_prop",num)
/* list of the numth property*/
/* for all edge maps */
#define DIM_NUM_FAM "num_face_maps" /* # of face maps */
#define VAR_FACE_MAP(num) ex_catstr("face_map",num)
/* the numth face map */
#define VAR_FAM_PROP(num) ex_catstr("fam_prop",num)
/* list of the numth property*/
/* for all face maps */
#define DIM_NUM_NM "num_node_maps" /* # of node maps */
#define VAR_NODE_MAP(num) ex_catstr("node_map",num)
/* the numth node map */
#define VAR_NM_PROP(num) ex_catstr("nm_prop",num)
/* list of the numth property*/
/* for all node maps */
#define DIM_NUM_CFRAMES "num_cframes"
#define DIM_NUM_CFRAME9 "num_cframes_9"
#define VAR_FRAME_COORDS "frame_coordinates"
#define VAR_FRAME_IDS "frame_ids"
#define VAR_FRAME_TAGS "frame_tags"
#define VAR_ELBLK_IDS_GLOBAL "el_blk_ids_global"
#define VAR_ELBLK_CNT_GLOBAL "el_blk_cnt_global"
#define VAR_NS_IDS_GLOBAL "ns_ids_global"
#define VAR_NS_NODE_CNT_GLOBAL "ns_node_cnt_global"
#define VAR_NS_DF_CNT_GLOBAL "ns_df_cnt_global"
#define VAR_SS_IDS_GLOBAL "ss_ids_global"
#define VAR_SS_SIDE_CNT_GLOBAL "ss_side_cnt_global"
#define VAR_SS_DF_CNT_GLOBAL "ss_df_cnt_global"
#define VAR_FILE_TYPE "nem_ftype"
#define VAR_COMM_MAP "comm_map"
#define VAR_NODE_MAP_INT "node_mapi"
#define VAR_NODE_MAP_INT_IDX "node_mapi_idx"
#define VAR_NODE_MAP_BOR "node_mapb"
#define VAR_NODE_MAP_BOR_IDX "node_mapb_idx"
#define VAR_NODE_MAP_EXT "node_mape"
#define VAR_NODE_MAP_EXT_IDX "node_mape_idx"
#define VAR_ELEM_MAP_INT "elem_mapi"
#define VAR_ELEM_MAP_INT_IDX "elem_mapi_idx"
#define VAR_ELEM_MAP_BOR "elem_mapb"
#define VAR_ELEM_MAP_BOR_IDX "elem_mapb_idx"
#define VAR_INT_N_STAT "int_n_stat"
#define VAR_BOR_N_STAT "bor_n_stat"
#define VAR_EXT_N_STAT "ext_n_stat"
#define VAR_INT_E_STAT "int_e_stat"
#define VAR_BOR_E_STAT "bor_e_stat"
#define VAR_N_COMM_IDS "n_comm_ids"
#define VAR_N_COMM_STAT "n_comm_stat"
#define VAR_N_COMM_INFO_IDX "n_comm_info_idx"
#define VAR_E_COMM_IDS "e_comm_ids"
#define VAR_E_COMM_STAT "e_comm_stat"
#define VAR_E_COMM_INFO_IDX "e_comm_info_idx"
#define VAR_N_COMM_NIDS "n_comm_nids"
#define VAR_N_COMM_PROC "n_comm_proc"
#define VAR_N_COMM_DATA_IDX "n_comm_data_idx"
#define VAR_E_COMM_EIDS "e_comm_eids"
#define VAR_E_COMM_SIDS "e_comm_sids"
#define VAR_E_COMM_PROC "e_comm_proc"
#define VAR_E_COMM_DATA_IDX "e_comm_data_idx"
#define DIM_NUM_INT_NODES "num_int_node"
#define DIM_NUM_BOR_NODES "num_bor_node"
#define DIM_NUM_EXT_NODES "num_ext_node"
#define DIM_NUM_INT_ELEMS "num_int_elem"
#define DIM_NUM_BOR_ELEMS "num_bor_elem"
#define DIM_NUM_PROCS "num_processors"
#define DIM_NUM_PROCS_F "num_procs_file"
#define DIM_NUM_NODES_GLOBAL "num_nodes_global"
#define DIM_NUM_ELEMS_GLOBAL "num_elems_global"
#define DIM_NUM_NS_GLOBAL "num_ns_global"
#define DIM_NUM_SS_GLOBAL "num_ss_global"
#define DIM_NUM_ELBLK_GLOBAL "num_el_blk_global"
#define DIM_NUM_N_CMAPS "num_n_cmaps"
#define DIM_NUM_E_CMAPS "num_e_cmaps"
#define DIM_NCNT_CMAP "ncnt_cmap"
#define DIM_ECNT_CMAP "ecnt_cmap"
enum ex_element_type {
EX_EL_UNK = -1, /**< unknown entity */
EX_EL_NULL_ELEMENT= 0,
EX_EL_TRIANGLE = 1, /**< Triangle entity */
EX_EL_QUAD = 2, /**< Quad entity */
EX_EL_HEX = 3, /**< Hex entity */
EX_EL_WEDGE = 4, /**< Wedge entity */
EX_EL_TETRA = 5, /**< Tetra entity */
EX_EL_TRUSS = 6, /**< Truss entity */
EX_EL_BEAM = 7, /**< Beam entity */
EX_EL_SHELL = 8, /**< Shell entity */
EX_EL_SPHERE = 9, /**< Sphere entity */
EX_EL_CIRCLE = 10, /**< Circle entity */
EX_EL_TRISHELL = 11, /**< Triangular Shell entity */
EX_EL_PYRAMID = 12 /**< Pyramid entity */
};
typedef enum ex_element_type ex_element_type;
enum ex_coordinate_frame_type {
EX_CF_RECTANGULAR = 1,
EX_CF_CYLINDRICAL = 2,
EX_CF_SPHERICAL = 3
};
typedef enum ex_coordinate_frame_type ex_coordinate_frame_type;
/* Internal structure declarations */
struct ex_file_item {
int file_id;
nc_type netcdf_type_code;
int int64_status;
int maximum_name_length;
unsigned int compression_level:4; /* 0 (disabled) to 9 (maximum) compression level; netcdf-4 only */
unsigned int user_compute_wordsize:1; /* 0 for 4 byte or 1 for 8 byte reals */
unsigned int shuffle:1; /* 1 true, 0 false */
unsigned int file_type:2; /* 0 - classic, 1 -- 64 bit classic, 2 --netcdf4, 3 --netcdf4 classic */
unsigned int is_parallel:1; /* 1 true, 0 false */
struct ex_file_item* next;
};
struct elem_blk_parm
{
char elem_type[33];
int64_t elem_blk_id;
int64_t num_elem_in_blk;
int num_nodes_per_elem;
int num_sides;
int num_nodes_per_side[6];
int num_attr;
int64_t elem_ctr;
ex_element_type elem_type_val;
};
struct list_item { /* for use with ex_get_file_item */
int exo_id;
int value;
struct list_item* next;
};
struct obj_stats {
int64_t *id_vals;
int *stat_vals;
long num;
int exoid;
int valid_ids;
int valid_stat;
struct obj_stats *next;
};
void ex_iqsort(int v[], int iv[], int count );
void ex_iqsort64(int64_t v[], int64_t iv[], int64_t count );
char* ex_catstr(const char*, int);
char* ex_catstr2(const char*, int, const char*, int);
char* ex_dim_num_entries_in_object(ex_entity_type, int);
char* ex_dim_num_objects(ex_entity_type obj_type);
char* ex_name_var_of_object( ex_entity_type, int, int );
char* ex_name_of_map( ex_entity_type, int );
int ex_conv_ini (int exoid, int* comp_wordsize, int* io_wordsize, int file_wordsize, int int64_status, int is_parallel);
void ex_conv_exit (int exoid);
nc_type nc_flt_code (int exoid);
int ex_comp_ws (int exoid);
int ex_get_cpu_ws(void);
int ex_is_parallel(int exoid);
struct list_item** ex_get_counter_list(ex_entity_type obj_type);
int ex_get_file_item (int, struct list_item**);
int ex_inc_file_item (int, struct list_item**);
void ex_rm_file_item (int, struct list_item**);
extern struct obj_stats* exoII_eb;
extern struct obj_stats* exoII_ed;
extern struct obj_stats* exoII_fa;
extern struct obj_stats* exoII_ns;
extern struct obj_stats* exoII_es;
extern struct obj_stats* exoII_fs;
extern struct obj_stats* exoII_ss;
extern struct obj_stats* exoII_els;
extern struct obj_stats* exoII_em;
extern struct obj_stats* exoII_edm;
extern struct obj_stats* exoII_fam;
extern struct obj_stats* exoII_nm;
struct ex_file_item* ex_find_file_item(int exoid);
struct ex_file_item* ex_add_file_item(int exoid);
struct obj_stats *ex_get_stat_ptr ( int exoid, struct obj_stats** obj_ptr);
void ex_rm_stat_ptr (int exoid, struct obj_stats** obj_ptr);
void ex_compress_variable(int exoid, int varid, int type);
int ex_id_lkup (int exoid, ex_entity_type id_type, ex_entity_id num);
int ex_check_file_type(const char *path, int *type);
int ex_get_dimension(int exoid, const char *dimtype, const char *label,
size_t *count, int *dimid, const char *routine);
int ex_get_name_internal(int exoid, int varid, size_t index, char *name, int name_size,
ex_entity_type type, const char *routine);
int ex_get_names_internal(int exoid, int varid, size_t count, char**names,
ex_entity_type type, const char *routine);
int ex_put_name_internal(int exoid, int varid, size_t index, const char *name,
ex_entity_type type, const char *subtype, const char *routine);
int ex_put_names_internal(int exoid, int varid, size_t count, char**names,
ex_entity_type type, const char *subtype, const char *routine);
void ex_trim_internal(char *name);
void ex_update_max_name_length(int exoid, int length);
int ex_leavedef(int neid, /* NemesisI file ID */
const char *func_name /* Name of calling function */
);
int ex_get_file_type(int neid, /* NetCDF/Exodus file ID */
char *ftype /* Nemesis file type */
);
int ex_put_nemesis_version(int neid); /* NetCDF/Exodus file ID */
int ne_check_file_version(int neid /* NetCDF/Exodus file ID */
);
char *ex_catstrn12(char *name, int num1, int num2);
int ne_id_lkup(int neid, /* NetCDF/Exodus file ID */
const char *var_name, /* Nemesis variable name */
int64_t *idx, /* index variable for variable, length 2 */
ex_entity_id ne_var_id /* NetCDF variable ID */
);
/**
* For output databases, the maximum length of any entity, variable,
* property, attribute, or coordinate name to be written (not
* including the NULL terminator). If a name is longer than this
* value, a warning message will be output to stderr and the name
* will be truncated. Must be set (via call to
* 'ex_set_max_name_length(exoid, int len)' prior to calling ex_create.
*
* For input databases, the size of the name arrays that the client
* code will be passing to API routines that retrieve names (not
* including the NULL terminator). This defaults to 32 for
* compatibility with older clients. The value used at the time of
* creation of the database can be queried by ex_inquire with the
* EX_INQ_DB_MAX_NAME_LENGTH argument. The current value for this
* variable can be queried with EX_INQ_CUR_MAX_NAME_LENGTH argument.
*
* Note that this is a global setting for all databases. If you are
* accessing multiple databases, they will all use the same value.
*/
extern int ex_default_max_name_length;
#endif
exodusii-6.02.dfsg.1/exodus/cbind/include/exodusII_par.h 0000664 0000000 0000000 00000006107 12253122131 0023124 0 ustar 00root root 0000000 0000000 /*
* Copyright (c) 2012 Sandia Corporation. Under the terms of Contract
* DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
* retains certain rights in this software.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* * Neither the name of Sandia Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/*****************************************************************************
*
* exodusII_par.h - Exodus II parallel-aware API include file
*
*****************************************************************************/
#ifndef EXODUS_II_PAR_HDR
#define EXODUS_II_PAR_HDR
#if !defined(PARALLEL_NETCDF)
#include "exodusII.h"
/*
* need following extern if this include file is used in a C++
* program, to keep the C++ compiler from mangling the function names.
*/
#ifdef __cplusplus
extern "C" {
#endif
#define ex_open_par(path, mode, comp_ws, io_ws, version, comm, info) ex_open_par_int(path, mode, comp_ws, io_ws, version, comm, info, EX_API_VERS_NODOT)
#define ex_create_par(path, mode, comp_ws, io_ws, comm, info) ex_create_par_int(path, mode, comp_ws, io_ws, comm, info, EX_API_VERS_NODOT)
EXODUS_EXPORT int ex_open_par_int (const char *path,
int mode,
int *comp_ws,
int *io_ws,
float *version,
MPI_Comm comm,
MPI_Info info,
int my_version);
EXODUS_EXPORT int ex_create_par_int (const char *path, int cmode, int *comp_ws, int *io_ws,
MPI_Comm comm,
MPI_Info info,
int my_version);
#else
#error "Parallel-aware exodusII_par.h included in non-parallel context"
#endif
#ifdef __cplusplus
} /* close brackets on extern "C" declaration */
#endif
#endif
exodusii-6.02.dfsg.1/exodus/cbind/include/exodusII_test.h 0000664 0000000 0000000 00000000736 12253122131 0023323 0 ustar 00root root 0000000 0000000 #ifndef __exodusII_test_h
#define __exodusII_test_h
#include "exodusII.h"
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
int cCreateEdgeFace( int, char*[] );
int cReadEdgeFace( int, char*[] );
#ifdef __cplusplus
}
#endif /* __cplusplus */
inline int CreateEdgeFace( int argc, char* argv[] ) { return cCreateEdgeFace( argc, argv ); }
inline int ReadEdgeFace( int argc, char* argv[] ) { return cReadEdgeFace( argc, argv ); }
#endif /* __exodusII_test_h */
exodusii-6.02.dfsg.1/exodus/cbind/parallel/ 0000775 0000000 0000000 00000000000 12253122131 0020525 5 ustar 00root root 0000000 0000000 exodusii-6.02.dfsg.1/exodus/cbind/parallel/Imakefile 0000664 0000000 0000000 00000004533 12253122131 0022343 0 ustar 00root root 0000000 0000000 # Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
# DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
# retains certain rights in this software.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
#
# * Neither the name of Sandia Corporation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
XCOMM Use include files locates in exodusii/cbind/include
INCLUDES = IncRef-I../include
REQUIREDLIBS = -L$(SHLIBDIR) $(EXODUS) $(NETCDF)
#ifndef BuildSharedExodusLibrary
#define BuildSharedExodusLibrary NO
#endif
#define DoNormalLib YES
#define DoSharedLib BuildSharedExodusLibrary
#define LibName exodus_par
SOREV = 5
#define SoRev SOREV
CC = $(CCPAR)
#define LibraryCcCmd $(CCPAR)
DEFINES = $(PICFLAGS)
SRCS = ex_open_par.c ex_create_par.c
OBJS = ${SRCS:.c=.o}
#include
LibraryTargetSubdirsCopy(libexodus_par.a,$(OBJS),../../)
$(OBJS): ../include/exodusII.h ../include/exodusII_int.h ../include/exodusII_par.h
DependTarget()
LibraryObjectRule()
exodusii-6.02.dfsg.1/exodus/cbind/parallel/ex_create_par.c 0000664 0000000 0000000 00000035567 12253122131 0023512 0 ustar 00root root 0000000 0000000 /*
* Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
* DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
* retains certain rights in this software.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* * Neither the name of Sandia Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/*!
\note The ex_create_int() is an internal function called by
ex_create(). The user should call ex_create() and not ex_create_int().
The function ex_create() creates a new exodus file and returns an ID
that can subsequently be used to refer to the file.
All floating point values in an exodus file are stored as either
4-byte (\c float) or 8-byte (\c double) numbers; no mixing of 4- and
8-byte numbers in a single file is allowed. An application code can
compute either 4- or 8-byte values and can designate that the values
be stored in the exodus file as either 4- or 8-byte numbers;
conversion between the 4- and 8-byte values is performed automatically
by the API routines. Thus, there are four possible combinations of
compute word size and storage (or I/O) word size.
\return In case of an error, ex_create() returns a negative number. Possible
causes of errors include:
- Passing a file name that includes a directory that does not
exist.
- Specifying a file name of a file that exists and also
specifying a no clobber option.
- Attempting to create a file in a directory without permission
to create files there.
- Passing an invalid file clobber mode.
\param path The file name of the new exodus file. This can be given as either an
absolute path name (from the root of the file system) or a relative
path name (from the current directory).
\param cmode Mode. Use one of the following predefined constants:
\arg \c EX_NOCLOBBER To create the new file only if the given file name does not refer to a
file that already exists.
\arg \c EX_CLOBBER To create the new file, regardless of whether a file with the same
name already exists. If a file with the same name does exist, its
contents will be erased.
\arg \c EX_LARGE_MODEL To create a model that can store individual datasets larger than
2 gigabytes. This modifies the internal storage used by exodusII and
also puts the underlying NetCDF file into the \e 64-bit offset'
mode. See largemodel for more details on this
mode. A large model file will also be created if the
environment variable \c EXODUS_LARGE_MODEL is defined
in the users environment. A message will be printed to standard output
if this environment variable is found.
\arg \c EX_NORMAL_MODEL Create a standard model.
\arg \c EX_NETCDF4 To create a model using the HDF5-based NetCDF-4
output. An HDF5-based NetCDF-4 file will also be created if the
environment variable \c EXODUS_NETCDF4 is defined in the
users environment. A message will be printed to standard output if
this environment variable is found.
\arg \c EX_NOSHARE Do not open the underlying NetCDF file in \e share mode. See the
NetCDF documentation for more details.
\arg \c EX_SHARE Do open the underlying NetCDF file in \e share mode. See the NetCDF
documentation for more details.
\param[in,out] comp_ws The word size in bytes (0, 4 or 8) of the floating point variables
used in the application program. If 0 (zero) is passed, the default
sizeof(float) will be used and returned in this variable. WARNING: all
exodus functions requiring floats must be passed floats declared with
this passed in or returned compute word size (4 or 8).}
\param io_ws The word size in bytes (4 or 8) of the floating point
data as they are to be stored in the exodus file.
\param run_version (internally generated) used to verify compatability of libary and include files.
The following code segment creates an exodus file called \file{test.exo}:
\code
#include "exodusII.h"
int CPU_word_size, IO_word_size, exoid;
CPU_word_size = sizeof(float); \comment{use float or double}
IO_word_size = 8; \comment{store variables as doubles}
\comment{create exodus file}
exoid = ex_create ("test.exo" \comment{filename path}
EX_CLOBBER, \comment{create mode}
&CPU_word_size, \comment{CPU float word size in bytes}
&IO_word_size); \comment{I/O float word size in bytes}
\endcode
*/
#include
#include
#include
#include "netcdf_par.h"
#include "exodusII.h"
#include "exodusII_int.h"
static int warning_output = 0;
int ex_create_par_int (const char *path,
int cmode,
int *comp_ws,
int *io_ws,
MPI_Comm comm,
MPI_Info info,
int run_version)
{
int exoid, dims[1];
int status;
int dimid, time_dim;
int old_fill;
int lio_ws;
int filesiz;
float vers;
char errmsg[MAX_ERR_LENGTH];
char *mode_name;
int mode = 0;
#if defined(NC_NETCDF4)
static int netcdf4_mode = -1;
char *option;
#endif /* NC_NETCDF4 */
int int64_status;
int pariomode = NC_MPIPOSIX;
unsigned int my_mode = cmode;
assert(my_mode == cmode);
exerrval = 0; /* clear error code */
if (run_version != EX_API_VERS_NODOT && warning_output == 0) {
int run_version_major = run_version / 100;
int run_version_minor = run_version % 100;
int lib_version_major = EX_API_VERS_NODOT / 100;
int lib_version_minor = EX_API_VERS_NODOT % 100;
fprintf(stderr, "EXODUS: Warning: This code was compiled with exodusII version %d.%02d,\n but was linked with exodusII library version %d.%02d\n This is probably an error in the build process of this code.\n",
run_version_major, run_version_minor, lib_version_major, lib_version_minor);
warning_output = 1;
}
/*
* See if any integer data is to be stored as int64 (long long). If
* so, then need to set NC_NETCDF4 and unset NC_CLASSIC_MODEL (or
* set EX_NOCLASSIC. Output meaningful error message if the library
* is not NetCDF-4 enabled...
*/
int64_status = my_mode & (EX_ALL_INT64_DB | EX_ALL_INT64_API);
if ((int64_status & EX_ALL_INT64_DB) != 0) {
#if defined(NC_NETCDF4)
/* Library DOES support netcdf4... Set modes required to use
* netcdf-4 in non-classic mode
*/
my_mode |= EX_NOCLASSIC;
my_mode |= EX_NETCDF4;
#else
/* Library does NOT support netcdf4 */
exerrval = EX_BADPARAM;
sprintf(errmsg,
"EXODUS: Error: 64-bit integer storage requested, but the netcdf library does not support the required netcdf-4 extensions.\n");
ex_err("ex_create",errmsg,exerrval);
return (EX_FATAL);
#endif
}
#if defined(NC_NETCDF4)
if (my_mode & EX_NETCDF4) {
mode |= (NC_NETCDF4);
} else {
if (netcdf4_mode == -1) {
option = getenv("EXODUS_NETCDF4");
if (option != NULL) {
fprintf(stderr, "EXODUS: Using netcdf version 4 selected via EXODUS_NETCDF4 environment variable\n");
netcdf4_mode = NC_NETCDF4;
} else {
netcdf4_mode = 0;
}
}
mode |= netcdf4_mode;
}
if (! (my_mode & EX_NOCLASSIC)) {
mode |= NC_CLASSIC_MODEL;
}
#endif
/* Check parallel io mode. Valid is NC_MPIPOSIX or NC_MPIIO or NC_PNETCDF
* Exodus uses different flag values; map to netcdf values
*/
if (mode & EX_MPIPOSIX)
pariomode = NC_MPIPOSIX;
else if (mode & EX_MPIIO)
pariomode = NC_MPIIO;
else if (mode & EX_PNETCDF)
pariomode = NC_PNETCDF;
/*
* See if "large file" mode was specified in a ex_create my_mode. If
* so, then pass the NC_64BIT_OFFSET flag down to netcdf.
* If netcdf4 mode specified, don't use NC_64BIT_OFFSET mode.
*/
if ( (my_mode & EX_LARGE_MODEL) && (my_mode & EX_NORMAL_MODEL)) {
exerrval = EX_BADPARAM;
sprintf(errmsg,
"Warning: conflicting mode specification for file %s, mode %d. Using normal",
path, (int)my_mode);
ex_err("ex_create",errmsg,exerrval);
}
if (my_mode & EX_NORMAL_MODEL)
filesiz = 0;
#if defined(NC_NETCDF4)
else if (mode & NC_NETCDF4)
filesiz = 1;
#endif
else
filesiz = (int)((my_mode & EX_LARGE_MODEL) || (ex_large_model(-1) == 1));
if (
#if defined(NC_NETCDF4)
!(mode & NC_NETCDF4) &&
#endif
filesiz == 1) {
mode |= NC_64BIT_OFFSET;
}
if (my_mode & EX_SHARE) {
mode |= NC_SHARE;
}
/*
* set error handling mode to no messages, non-fatal errors
*/
ex_opts(exoptval); /* call required to set ncopts first time through */
if (my_mode & EX_CLOBBER) {
mode |= NC_CLOBBER;
mode_name = "CLOBBER";
} else {
mode |= NC_NOCLOBBER;
mode_name = "NOCLOBBER";
}
if ((status = nc_create_par (path, mode|pariomode, comm, info, &exoid)) != NC_NOERR) {
exerrval = status;
if (my_mode & EX_NETCDF4) {
sprintf(errmsg,
"Error: file create failed for %s in NETCDF4 and %s mode.\n\tThis library probably does not support netcdf-4 files.",
path, mode_name);
} else {
sprintf(errmsg,
"Error: file create failed for %s, mode: %s",
path, mode_name);
}
ex_err("ex_create",errmsg,exerrval);
return (EX_FATAL);
}
/* turn off automatic filling of netCDF variables
*/
if ((status = nc_set_fill (exoid, NC_NOFILL, &old_fill)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,
"Error: failed to set nofill mode in file id %d",
exoid);
ex_err("ex_create", errmsg, exerrval);
return (EX_FATAL);
}
/* initialize floating point size conversion. since creating new file,
* i/o wordsize attribute from file is zero.
*/
if (ex_conv_ini( exoid, comp_ws, io_ws, 0, int64_status ) != EX_NOERR) {
exerrval = EX_FATAL;
sprintf(errmsg,
"Error: failed to init conversion routines in file id %d",
exoid);
ex_err("ex_create", errmsg, exerrval);
return (EX_FATAL);
}
/* put the EXODUS version number, and i/o floating point word size as
* netcdf global attributes
*/
/* store Exodus API version # as an attribute */
vers = EX_API_VERS;
if ((status=nc_put_att_float(exoid, NC_GLOBAL, ATT_API_VERSION,
NC_FLOAT, 1, &vers)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,
"Error: failed to store Exodus II API version attribute in file id %d",
exoid);
ex_err("ex_create",errmsg, exerrval);
return (EX_FATAL);
}
/* store Exodus file version # as an attribute */
vers = EX_VERS;
if ((status=nc_put_att_float(exoid, NC_GLOBAL, ATT_VERSION, NC_FLOAT, 1, &vers)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,
"Error: failed to store Exodus II file version attribute in file id %d",
exoid);
ex_err("ex_create",errmsg, exerrval);
return (EX_FATAL);
}
/* store Exodus file float word size as an attribute */
lio_ws = (int)(*io_ws);
if ((status=nc_put_att_int (exoid, NC_GLOBAL, ATT_FLT_WORDSIZE, NC_INT, 1, &lio_ws)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,
"Error: failed to store Exodus II file float word size attribute in file id %d",
exoid);
ex_err("ex_create",errmsg, exerrval);
return (EX_FATAL);
}
/* store Exodus file size (1=large, 0=normal) as an attribute */
if ((status = nc_put_att_int (exoid, NC_GLOBAL, ATT_FILESIZE, NC_INT, 1, &filesiz)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,
"Error: failed to store Exodus II file size attribute in file id %d",
exoid);
ex_err("ex_create",errmsg, exerrval);
return (EX_FATAL);
}
/* define some dimensions and variables
*/
/* create string length dimension */
if ((status=nc_def_dim (exoid, DIM_STR, (MAX_STR_LENGTH+1), &dimid)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,
"Error: failed to define string length in file id %d",exoid);
ex_err("ex_create",errmsg,exerrval);
return (EX_FATAL);
}
/* The name string length dimension is delayed until the ex_put_init function */
/* create line length dimension */
if ((status = nc_def_dim(exoid, DIM_LIN, (MAX_LINE_LENGTH+1), &dimid)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,
"Error: failed to define line length in file id %d",exoid);
ex_err("ex_create",errmsg,exerrval);
return (EX_FATAL);
}
/* create number "4" dimension; must be of type long */
if ((status = nc_def_dim(exoid, DIM_N4, 4L, &dimid)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,
"Error: failed to define number \"4\" dimension in file id %d",exoid);
ex_err("ex_create",errmsg,exerrval);
return (EX_FATAL);
}
if ((status = nc_def_dim(exoid, DIM_TIME, NC_UNLIMITED, &time_dim)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,
"Error: failed to define time dimension in file id %d", exoid);
ex_err("ex_create",errmsg,exerrval);
return (EX_FATAL);
}
dims[0] = time_dim;
if ((status = nc_def_var(exoid, VAR_WHOLE_TIME, nc_flt_code(exoid), 1, dims, &dimid)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,
"Error: failed to define whole time step variable in file id %d",
exoid);
ex_err("ex_create",errmsg,exerrval);
return (EX_FATAL);
}
ex_compress_variable(exoid, dimid, 2);
{
int int64_db_status = int64_status & EX_ALL_INT64_DB;
if ((status=nc_put_att_int(exoid, NC_GLOBAL, ATT_INT64_STATUS, NC_INT, 1, &int64_db_status)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,
"Error: failed to add int64_status attribute in file id %d",exoid);
ex_err("ex_put_init_ext",errmsg,exerrval);
return (EX_FATAL);
}
}
if ((status = nc_enddef (exoid)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,
"Error: failed to complete definition for file id %d", exoid);
ex_err("ex_create",errmsg,exerrval);
return (EX_FATAL);
}
return (exoid);
}
exodusii-6.02.dfsg.1/exodus/cbind/parallel/ex_open_par.c 0000664 0000000 0000000 00000027501 12253122131 0023175 0 ustar 00root root 0000000 0000000 /*
* Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
* DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
* retains certain rights in this software.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* * Neither the name of Sandia Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/*****************************************************************************
*
* exopen - ex_open
*
* entry conditions -
* input parameters:
* char* path exodus filename path
* int mode access mode w/r
*
* exit conditions -
* int exoid exodus file id
* int* comp_ws computer word size
* int* io_ws storage word size
* float* version EXODUSII interface version number
*
* revision history -
*
*
*****************************************************************************/
#include
#include
#include "netcdf_par.h"
#include "exodusII.h"
#include "exodusII_int.h"
/*!
The function ex_open() opens an existing exodus file and returns
an ID that can subsequently be used to refer to the file, the word
size of the floating point values stored in the file, and the version
of the exodus database (returned as a ``float'', regardless of the
compute or I/O word size). Multiple files may be ``open'' simultaneously.
\return In case of an error, ex_open() returns a negative
number. Possible causes of errors include:
- The specified file does not exist.
- The mode specified is something other than the predefined constant \fparam{EX_READ} or \fparam{EX_WRITE}.
- Database version is earlier than 2.0.
\param path The file name of the exodus file. This can be given as either an
absolute path name (from the root of the file system) or a relative
path name (from the current directory).
\param mode Access mode. Use one of the following predefined constants:
- \fparam{EX_READ} To open the file just for reading.
- \fparam{EX_WRITE} To open the file for writing and reading.
\param[in,out] comp_ws The word size in bytes (0, 4 or 8) of the floating point variables
used in the application program. If 0 (zero) is passed, the default
size of floating point values for the machine will be used and
returned in this variable. WARNING: all exodus functions requiring
reals must be passed reals declared with this passed in or returned
compute word size (4 or 8).
\param[in,out] io_ws The word size in bytes (0, 4 or 8) of the floating
point data as they are stored in the exodus file. If the word
size does not match the word size of data stored in the file,
a fatal error is returned. If this argument is 0, the word size
of the floating point data already stored in the file is returned.
\param[out] version Returned exodus database version number.
The following opens an exodus file named \file{test.exo} for read
only, using default settings for compute and I/O word sizes:
\code
#include "exodusII.h"
int CPU_word_size,IO_word_size, exoid;
float version;
CPU_word_size = sizeof(float); \co{float or double}
IO_word_size = 0; \co{use what is stored in file}
\comment{open exodus files}
exoid = ex_open ("test.exo", \co{filename path}
EX_READ, \co{access mode = READ}
&CPU_word_size, \co{CPU word size}
&IO_word_size, \co{IO word size}
&version); \co{ExodusII library version}
\endcode
*/
static int warning_output = 0;
int ex_open_par_int (const char *path,
int mode,
int *comp_ws,
int *io_ws,
float *version,
MPI_Comm comm,
MPI_Info info,
int run_version)
{
int exoid;
int status, stat_att, stat_dim;
nc_type att_type = NC_NAT;
size_t att_len = 0;
int old_fill;
int file_wordsize;
int dim_str_name;
int int64_status = 0;
int pariomode = NC_MPIPOSIX;
char errmsg[MAX_ERR_LENGTH];
exerrval = 0; /* clear error code */
/* set error handling mode to no messages, non-fatal errors */
ex_opts(exoptval); /* call required to set ncopts first time through */
if (run_version != EX_API_VERS_NODOT && warning_output == 0) {
int run_version_major = run_version / 100;
int run_version_minor = run_version % 100;
int lib_version_major = EX_API_VERS_NODOT / 100;
int lib_version_minor = EX_API_VERS_NODOT % 100;
fprintf(stderr, "EXODUS: Warning: This code was compiled with exodus version %d.%02d,\n but was linked with exodus library version %d.%02d\n This is probably an error in the build process of this code.\n",
run_version_major, run_version_minor, lib_version_major, lib_version_minor);
warning_output = 1;
}
if ((mode & EX_READ) && (mode & EX_WRITE)) {
exerrval = EX_BADFILEMODE;
sprintf(errmsg,"Error: Cannot specify both EX_READ and EX_WRITE");
ex_err("ex_open",errmsg,exerrval);
return (EX_FATAL);
}
/* Check parallel io mode. Valid is NC_MPIPOSIX or NC_MPIIO or NC_PNETCDF
* Exodus uses different flag values; map to netcdf values
*/
if (mode & EX_MPIPOSIX)
pariomode = NC_MPIPOSIX;
else if (mode & EX_MPIIO)
pariomode = NC_MPIIO;
else if (mode & EX_PNETCDF)
pariomode = NC_PNETCDF;
/* The EX_READ mode is the default if EX_WRITE is not specified... */
if (!(mode & EX_WRITE)) { /* READ ONLY */
if ((status = nc_open_par (path, NC_NOWRITE|NC_SHARE|pariomode, comm, info, &exoid)) != NC_NOERR)
{
/* NOTE: netCDF returns an id of -1 on an error - but no error code! */
if (status == 0) {
exerrval = EX_FATAL;
}
else {
/* It is possible that the user is trying to open a netcdf4
file, but the netcdf4 capabilities aren't available in the
netcdf linked to this library. Note that we can't just use a
compile-time define since we could be using a shareable
netcdf library, so the netcdf4 capabilities aren't known
until runtime...
Netcdf-4.X does not (yet?) have a function that can be
queried to determine whether the library being used was
compiled with --enable-netcdf4, so that isn't very
helpful..
At this time, query the beginning of the file and see if it
is an HDF-5 file and if it is assume that the open failure
is due to the netcdf library not enabling netcdf4 features...
*/
int type = 0;
ex_check_file_type(path, &type);
if (type == 5) {
/* This is an hdf5 (netcdf4) file. Since the nc_open failed,
the assumption is that the netcdf doesn't have netcdf4
capabilities enabled. Tell the user...
*/
fprintf(stderr,
"EXODUS: Error: Attempting to open the netcdf-4 file:\n\t'%s'\n\twith a netcdf library that does not support netcdf-4\n",
path);
}
exerrval = status;
}
sprintf(errmsg,"Error: failed to open %s read only",path);
ex_err("ex_open",errmsg,exerrval);
return(EX_FATAL);
}
}
else /* (mode & EX_WRITE) READ/WRITE */
{
if ((status = nc_open_par (path, NC_WRITE|NC_SHARE|pariomode, comm, info, &exoid)) != NC_NOERR)
{
/* NOTE: netCDF returns an id of -1 on an error - but no error code! */
if (status == 0)
exerrval = EX_FATAL;
else
exerrval = status;
sprintf(errmsg,"Error: failed to open %s write only",path);
ex_err("ex_open",errmsg,exerrval);
return(EX_FATAL);
}
/* turn off automatic filling of netCDF variables */
if ((status = nc_set_fill (exoid, NC_NOFILL, &old_fill)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,
"Error: failed to set nofill mode in file id %d",
exoid);
ex_err("ex_open", errmsg, exerrval);
return (EX_FATAL);
}
stat_att = nc_inq_att(exoid, NC_GLOBAL, ATT_MAX_NAME_LENGTH, &att_type, &att_len);
stat_dim = nc_inq_dimid(exoid, DIM_STR_NAME, &dim_str_name);
if(stat_att != NC_NOERR || stat_dim != NC_NOERR) {
nc_redef(exoid);
if (stat_att != NC_NOERR) {
int max_so_far = 32;
nc_put_att_int(exoid, NC_GLOBAL, ATT_MAX_NAME_LENGTH, NC_INT, 1, &max_so_far);
}
/* If the DIM_STR_NAME variable does not exist on the database, we need to add it now. */
if(stat_dim != NC_NOERR) {
/* Not found; set to default value of 32+1. */
int max_name = ex_default_max_name_length < 32 ? 32 : ex_default_max_name_length;
nc_def_dim(exoid, DIM_STR_NAME, max_name+1, &dim_str_name);
}
nc_enddef (exoid);
}
}
/* determine version of EXODUS II file, and the word size of
* floating point and integer values stored in the file
*/
if ((status = nc_get_att_float(exoid, NC_GLOBAL, ATT_VERSION, version)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,"Error: failed to get database version for file id: %d",
exoid);
ex_err("ex_open",errmsg,exerrval);
return(EX_FATAL);
}
/* check ExodusII file version - old version 1.x files are not supported */
if (*version < 2.0) {
exerrval = EX_FATAL;
sprintf(errmsg,"Error: Unsupported file version %.2f in file id: %d",
*version, exoid);
ex_err("ex_open",errmsg,exerrval);
return(EX_FATAL);
}
if (nc_get_att_int (exoid, NC_GLOBAL, ATT_FLT_WORDSIZE, &file_wordsize) != NC_NOERR)
{ /* try old (prior to db version 2.02) attribute name */
if (nc_get_att_int (exoid,NC_GLOBAL,ATT_FLT_WORDSIZE_BLANK,&file_wordsize) != NC_NOERR)
{
exerrval = EX_FATAL;
sprintf(errmsg,"Error: failed to get file wordsize from file id: %d",
exoid);
ex_err("ex_open",errmsg,exerrval);
return(exerrval);
}
}
/* See if int64 status attribute exists and if so, what data is stored as int64
* Older files don't have the attribute, so it is not an error if it is missing
*/
if (nc_get_att_int (exoid, NC_GLOBAL, ATT_INT64_STATUS, &int64_status) != NC_NOERR) {
int64_status = 0; /* Just in case it gets munged by a failed get_att_int call */
}
/* Merge in API int64 status flags as specified by caller of function... */
int64_status |= (mode & EX_ALL_INT64_API);
/* initialize floating point and integer size conversion. */
if (ex_conv_ini( exoid, comp_ws, io_ws, file_wordsize, int64_status ) != EX_NOERR ) {
exerrval = EX_FATAL;
sprintf(errmsg,
"Error: failed to initialize conversion routines in file id %d",
exoid);
ex_err("ex_open", errmsg, exerrval);
return (EX_FATAL);
}
return (exoid);
}
exodusii-6.02.dfsg.1/exodus/cbind/src/ 0000775 0000000 0000000 00000000000 12253122131 0017520 5 ustar 00root root 0000000 0000000 exodusii-6.02.dfsg.1/exodus/cbind/src/Imakefile 0000664 0000000 0000000 00000020707 12253122131 0021337 0 ustar 00root root 0000000 0000000 # Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
# DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
# retains certain rights in this software.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
#
# * Neither the name of Sandia Corporation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
XCOMM Use include files locates in exodusii/cbind/include
INCLUDES = IncRef-I../include
REQUIREDLIBS = -L$(SHLIBDIR) $(NETCDF)
#if UseNetcdf4 == NO
NET_DEF = -DNOT_NETCDF4
#endif
#ifndef BuildSharedExodusLibrary
#define BuildSharedExodusLibrary NO
#endif
#define DoNormalLib YES
#define DoSharedLib BuildSharedExodusLibrary
#define LibName exodus
SOREV = 5
#define SoRev SOREV
DEFINES = $(PICFLAGS) $(NET_DEF)
#if defined(BuildParallelAwareExodus)
PARSRCS = ex_create_par.c ex_open_par.c
PAROBJS = ${PARSRCS:.c=.o}
$(PAROBJS): ../include/exodusII.h ../include/exodusII_int.h ../include/exodusII_par.h
CC = $(CCPAR)
#define LibraryCcCmd $(CCPAR)
#endif
SRCS = ex_close.c \
ex_conv.c \
ex_copy.c \
ex_create.c \
ex_create_group.c \
ex_get_group_id.c \
ex_get_group_ids.c \
ex_cvt_nodes_to_sides.c \
ex_err.c \
ex_get_all_times.c \
ex_get_attr.c \
ex_get_attr_names.c \
ex_get_attr_param.c \
ex_get_block.c \
ex_get_block_param.c \
ex_get_cmap_params.c \
ex_get_concat_node_sets.c \
ex_get_concat_sets.c \
ex_get_concat_side_set_node_count.c \
ex_get_concat_side_sets.c \
ex_get_conn.c \
ex_get_coord.c \
ex_get_coordinate_frames.c \
ex_get_coord_names.c \
ex_get_eb_info_global.c \
ex_get_elem_attr.c \
ex_get_elem_attr_names.c \
ex_get_elem_blk_ids.c \
ex_get_elem_block.c \
ex_get_elem_cmap.c \
ex_get_elem_conn.c \
ex_get_elem_map.c \
ex_get_elem_num_map.c \
ex_get_elem_type.c \
ex_get_elem_var.c \
ex_get_elem_var_tab.c \
ex_get_elem_var_time.c \
ex_get_entity_count_per_polyhedra.c \
ex_get_glob_vars.c \
ex_get_glob_var_time.c \
ex_get_id_map.c \
ex_get_ids.c \
ex_get_info.c \
ex_get_init.c \
ex_get_init_ext.c \
ex_get_init_global.c \
ex_get_init_info.c \
ex_get_loadbal_param.c \
ex_get_map.c \
ex_get_map_param.c \
ex_get_name.c \
ex_get_names.c \
ex_get_n_attr.c \
ex_get_n_conn.c \
ex_get_n_coord.c \
ex_get_n_elem_attr.c \
ex_get_n_elem_conn.c \
ex_get_n_elem_num_map.c \
ex_get_n_elem_var.c \
ex_get_n_nodal_var.c \
ex_get_n_node_num_map.c \
ex_get_n_node_set.c \
ex_get_n_node_set_df.c \
ex_get_nodal_var.c \
ex_get_nodal_var_time.c \
ex_get_node_cmap.c \
ex_get_node_map.c \
ex_get_node_num_map.c \
ex_get_node_set.c \
ex_get_node_set_dist_fact.c \
ex_get_node_set_ids.c \
ex_get_node_set_param.c \
ex_get_n_one_attr.c \
ex_get_nset_var.c \
ex_get_nset_var_tab.c \
ex_get_n_side_set.c \
ex_get_n_side_set_df.c \
ex_get_ns_param_global.c \
ex_get_num_map.c \
ex_get_n_var.c \
ex_get_object_truth_vector.c \
ex_get_one_attr.c \
ex_get_one_elem_attr.c \
ex_get_partial_attr.c \
ex_get_partial_conn.c \
ex_get_partial_coord.c \
ex_get_partial_elem_attr.c \
ex_get_partial_elem_conn.c \
ex_get_partial_elem_map.c \
ex_get_partial_elem_num_map.c \
ex_get_partial_elem_var.c \
ex_get_partial_id_map.c \
ex_get_partial_nodal_var.c \
ex_get_partial_node_num_map.c \
ex_get_partial_node_set.c \
ex_get_partial_node_set_df.c \
ex_get_partial_num_map.c \
ex_get_partial_one_attr.c \
ex_get_partial_set_dist_fact.c \
ex_get_partial_side_set.c \
ex_get_partial_side_set_df.c \
ex_get_partial_var.c \
ex_get_processor_elem_maps.c \
ex_get_processor_node_maps.c \
ex_get_prop_array.c \
ex_get_prop.c \
ex_get_prop_names.c \
ex_get_qa.c \
ex_get_set.c \
ex_get_set_dist_fact.c \
ex_get_set_param.c \
ex_get_sets.c \
ex_get_side_set.c \
ex_get_side_set_dist_fact.c \
ex_get_side_set_ids.c \
ex_get_side_set_node_count.c \
ex_get_side_set_node_list.c \
ex_get_side_set_node_list_len.c \
ex_get_side_set_param.c \
ex_get_sset_var.c \
ex_get_sset_var_tab.c \
ex_get_ss_param_global.c \
ex_get_time.c \
ex_get_truth_table.c \
ex_get_var.c \
ex_get_variable_name.c \
ex_get_variable_names.c \
ex_get_variable_param.c \
ex_get_var_name.c \
ex_get_var_names.c \
ex_get_var_param.c \
ex_get_var_tab.c \
ex_get_var_time.c \
ex_inquire.c \
ex_ne_util.c \
ex_open.c \
ex_opts.c \
ex_put_all_var_param.c \
ex_put_all_var_param_ext.c \
ex_put_attr.c \
ex_put_attr_names.c \
ex_put_attr_param.c \
ex_put_block.c \
ex_put_block_param.c \
ex_put_cmap_params.c \
ex_put_cmap_params_cc.c \
ex_put_concat_all_blocks.c \
ex_put_concat_elem_block.c \
ex_put_concat_node_sets.c \
ex_put_concat_sets.c \
ex_put_concat_side_sets.c \
ex_put_concat_var_param.c \
ex_put_conn.c \
ex_put_coord.c \
ex_put_coordinate_frames.c \
ex_put_coord_names.c \
ex_put_eb_info_global.c \
ex_put_elem_attr.c \
ex_put_elem_attr_names.c \
ex_put_elem_block.c \
ex_put_elem_cmap.c \
ex_put_elem_conn.c \
ex_put_elem_map.c \
ex_put_elem_num_map.c \
ex_put_elem_var.c \
ex_put_elem_var_slab.c \
ex_put_elem_var_tab.c \
ex_put_entity_count_per_polyhedra.c \
ex_put_glob_vars.c \
ex_put_id_map.c \
ex_put_info.c \
ex_put_init.c \
ex_put_init_ext.c \
ex_put_init_global.c \
ex_put_init_info.c \
ex_put_loadbal_param.c \
ex_put_loadbal_param_cc.c \
ex_put_map.c \
ex_put_map_param.c \
ex_put_name.c \
ex_put_names.c \
ex_put_n_coord.c \
ex_put_n_elem_attr.c \
ex_put_n_elem_conn.c \
ex_put_n_elem_num_map.c \
ex_put_n_nodal_var.c \
ex_put_n_node_num_map.c \
ex_put_n_node_set.c \
ex_put_n_node_set_df.c \
ex_put_nodal_var.c \
ex_put_nodal_var_slab.c \
ex_put_node_cmap.c \
ex_put_node_map.c \
ex_put_node_num_map.c \
ex_put_node_set.c \
ex_put_node_set_dist_fact.c \
ex_put_node_set_param.c \
ex_put_n_one_attr.c \
ex_put_nset_var.c \
ex_put_nset_var_tab.c \
ex_put_n_side_set.c \
ex_put_n_side_set_df.c \
ex_put_ns_param_global.c \
ex_put_num_map.c \
ex_put_n_var.c \
ex_put_one_attr.c \
ex_put_one_elem_attr.c \
ex_put_partial_attr.c \
ex_put_partial_coord.c \
ex_put_partial_elem_attr.c \
ex_put_partial_elem_conn.c \
ex_put_partial_elem_map.c \
ex_put_partial_elem_num_map.c \
ex_put_partial_id_map.c \
ex_put_partial_nodal_var.c \
ex_put_partial_node_num_map.c \
ex_put_partial_node_set.c \
ex_put_partial_node_set_df.c \
ex_put_partial_num_map.c \
ex_put_partial_one_attr.c \
ex_put_partial_set.c \
ex_put_partial_set_dist_fact.c \
ex_put_partial_side_set.c \
ex_put_partial_side_set_df.c \
ex_put_partial_var.c \
ex_put_processor_elem_maps.c \
ex_put_processor_node_maps.c \
ex_put_prop_array.c \
ex_put_prop.c \
ex_put_prop_names.c \
ex_put_qa.c \
ex_put_set.c \
ex_put_set_dist_fact.c \
ex_put_set_param.c \
ex_put_sets.c \
ex_put_side_set.c \
ex_put_side_set_dist_fact.c \
ex_put_side_set_param.c \
ex_put_sset_var.c \
ex_put_sset_var_tab.c \
ex_put_ss_param_global.c \
ex_put_time.c \
ex_put_truth_table.c \
ex_put_var.c \
ex_put_variable_name.c \
ex_put_variable_names.c \
ex_put_variable_param.c \
ex_put_var_name.c \
ex_put_var_names.c \
ex_put_var_param.c \
ex_put_var_tab.c \
ex_update.c \
ex_utils.c
OBJS = ${SRCS:.c=.o}
#include
LibraryTargetSubdirsCopy(libexodus.a,$(OBJS) $(PAROBJS),../../)
$(OBJS): ../include/exodusII.h ../include/exodusII_int.h
DependTarget()
LibraryObjectRule()
exodusii-6.02.dfsg.1/exodus/cbind/src/Makefile.standalone 0000664 0000000 0000000 00000016401 12253122131 0023311 0 ustar 00root root 0000000 0000000 PARSRCS = ex_create_par.c \
ex_open_par.c
SRCS = \
ex_close.c \
ex_conv.c \
ex_copy.c \
ex_create.c \
ex_create_group.c \
ex_cvt_nodes_to_sides.c \
ex_err.c \
ex_get_all_times.c \
ex_get_attr.c \
ex_get_attr_names.c \
ex_get_attr_param.c \
ex_get_block.c \
ex_get_block_param.c \
ex_get_cmap_params.c \
ex_get_concat_node_sets.c \
ex_get_concat_sets.c \
ex_get_concat_side_set_node_count.c \
ex_get_concat_side_sets.c \
ex_get_conn.c \
ex_get_coord.c \
ex_get_coord_names.c \
ex_get_coordinate_frames.c \
ex_get_eb_info_global.c \
ex_get_elem_attr.c \
ex_get_elem_attr_names.c \
ex_get_elem_blk_ids.c \
ex_get_elem_block.c \
ex_get_elem_cmap.c \
ex_get_elem_conn.c \
ex_get_elem_map.c \
ex_get_elem_num_map.c \
ex_get_elem_type.c \
ex_get_elem_var.c \
ex_get_elem_var_tab.c \
ex_get_elem_var_time.c \
ex_get_entity_count_per_polyhedra.c \
ex_get_glob_var_time.c \
ex_get_glob_vars.c \
ex_get_group_id.c \
ex_get_group_ids.c \
ex_get_id_map.c \
ex_get_ids.c \
ex_get_info.c \
ex_get_init.c \
ex_get_init_ext.c \
ex_get_init_global.c \
ex_get_init_info.c \
ex_get_loadbal_param.c \
ex_get_map.c \
ex_get_map_param.c \
ex_get_n_attr.c \
ex_get_n_conn.c \
ex_get_n_coord.c \
ex_get_n_elem_attr.c \
ex_get_n_elem_conn.c \
ex_get_n_elem_num_map.c \
ex_get_n_elem_var.c \
ex_get_n_nodal_var.c \
ex_get_n_node_num_map.c \
ex_get_n_node_set.c \
ex_get_n_node_set_df.c \
ex_get_n_one_attr.c \
ex_get_n_side_set.c \
ex_get_n_side_set_df.c \
ex_get_n_var.c \
ex_get_name.c \
ex_get_names.c \
ex_get_nodal_var.c \
ex_get_nodal_var_time.c \
ex_get_node_cmap.c \
ex_get_node_map.c \
ex_get_node_num_map.c \
ex_get_node_set.c \
ex_get_node_set_dist_fact.c \
ex_get_node_set_ids.c \
ex_get_node_set_param.c \
ex_get_ns_param_global.c \
ex_get_nset_var.c \
ex_get_nset_var_tab.c \
ex_get_num_map.c \
ex_get_object_truth_vector.c \
ex_get_one_attr.c \
ex_get_one_elem_attr.c \
ex_get_partial_attr.c \
ex_get_partial_conn.c \
ex_get_partial_coord.c \
ex_get_partial_elem_attr.c \
ex_get_partial_elem_conn.c \
ex_get_partial_elem_map.c \
ex_get_partial_elem_num_map.c \
ex_get_partial_elem_var.c \
ex_get_partial_id_map.c \
ex_get_partial_nodal_var.c \
ex_get_partial_node_num_map.c \
ex_get_partial_node_set.c \
ex_get_partial_node_set_df.c \
ex_get_partial_num_map.c \
ex_get_partial_one_attr.c \
ex_get_partial_set_dist_fact.c \
ex_get_partial_side_set.c \
ex_get_partial_side_set_df.c \
ex_get_partial_var.c \
ex_get_processor_elem_maps.c \
ex_get_processor_node_maps.c \
ex_get_prop.c \
ex_get_prop_array.c \
ex_get_prop_names.c \
ex_get_qa.c \
ex_get_set.c \
ex_get_set_dist_fact.c \
ex_get_set_param.c \
ex_get_sets.c \
ex_get_side_set.c \
ex_get_side_set_dist_fact.c \
ex_get_side_set_ids.c \
ex_get_side_set_node_count.c \
ex_get_side_set_node_list.c \
ex_get_side_set_node_list_len.c \
ex_get_side_set_param.c \
ex_get_ss_param_global.c \
ex_get_sset_var.c \
ex_get_sset_var_tab.c \
ex_get_time.c \
ex_get_truth_table.c \
ex_get_var.c \
ex_get_var_name.c \
ex_get_var_names.c \
ex_get_var_param.c \
ex_get_var_tab.c \
ex_get_var_time.c \
ex_get_variable_name.c \
ex_get_variable_names.c \
ex_get_variable_param.c \
ex_inquire.c \
ex_ne_util.c \
ex_open.c \
ex_opts.c \
ex_put_all_var_param.c \
ex_put_all_var_param_ext.c \
ex_put_attr.c \
ex_put_attr_names.c \
ex_put_attr_param.c \
ex_put_block.c \
ex_put_block_param.c \
ex_put_cmap_params.c \
ex_put_cmap_params_cc.c \
ex_put_concat_all_blocks.c \
ex_put_concat_elem_block.c \
ex_put_concat_node_sets.c \
ex_put_concat_sets.c \
ex_put_concat_side_sets.c \
ex_put_concat_var_param.c \
ex_put_conn.c \
ex_put_coord.c \
ex_put_coord_names.c \
ex_put_coordinate_frames.c \
ex_put_eb_info_global.c \
ex_put_elem_attr.c \
ex_put_elem_attr_names.c \
ex_put_elem_block.c \
ex_put_elem_cmap.c \
ex_put_elem_conn.c \
ex_put_elem_map.c \
ex_put_elem_num_map.c \
ex_put_elem_var.c \
ex_put_elem_var_slab.c \
ex_put_elem_var_tab.c \
ex_put_entity_count_per_polyhedra.c \
ex_put_glob_vars.c \
ex_put_id_map.c \
ex_put_info.c \
ex_put_init.c \
ex_put_init_ext.c \
ex_put_init_global.c \
ex_put_init_info.c \
ex_put_loadbal_param.c \
ex_put_loadbal_param_cc.c \
ex_put_map.c \
ex_put_map_param.c \
ex_put_n_attr.c \
ex_put_n_coord.c \
ex_put_n_elem_attr.c \
ex_put_n_elem_conn.c \
ex_put_n_elem_num_map.c \
ex_put_n_nodal_var.c \
ex_put_n_node_num_map.c \
ex_put_n_node_set.c \
ex_put_n_node_set_df.c \
ex_put_n_one_attr.c \
ex_put_n_side_set.c \
ex_put_n_side_set_df.c \
ex_put_n_var.c \
ex_put_name.c \
ex_put_names.c \
ex_put_nodal_var.c \
ex_put_nodal_var_slab.c \
ex_put_node_cmap.c \
ex_put_node_map.c \
ex_put_node_num_map.c \
ex_put_node_set.c \
ex_put_node_set_dist_fact.c \
ex_put_node_set_param.c \
ex_put_ns_param_global.c \
ex_put_nset_var.c \
ex_put_nset_var_tab.c \
ex_put_num_map.c \
ex_put_one_attr.c \
ex_put_one_elem_attr.c \
ex_put_partial_attr.c \
ex_put_partial_coord.c \
ex_put_partial_elem_attr.c \
ex_put_partial_elem_conn.c \
ex_put_partial_elem_map.c \
ex_put_partial_elem_num_map.c \
ex_put_partial_id_map.c \
ex_put_partial_nodal_var.c \
ex_put_partial_node_num_map.c \
ex_put_partial_node_set.c \
ex_put_partial_node_set_df.c \
ex_put_partial_num_map.c \
ex_put_partial_one_attr.c \
ex_put_partial_set.c \
ex_put_partial_set_dist_fact.c \
ex_put_partial_side_set.c \
ex_put_partial_side_set_df.c \
ex_put_partial_var.c \
ex_put_processor_elem_maps.c \
ex_put_processor_node_maps.c \
ex_put_prop.c \
ex_put_prop_array.c \
ex_put_prop_names.c \
ex_put_qa.c \
ex_put_set.c \
ex_put_set_dist_fact.c \
ex_put_set_param.c \
ex_put_sets.c \
ex_put_side_set.c \
ex_put_side_set_dist_fact.c \
ex_put_side_set_param.c \
ex_put_ss_param_global.c \
ex_put_sset_var.c \
ex_put_sset_var_tab.c \
ex_put_time.c \
ex_put_truth_table.c \
ex_put_var.c \
ex_put_var_name.c \
ex_put_var_names.c \
ex_put_var_param.c \
ex_put_var_tab.c \
ex_put_variable_name.c \
ex_put_variable_names.c \
ex_put_variable_param.c \
ex_update.c \
ex_utils.c \
OBJS = ${SRCS:.c=.o}
all:: libexodus.a
libexodus.a: $(OBJS)
$(AR) $@ $?
$(RANLIB) $@
cp libexodus.a ../../
clean::
rm -f *.CKP *.ln *.BAK *.bak *.o *.M *.mod core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut "#"*
.SUFFIXES: .c
.c.o:
$(CC) -c $(CFLAGS) $*.c
exodusii-6.02.dfsg.1/exodus/cbind/src/ex_close.c 0000664 0000000 0000000 00000012063 12253122131 0021467 0 ustar 00root root 0000000 0000000 /*
* Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
* DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
* retains certain rights in this software.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* * Neither the name of Sandia Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/*****************************************************************************
*
* exclos - ex_close
*
* entry conditions -
* input parameters:
* int exoid exodus file id
*
* exit conditions -
*
* revision history -
*
*
*****************************************************************************/
#include "exodusII.h"
#include "exodusII_int.h"
extern char *ret_string; /* cf ex_utils.c */
/*!
The function ex_close() updates and then closes an open exodus file.
\return In case of an error, ex_close() returns a negative number; a
warning will return a positive number. Possible causes of errors
include:
- data file not properly opened with call to ex_create() or ex_open()
\param exoid exodus file ID returned from a previous call to ex_create() or ex_open().
The following code segment closes an open exodus file:
\code
int error,exoid;
error = ex_close (exoid);
\endcode
*/
int ex_close (int exoid)
{
char errmsg[MAX_ERR_LENGTH];
int status;
int parent_id = 0;
exerrval = 0; /* clear error code */
/*
* NOTE: If using netcdf-4, exoid must refer to the root group.
* Need to determine whether there are any groups and if so,
* call ex_rm_file_item and ex_rm_stat_ptr on each group.
*/
#if !defined(NOT_NETCDF4)
/* nc_inq_grp_parent() will return NC_ENOGRP error if exoid
* refers to the root group (which is what we want)
*/
if ((status = nc_inq_grp_parent(exoid, &parent_id)) != NC_ENOGRP) {
exerrval = EX_NOTROOTID;
sprintf(errmsg,"Error: file id %d does not refer to root group.",exoid);
ex_err("ex_close",errmsg,exerrval);
return(EX_FATAL);
}
#endif
if ((status = nc_sync(exoid)) != NC_NOERR) {
exerrval = status;
sprintf(errmsg,"Error: failed to update file id %d",exoid);
ex_err("ex_close",errmsg,exerrval);
return(EX_FATAL);
}
if ((status = nc_close (exoid)) == NC_NOERR) {
ex_conv_exit(exoid);
ex_rm_file_item(exoid, ex_get_counter_list(EX_ELEM_BLOCK));
ex_rm_file_item(exoid, ex_get_counter_list(EX_FACE_BLOCK));
ex_rm_file_item(exoid, ex_get_counter_list(EX_EDGE_BLOCK));
ex_rm_file_item(exoid, ex_get_counter_list(EX_NODE_SET));
ex_rm_file_item(exoid, ex_get_counter_list(EX_EDGE_SET));
ex_rm_file_item(exoid, ex_get_counter_list(EX_FACE_SET));
ex_rm_file_item(exoid, ex_get_counter_list(EX_SIDE_SET));
ex_rm_file_item(exoid, ex_get_counter_list(EX_ELEM_SET));
ex_rm_file_item(exoid, ex_get_counter_list(EX_NODE_MAP));
ex_rm_file_item(exoid, ex_get_counter_list(EX_EDGE_MAP));
ex_rm_file_item(exoid, ex_get_counter_list(EX_FACE_MAP));
ex_rm_file_item(exoid, ex_get_counter_list(EX_ELEM_MAP));
ex_rm_stat_ptr (exoid, &exoII_ed);
ex_rm_stat_ptr (exoid, &exoII_fa);
ex_rm_stat_ptr (exoid, &exoII_eb);
ex_rm_stat_ptr (exoid, &exoII_ns);
ex_rm_stat_ptr (exoid, &exoII_es);
ex_rm_stat_ptr (exoid, &exoII_fs);
ex_rm_stat_ptr (exoid, &exoII_ss);
ex_rm_stat_ptr (exoid, &exoII_els);
ex_rm_stat_ptr (exoid, &exoII_nm);
ex_rm_stat_ptr (exoid, &exoII_edm);
ex_rm_stat_ptr (exoid, &exoII_fam);
ex_rm_stat_ptr (exoid, &exoII_em);
}
else {
exerrval = status;
sprintf(errmsg, "Error: failed to close file id %d",exoid);
ex_err("ex_close",errmsg, status);
return(EX_FATAL);
}
return(EX_NOERR);
}
exodusii-6.02.dfsg.1/exodus/cbind/src/ex_conv.c 0000664 0000000 0000000 00000035503 12253122131 0021333 0 ustar 00root root 0000000 0000000 /*
* Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
* DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
* retains certain rights in this software.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* * Neither the name of Sandia Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/*****************************************************************************
*
* exutils - exodus utilities
*
* entry conditions -
*
* exit conditions -
*
* revision history -
*
*
*****************************************************************************/
#include
#include "exodusII.h"
#include "exodusII_int.h"
/*! \file
* this file contains code needed to support the various floating point word
* size combinations for computation and i/o that applications might want to
* use. See the netcdf documentation for more details on the floating point
* conversion capabilities.
*
* netCDF supports two floating point word sizes for its files:
* - NC_FLOAT - 32 bit IEEE
* - NC_DOUBLE - 64 bit IEEE
*
*/
#define NC_FLOAT_WORDSIZE 4
#define NC_DOUBLE_WORDSIZE 8
static struct ex_file_item* file_list = NULL;
struct ex_file_item* ex_find_file_item(int exoid)
{
/* Find base filename in case exoid refers to a group */
int base_exoid = (unsigned)exoid & EX_FILE_ID_MASK;
struct ex_file_item *ptr = file_list;
while (ptr) { \
if( ptr->file_id == base_exoid ) break; \
ptr = ptr->next; \
} \
return ptr;
}
int ex_conv_ini( int exoid,
int* comp_wordsize,
int* io_wordsize,
int file_wordsize,
int int64_status,
int is_parallel)
{
char errmsg[MAX_ERR_LENGTH];
struct ex_file_item* new_file;
int filetype = 0;
/*! ex_conv_ini() initializes the floating point conversion process.
*
* \param exoid an integer uniquely identifying the file of interest.
*
* \param comp_wordsize compute floating point word size in the user's code.
* a zero value indicates that the user is requesting the
* default float size for the machine. The appropriate
* value is chosen and returned in comp_wordsize, and used
* in subsequent conversions. a valid but inappropriate
* for this parameter cannot be detected.
*
* \param io_wordsize the desired floating point word size for a netCDF file.
* for an existing file, if this parameter doesn't match
* the word size of data already stored in the file, a
* fatal error is generated. a value of 0 for an existing
* file indicates that the word size of the file was not
* known a priori, so use whatever is in the file. a value
* of 0 for a new file means to use the default size, an
* NC_FLOAT (4 bytes). when a value of 0 is specified the
* actual value used is returned in io_wordsize.
*
* \param file_wordsize floating point word size in an existing netCDF file.
* a value of 0 should be passed in for a new netCDF file.
*
* \param int64_status the flags specifying how integer values should be stored
* on the database and how they should be passes through the
* api functions. See #FileVars for more information.
*
* word size parameters are specified in bytes. valid values are 0, 4, and 8:
*/
/* check to make sure machine word sizes aren't weird */
if ((sizeof(float) != 4 && sizeof(float) != 8) ||
(sizeof(double) != 4 && sizeof(double) != 8 ) )
{
sprintf(errmsg,"Error: unsupported compute word size for file id: %d",
exoid);
ex_err("ex_conv_ini",errmsg,EX_FATAL);
return(EX_FATAL);
}
/* check to see if requested word sizes are valid */
if (!*io_wordsize ) {
if (!file_wordsize )
*io_wordsize = NC_FLOAT_WORDSIZE;
else
*io_wordsize = file_wordsize;
}
else if (*io_wordsize != 4 && *io_wordsize != 8 ) {
sprintf(errmsg,"Error: unsupported I/O word size for file id: %d",exoid);
ex_err("ex_conv_ini",errmsg,EX_FATAL);
return(EX_FATAL);
}
else if (file_wordsize && *io_wordsize != file_wordsize ) {
*io_wordsize = file_wordsize;
sprintf(errmsg,
"Error: invalid I/O word size specified for existing file id: %d",
exoid);
ex_err("ex_conv_ini",errmsg,EX_MSG);
ex_err("ex_conv_ini",
" Requested I/O word size overridden.",
EX_MSG);
}
if (!*comp_wordsize ) {
*comp_wordsize = sizeof(float);
} else if (*comp_wordsize != 4 && *comp_wordsize != 8 ) {
ex_err("ex_conv_ini","Error: invalid compute wordsize specified",EX_FATAL);
return(EX_FATAL);
}
/* Check that the int64_status contains only valid bits... */
{
int valid_int64 = EX_ALL_INT64_API | EX_ALL_INT64_DB;
if ((int64_status & valid_int64) != int64_status) {
sprintf(errmsg,
"Warning: invalid int64_status flag (%d) specified for existing file id: %d. Ignoring invalids",
int64_status, exoid);
ex_err("ex_conv_ini",errmsg,EX_MSG);
}
int64_status &= valid_int64;
}
/* Verify filetype
* 0 -- classic format (NC_FORMAT_CLASSIC -1)
* 1 -- 64 bit classic (NC_FORMAT_64BIT -1)
* 2 -- netcdf4 (NC_FORMAT_NETCDF4 -1)
* 3 -- netcdf4 classic (NC_FORMAT_NETCDF4_CLASSIC -1)
*/
nc_inq_format(exoid, &filetype);
new_file = malloc(sizeof(struct ex_file_item));
new_file->file_id = exoid;
new_file->user_compute_wordsize = *comp_wordsize == 4 ? 0 : 1;
new_file->int64_status = int64_status;
new_file->maximum_name_length = ex_default_max_name_length;
new_file->compression_level = 0;
new_file->shuffle = 0;
new_file->file_type = filetype-1;
new_file->is_parallel = is_parallel;
new_file->next = file_list;
file_list = new_file;
if (*io_wordsize == NC_FLOAT_WORDSIZE)
new_file->netcdf_type_code = NC_FLOAT;
else
new_file->netcdf_type_code = NC_DOUBLE;
return(EX_NOERR);
}
/*............................................................................*/
/*............................................................................*/
void ex_conv_exit( int exoid )
{
/*! ex_conv_exit() takes the structure identified by "exoid" out of the linked
* list which describes the files that ex_conv_array() knows how to convert.
*
* \note it is absolutely necessary for ex_conv_exit() to be called after
* ncclose(), if the parameter used as "exoid" is the id returned from
* an ncopen() or nccreate() call, as netCDF reuses file ids!
* the best place to do this is ex_close(), which is where I did it.
*
* \param exoid integer which uniquely identifies the file of interest.
*/
char errmsg[MAX_ERR_LENGTH];
struct ex_file_item* file = file_list;
struct ex_file_item* prev = NULL;
exerrval = 0; /* clear error code */
while( file ) {
if (file->file_id == exoid ) break;
prev = file;
file = file->next;
}
if (!file ) {
sprintf(errmsg,"Warning: failure to clear file id %d - not in list.",exoid);
ex_err("ex_conv_exit",errmsg,EX_MSG);
exerrval = EX_BADFILEID;
return;
}
if (prev )
prev->next = file->next;
else
file_list = file->next;
free( file );
}
/*............................................................................*/
/*............................................................................*/
nc_type nc_flt_code( int exoid )
{
/* nc_flt_code() returns either NC_FLOAT or NC_DOUBLE, based on the parameters
* with which ex_conv_ini() was called. nc_flt_code() is used as the nc_type
* parameter on ncvardef() calls that define floating point variables.
*
* "exoid" is some integer which uniquely identifies the file of interest.
*/
struct ex_file_item* file = ex_find_file_item(exoid);
exerrval = 0; /* clear error code */
if (!file ) {
char errmsg[MAX_ERR_LENGTH];
exerrval = EX_BADFILEID;
sprintf(errmsg,"Error: unknown file id %d for nc_flt_code().",exoid);
ex_err("nc_flt_code",errmsg,exerrval);
return (nc_type) -1;
}
return file->netcdf_type_code;
}
int ex_int64_status(int exoid)
{
/* ex_int64_status() returns an int that can be tested
against the defines listed below to determine which, if any,
'types' in the database are to be stored as int64 types and which, if any,
types are passed/returned as int64 types in the API
Defines:
EX_MAPS_INT64_DB All maps (id, order, ...) store int64_t values
EX_IDS_INT64_DB All entity ids (sets, blocks, maps) are int64_t values
EX_BULK_INT64_DB
EX_ALL_INT64_DB (EX_MAPS_INT64_DB|EX_IDS_INT64_DB|EX_BULK_INT64_DB)
EX_MAPS_INT64_API All maps (id, order, ...) passed as int64_t values
EX_IDS_INT64_API All entity ids (sets, blocks, maps) are passed as int64_t values
EX_BULK_INT64_API
EX_ALL_INT64_API (EX_MAPS_INT64_API|EX_IDS_INT64_API|EX_BULK_INT64_API)
*/
struct ex_file_item* file = ex_find_file_item(exoid);
exerrval = 0; /* clear error code */
if (!file ) {
char errmsg[MAX_ERR_LENGTH];
exerrval = EX_BADFILEID;
sprintf(errmsg,"Error: unknown file id %d for ex_int64_status().",exoid);
ex_err("ex_int64_status",errmsg,exerrval);
return 0;
}
return file->int64_status;
}
int ex_set_int64_status(int exoid, int mode)
{
/* ex_set_int64_status() sets the value of the INT64_API flags
which specify how integer types are passed/returned as int64 types in the API
Mode can be one of:
0 All are passed as int32_t values.
EX_MAPS_INT64_API All maps (id, order, ...) passed as int64_t values
EX_IDS_INT64_API All entity ids (sets, blocks, maps) are passed as int64_t values
EX_BULK_INT64_API
EX_ALL_INT64_API (EX_MAPS_INT64_API|EX_IDS_INT64_API|EX_BULK_INT64_API)
*/
int api_mode = 0;
int db_mode = 0;
struct ex_file_item* file = ex_find_file_item(exoid);
exerrval = 0; /* clear error code */
if (!file ) {
char errmsg[MAX_ERR_LENGTH];
exerrval = EX_BADFILEID;
sprintf(errmsg,"Error: unknown file id %d for ex_int64_status().",exoid);
ex_err("ex_int64_status",errmsg,exerrval);
return 0;
}
/* Strip of all non-INT64_API values */
api_mode = mode & EX_ALL_INT64_API;
db_mode = file->int64_status & EX_ALL_INT64_DB;
file->int64_status = api_mode | db_mode;
return file->int64_status;
}
int ex_set_option(int exoid, ex_option_type option, int option_value)
{
struct ex_file_item* file = ex_find_file_item(exoid);
if (!file ) {
char errmsg[MAX_ERR_LENGTH];
exerrval = EX_BADFILEID;
sprintf(errmsg,"Error: unknown file id %d for ex_set_option().",exoid);
ex_err("ex_set_option",errmsg,exerrval);
return EX_FATAL;
}
exerrval = 0; /* clear error code */
switch (option) {
case EX_OPT_MAX_NAME_LENGTH:
file->maximum_name_length = option_value;
break;
case EX_OPT_COMPRESSION_TYPE: /* Currently not used. GZip by default */
break;
case EX_OPT_COMPRESSION_LEVEL: /* 0 (disabled/fastest) ... 9 (best/slowest) */
/* Check whether file type supports compression... */
if (file->file_type == 2 || file->file_type == 3) {
int value = option_value;
if (value > 9) value = 9;
if (value < 0) value = 0;
file->compression_level = value;
}
else {
file->compression_level = 0;
}
break;
case EX_OPT_COMPRESSION_SHUFFLE: /* 0 (disabled); 1 (enabled) */
file->shuffle = option_value != 0 ? 1 : 0;
break;
case EX_OPT_INTEGER_SIZE_API: /* See *_INT64_* values above */
ex_set_int64_status(exoid, option_value);
break;
case EX_OPT_INTEGER_SIZE_DB: /* (query only) */
break;
default:
{
char errmsg[MAX_ERR_LENGTH];
exerrval = EX_FATAL;
sprintf(errmsg,"Error: invalid option %d for ex_set_option().",(int)option);
ex_err("ex_set_option",errmsg,exerrval);
return EX_FATAL;
}
}
return EX_NOERR;
}
int ex_comp_ws( int exoid )
{
/*!
* ex_comp_ws() returns 4 (i.e. sizeof(float)) or 8 (i.e. sizeof(double)),
* depending on the value of floating point word size used to initialize
* the conversion facility for this file id (exoid).
* \param exoid integer which uniquely identifies the file of interest.
*/
struct ex_file_item* file = ex_find_file_item(exoid);
exerrval = 0; /* clear error code */
if (!file ) {
char errmsg[MAX_ERR_LENGTH];
exerrval = EX_BADFILEID;
sprintf(errmsg,"Error: unknown file id %d",exoid);
ex_err("ex_comp_ws",errmsg,exerrval);
return(EX_FATAL);
}
/* Stored as 0 for 4-byte; 1 for 8-byte */
return (file->user_compute_wordsize+1)*4;
}
int ex_is_parallel(int exoid)
{
/*! ex_is_parallel() returns 1 (true) or 0 (false) depending on whether
* the file was opened in parallel or serial/file-per-processor mode.
* Note that in this case parallel assumes the output of a single file,
* not a parallel run using file-per-processor.
*/
struct ex_file_item* file = ex_find_file_item(exoid);
exerrval = 0; /* clear error code */
if (!file ) {
char errmsg[MAX_ERR_LENGTH];
exerrval = EX_BADFILEID;
sprintf(errmsg,"Error: unknown file id %d",exoid);
ex_err("ex_is_parallel",errmsg,exerrval);
return(EX_FATAL);
}
/* Stored as 1 for parallel, 0 for serial or file-per-processor */
return file->is_parallel;
}
exodusii-6.02.dfsg.1/exodus/cbind/src/ex_copy.c 0000664 0000000 0000000 00000070736 12253122131 0021347 0 ustar 00root root 0000000 0000000 /*
* Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
* DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
* retains certain rights in this software.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* * Neither the name of Sandia Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#include
#include
#include
#include "exodusII.h"
#include "exodusII_int.h"
/*! \cond INTERNAL */
struct ncdim { /* dimension */
char name[MAX_VAR_NAME_LENGTH];
size_t size;
};
struct ncvar { /* variable */
char name[MAX_VAR_NAME_LENGTH];
nc_type type;
int ndims;
int dims[NC_MAX_VAR_DIMS];
int natts;
};
struct ncatt { /* attribute */
int var;
char name[MAX_VAR_NAME_LENGTH];
nc_type type;
size_t len;
void *val;
};
static size_t type_size(nc_type type);
static int cpy_att (int, int, int, int);
static int cpy_var_def(int, int, int, char*);
static int cpy_var_val(int, int, char*);
static int cpy_coord_def(int in_id,int out_id,int rec_dim_id,
char *var_nm, int in_large, int out_large);
static int cpy_coord_val(int in_id,int out_id,char *var_nm,
int in_large, int out_large);
static void update_internal_structs( int, ex_inquiry, struct list_item** );
/*! \endcond */
/*!
\undoc
* efficiently copies all non-transient information (attributes,
* dimensions, and variables from an opened EXODUS file to another
* opened EXODUS file. Will not overwrite a dimension or variable
* already defined in the new file.
* \param in_exoid exodus file id for input file
* \param out_exoid exodus file id for output file
*/
int ex_copy (int in_exoid, int out_exoid)
{
int status;
int ndims; /* number of dimensions */
int nvars; /* number of variables */
int ngatts; /* number of global attributes */
int recdimid; /* id of unlimited dimension */
int dimid; /* dimension id */
int dim_out_id; /* dimension id */
int varid; /* variable id */
int var_out_id; /* variable id */
struct ncvar var; /* variable */
struct ncatt att; /* attribute */
nc_type att_type = NC_NAT;
size_t att_len = 0;
size_t i;
size_t numrec;
size_t dim_sz;
char dim_nm[NC_MAX_NAME];
int in_large, out_large;
exerrval = 0; /* clear error code */
/*
* Get exodus_large_model setting on both input and output
* databases so know how to handle coordinates.
*/
in_large = ex_large_model(in_exoid);
out_large = ex_large_model(out_exoid);
/*
* get number of dimensions, number of variables, number of global
* atts, and dimension id of unlimited dimension, if any
*/
nc_inq(in_exoid, &ndims, &nvars, &ngatts, &recdimid);
nc_inq_dimlen(in_exoid, recdimid, &numrec);
/* put output file into define mode */
nc_redef(out_exoid);
/* copy global attributes */
for (i = 0; i < (size_t)ngatts; i++) {
nc_inq_attname(in_exoid, NC_GLOBAL, i, att.name);
/* if attribute exists in output file, don't overwrite it; compute
* word size, I/O word size etc. are global attributes stored when
* file is created with ex_create; we don't want to overwrite those
*/
if ((status = nc_inq_att(out_exoid, NC_GLOBAL, att.name, &att.type, &att.len)) != NC_NOERR) {
/* The "last_written_time" attribute is a special attribute
used by the Sierra IO system to determine whether a
timestep has been fully written to the database in order to
try to detect a database crash that happens in the middle
of a database output step. Don't want to copy that attribute.
*/
if (strcmp(att.name,"last_written_time") != 0) {
/* attribute doesn't exist in new file so OK to create it */
nc_copy_att(in_exoid,NC_GLOBAL,att.name,out_exoid,NC_GLOBAL);
}
}
}
/* copy dimensions */
/* Get the dimension sizes and names */
for(dimid = 0; dimid < ndims; dimid++){
nc_inq_dim(in_exoid,dimid,dim_nm,&dim_sz);
/* If the dimension isn't one we specifically don't want
* to copy (ie, number of QA or INFO records) and it
* hasn't been defined, copy it */
if ( ( strcmp(dim_nm,DIM_NUM_QA) != 0) &&
( strcmp(dim_nm,DIM_NUM_INFO) != 0) &&
( strcmp(dim_nm,DIM_NUM_NOD_VAR) != 0) &&
( strcmp(dim_nm,DIM_NUM_EDG_VAR) != 0) &&
( strcmp(dim_nm,DIM_NUM_FAC_VAR) != 0) &&
( strcmp(dim_nm,DIM_NUM_ELE_VAR) != 0) &&
( strcmp(dim_nm,DIM_NUM_NSET_VAR) != 0) &&
( strcmp(dim_nm,DIM_NUM_ESET_VAR) != 0) &&
( strcmp(dim_nm,DIM_NUM_FSET_VAR) != 0) &&
( strcmp(dim_nm,DIM_NUM_SSET_VAR) != 0) &&
( strcmp(dim_nm,DIM_NUM_ELSET_VAR) != 0) &&
( strcmp(dim_nm,DIM_NUM_GLO_VAR) != 0) ) {
/* See if the dimension has already been defined */
status = nc_inq_dimid(out_exoid, dim_nm, &dim_out_id);
if(status != NC_NOERR) {
if(dimid != recdimid) {
nc_def_dim(out_exoid, dim_nm, dim_sz, &dim_out_id);
} else {
nc_def_dim(out_exoid, dim_nm, NC_UNLIMITED, &dim_out_id);
} /* end else */
} /* end if */
} /* end if */
} /* end loop over dim */
/* DIM_STR_NAME is a newly added dimension required by current API.
* If it doesn't exist on the source database, we need to add it to
* the target...
*/
status = nc_inq_dimid(in_exoid, DIM_STR_NAME, &dim_out_id);
if (status != NC_NOERR) {
/* Not found; set to default value of 32+1. */
nc_def_dim(out_exoid, DIM_STR_NAME, 33, &dim_out_id);
}
status = nc_inq_att(in_exoid, NC_GLOBAL, ATT_MAX_NAME_LENGTH, &att_type, &att_len);
if (status != NC_NOERR) {
int max_so_far = 32;
nc_put_att_int(out_exoid, NC_GLOBAL, ATT_MAX_NAME_LENGTH, NC_INT, 1, &max_so_far);
}
/* copy variable definitions and variable attributes */
for (varid = 0; varid < nvars; varid++) {
nc_inq_var(in_exoid, varid, var.name, &var.type, &var.ndims,
var.dims, &var.natts);
/* we don't want to copy some variables because there is not a
* simple way to add to them;
* QA records, info records and all results variables (nodal
* element, and global results) are examples
*/
if ( ( strcmp(var.name,VAR_QA_TITLE) != 0) &&
( strcmp(var.name,VAR_INFO) != 0) &&
( strcmp(var.name,VAR_EBLK_TAB) != 0) &&
( strcmp(var.name,VAR_FBLK_TAB) != 0) &&
( strcmp(var.name,VAR_ELEM_TAB) != 0) &&
( strcmp(var.name,VAR_ELSET_TAB) != 0) &&
( strcmp(var.name,VAR_SSET_TAB) != 0) &&
( strcmp(var.name,VAR_FSET_TAB) != 0) &&
( strcmp(var.name,VAR_ESET_TAB) != 0) &&
( strcmp(var.name,VAR_NSET_TAB) != 0) &&
( strcmp(var.name,VAR_NAME_GLO_VAR) != 0) &&
( strcmp(var.name,VAR_GLO_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_NOD_VAR) != 0) &&
( strcmp(var.name,VAR_NOD_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_EDG_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_FAC_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_ELE_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_NSET_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_ESET_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_FSET_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_SSET_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_ELSET_VAR) != 0)&&
( strncmp(var.name,"vals_elset_var", 14) != 0) &&
( strncmp(var.name,"vals_sset_var", 13) != 0) &&
( strncmp(var.name,"vals_fset_var", 13) != 0) &&
( strncmp(var.name,"vals_eset_var", 13) != 0) &&
( strncmp(var.name,"vals_nset_var", 13) != 0) &&
( strncmp(var.name,"vals_nod_var", 12) != 0) &&
( strncmp(var.name,"vals_edge_var", 13) != 0) &&
( strncmp(var.name,"vals_face_var", 13) != 0) &&
( strncmp(var.name,"vals_elem_var", 13) != 0) ) {
if (strncmp(var.name,VAR_COORD,5) == 0) {
var_out_id = cpy_coord_def (in_exoid, out_exoid, recdimid, var.name,
in_large, out_large);
} else {
var_out_id = cpy_var_def (in_exoid, out_exoid, recdimid, var.name);
}
/* copy the variable's attributes */
(void) cpy_att (in_exoid, out_exoid, varid, var_out_id);
}
}
/* take the output file out of define mode */
nc_enddef (out_exoid);
/* output variable data */
for (varid = 0; varid < nvars; varid++) {
nc_inq_var(in_exoid, varid, var.name, &var.type, &var.ndims,
var.dims, &var.natts);
/* we don't want to copy some variable values;
* QA records and info records shouldn't be copied because there
* isn't an easy way to add to them;
* the time value array ("time_whole") and any results variables
* (nodal, elemental, or global) shouldn't be copied
*/
if ( ( strcmp(var.name,VAR_QA_TITLE) != 0) &&
( strcmp(var.name,VAR_INFO) != 0) &&
( strcmp(var.name,VAR_EBLK_TAB) != 0) &&
( strcmp(var.name,VAR_FBLK_TAB) != 0) &&
( strcmp(var.name,VAR_ELEM_TAB) != 0) &&
( strcmp(var.name,VAR_ELSET_TAB) != 0) &&
( strcmp(var.name,VAR_SSET_TAB) != 0) &&
( strcmp(var.name,VAR_FSET_TAB) != 0) &&
( strcmp(var.name,VAR_ESET_TAB) != 0) &&
( strcmp(var.name,VAR_NSET_TAB) != 0) &&
( strcmp(var.name,VAR_NAME_GLO_VAR) != 0) &&
( strcmp(var.name,VAR_GLO_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_NOD_VAR) != 0) &&
( strcmp(var.name,VAR_NOD_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_EDG_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_FAC_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_ELE_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_NSET_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_ESET_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_FSET_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_SSET_VAR) != 0) &&
( strcmp(var.name,VAR_NAME_ELSET_VAR) != 0) &&
( strncmp(var.name,"vals_elset_var", 14) != 0)&&
( strncmp(var.name,"vals_sset_var", 13) != 0)&&
( strncmp(var.name,"vals_fset_var", 13) != 0)&&
( strncmp(var.name,"vals_eset_var", 13) != 0)&&
( strncmp(var.name,"vals_nset_var", 13) != 0)&&
( strncmp(var.name,"vals_nod_var", 12) != 0) &&
( strncmp(var.name,"vals_edge_var",13) != 0) &&
( strncmp(var.name,"vals_face_var",13) != 0) &&
( strncmp(var.name,"vals_elem_var",13) != 0) &&
( strcmp(var.name,VAR_WHOLE_TIME) != 0) ) {
if (strncmp(var.name,VAR_COORD,5) == 0) {
(void) cpy_coord_val (in_exoid, out_exoid, var.name,
in_large, out_large);
} else {
(void) cpy_var_val (in_exoid, out_exoid, var.name);
}
}
}
/* ensure internal data structures are updated */
/* if number of blocks > 0 */
update_internal_structs( out_exoid, EX_INQ_EDGE_BLK, ex_get_counter_list(EX_EDGE_BLOCK));
update_internal_structs( out_exoid, EX_INQ_FACE_BLK, ex_get_counter_list(EX_FACE_BLOCK));
update_internal_structs( out_exoid, EX_INQ_ELEM_BLK, ex_get_counter_list(EX_ELEM_BLOCK));
/* if number of sets > 0 */
update_internal_structs( out_exoid, EX_INQ_NODE_SETS, ex_get_counter_list(EX_NODE_SET));
update_internal_structs( out_exoid, EX_INQ_EDGE_SETS, ex_get_counter_list(EX_EDGE_SET));
update_internal_structs( out_exoid, EX_INQ_FACE_SETS, ex_get_counter_list(EX_FACE_SET));
update_internal_structs( out_exoid, EX_INQ_SIDE_SETS, ex_get_counter_list(EX_SIDE_SET));
update_internal_structs( out_exoid, EX_INQ_ELEM_SETS, ex_get_counter_list(EX_ELEM_SET));
/* if number of maps > 0 */
update_internal_structs( out_exoid, EX_INQ_NODE_MAP, ex_get_counter_list(EX_NODE_MAP));
update_internal_structs( out_exoid, EX_INQ_EDGE_MAP, ex_get_counter_list(EX_EDGE_MAP));
update_internal_structs( out_exoid, EX_INQ_FACE_MAP, ex_get_counter_list(EX_FACE_MAP));
update_internal_structs( out_exoid, EX_INQ_ELEM_MAP, ex_get_counter_list(EX_ELEM_MAP));
return(EX_NOERR);
}
/*! \cond INTERNAL */
int cpy_att(int in_id,int out_id,int var_in_id,int var_out_id)
/*
int in_id: input netCDF input-file ID
int out_id: input netCDF output-file ID
int var_in_id: input netCDF input-variable ID
int var_out_id: input netCDF output-variable ID
*/
{
/* Routine to copy all the attributes from the input netCDF
file to the output netCDF file. If var_in_id == NC_GLOBAL,
then the global attributes are copied. Otherwise the variable's
attributes are copied. */
int idx;
int nbr_att;
if(var_in_id == NC_GLOBAL) {
nc_inq_natts(in_id,&nbr_att);
} else {
nc_inq_varnatts(in_id, var_in_id, &nbr_att);
}
/* Get the attributes names, types, lengths, and values */
for (idx=0; idx 1) {
nc_def_var(out_id, VAR_COORD_Y, nc_flt_code(out_id), nbr_dim, dim_out_id, &var_out_id);
ex_compress_variable(out_id, var_out_id, 2);
}
if (spatial_dim > 2) {
nc_def_var(out_id, VAR_COORD_Z, nc_flt_code(out_id), nbr_dim, dim_out_id, &var_out_id);
ex_compress_variable(out_id, var_out_id, 2);
}
}
if (in_large == 1 && out_large == 0) {
/* input file has coordx, coordy, coordz (if 3d); output will only
have "coord". See if is already defined in output file. */
status = nc_inq_varid(out_id, VAR_COORD, &var_out_id);
if (status == NC_NOERR)
return NC_NOERR; /* already defined in output file */
/* Get dimid of the spatial dimension and num_nodes dimensions in output file... */
nc_inq_dimid(out_id, DIM_NUM_DIM, &dim_out_id[0]);
nc_inq_dimid(out_id, DIM_NUM_NODES, &dim_out_id[1]);
/* Define the variable in the output file */
/* Define according to the EXODUS file's IO_word_size */
nbr_dim = 2;
nc_def_var(out_id, VAR_COORD, nc_flt_code(out_id), nbr_dim, dim_out_id, &var_out_id);
}
return var_out_id;
}
/*! \internal */
int cpy_var_def(int in_id,int out_id,int rec_dim_id,char *var_nm)
/*
int in_id: input netCDF input-file ID
int out_id: input netCDF output-file ID
int rec_dim_id: input input-file record dimension ID
char *var_nm: input variable name
int cpy_var_def(): output output-file variable ID
*/
{
/* Routine to copy the variable metadata from an input netCDF file
* to an output netCDF file.
*/
int status;
int *dim_in_id;
int *dim_out_id;
int idx;
int nbr_dim;
int var_in_id;
int var_out_id;
nc_type var_type;
/* See if the requested variable is already in the output file. */
status = nc_inq_varid(out_id, var_nm, &var_out_id);
if(status == NC_NOERR)
return var_out_id;
/* See if the requested variable is in the input file. */
nc_inq_varid(in_id, var_nm, &var_in_id);
/* Get the type of the variable and the number of dimensions. */
nc_inq_vartype (in_id, var_in_id, &var_type);
nc_inq_varndims(in_id, var_in_id, &nbr_dim);
/* Recall:
1. The dimensions must be defined before the variable.
2. The variable must be defined before the attributes. */
/* Allocate space to hold the dimension IDs */
dim_in_id=malloc(nbr_dim*sizeof(int));
dim_out_id=malloc(nbr_dim*sizeof(int));
/* Get the dimension IDs */
nc_inq_vardimid(in_id, var_in_id, dim_in_id);
/* Get the dimension sizes and names */
for(idx=0;idx 0) {
for (i=0; i