25525 lines
1 MiB
25525 lines
1 MiB
diff --git a/ThirdParty/exodusII/CMakeLists.txt b/ThirdParty/exodusII/CMakeLists.txt
|
|
index 7a0cefbef0..8d1a03caf8 100644
|
|
--- a/ThirdParty/exodusII/CMakeLists.txt
|
|
+++ b/ThirdParty/exodusII/CMakeLists.txt
|
|
@@ -6,9 +6,9 @@ vtk_module_third_party_internal(
|
|
SPDX_COPYRIGHT_TEXT
|
|
"Copyright (c) 2005-2017 National Technology & Engineering Solutions of Sandia, LLC (NTESS)"
|
|
SPDX_DOWNLOAD_LOCATION
|
|
- "git+https://gitlab.kitware.com/third-party/seacas.git@exodus/for/vtk-20220706-v2021-05-12#packages/seacas/libraries/exodus"
|
|
+ "git+https://gitlab.kitware.com/third-party/seacas.git@exodus/for/vtk-20250313-v2025-02-27#packages/seacas/libraries/exodus"
|
|
VERSION
|
|
- "8.11f"
|
|
+ "9.0.4"
|
|
STANDARD_INCLUDE_DIRS)
|
|
|
|
#configure_file(
|
|
diff --git a/ThirdParty/exodusII/Testing/CMakeLists.txt b/ThirdParty/exodusII/Testing/CMakeLists.txt
|
|
new file mode 100644
|
|
index 0000000000..35f9732a93
|
|
--- /dev/null
|
|
+++ b/ThirdParty/exodusII/Testing/CMakeLists.txt
|
|
@@ -0,0 +1 @@
|
|
+add_subdirectory(Cxx)
|
|
diff --git a/ThirdParty/exodusII/Testing/Cxx/CMakeLists.txt b/ThirdParty/exodusII/Testing/Cxx/CMakeLists.txt
|
|
new file mode 100644
|
|
index 0000000000..e281d79fbb
|
|
--- /dev/null
|
|
+++ b/ThirdParty/exodusII/Testing/Cxx/CMakeLists.txt
|
|
@@ -0,0 +1,4 @@
|
|
+vtk_add_test_cxx(vtkexodusIICxxTests tests
|
|
+ NO_DATA NO_VALID NO_OUTPUT
|
|
+ TestIncludeExodusII.cxx)
|
|
+vtk_test_cxx_executable(vtkexodusIICxxTests tests)
|
|
diff --git a/ThirdParty/exodusII/Testing/Cxx/TestIncludeExodusII.cxx b/ThirdParty/exodusII/Testing/Cxx/TestIncludeExodusII.cxx
|
|
new file mode 100644
|
|
index 0000000000..ff19a55e32
|
|
--- /dev/null
|
|
+++ b/ThirdParty/exodusII/Testing/Cxx/TestIncludeExodusII.cxx
|
|
@@ -0,0 +1,8 @@
|
|
+#include "vtk_exodusII.h"
|
|
+
|
|
+#include <cstdlib>
|
|
+
|
|
+int TestIncludeExodusII(int /*argc*/, char* /*argv*/[])
|
|
+{
|
|
+ return EXIT_SUCCESS;
|
|
+}
|
|
diff --git a/ThirdParty/exodusII/update.sh b/ThirdParty/exodusII/update.sh
|
|
index b21a8993d0..be847004c6 100755
|
|
--- a/ThirdParty/exodusII/update.sh
|
|
+++ b/ThirdParty/exodusII/update.sh
|
|
@@ -8,7 +8,7 @@ readonly name="exodusII"
|
|
readonly ownership="Seacas Upstream <kwrobot@kitware.com>"
|
|
readonly subtree="ThirdParty/$name/vtk$name"
|
|
readonly repo="https://gitlab.kitware.com/third-party/seacas.git"
|
|
-readonly tag="exodus/for/vtk-20220706-v2021-05-12"
|
|
+readonly tag="exodus/for/vtk-20250313-v2025-02-27"
|
|
readonly paths="
|
|
packages/seacas/libraries/exodus/CMakeLists.vtk.txt
|
|
packages/seacas/libraries/exodus/cmake/exodus_config.h.in
|
|
diff --git a/ThirdParty/exodusII/vtk.module b/ThirdParty/exodusII/vtk.module
|
|
index 9234ddae18..dd40275923 100644
|
|
--- a/ThirdParty/exodusII/vtk.module
|
|
+++ b/ThirdParty/exodusII/vtk.module
|
|
@@ -11,4 +11,6 @@ DEPENDS
|
|
VTK::netcdf
|
|
OPTIONAL_DEPENDS
|
|
VTK::mpi
|
|
+TEST_DEPENDS
|
|
+ VTK::TestingCore
|
|
THIRD_PARTY
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/CMakeLists.txt b/ThirdParty/exodusII/vtkexodusII/CMakeLists.txt
|
|
index cc46acc7c9..e3b10bb915 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/CMakeLists.txt
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/CMakeLists.txt
|
|
@@ -119,7 +119,11 @@ set(sources
|
|
src/deprecated/ex_put_var_param.c
|
|
src/deprecated/ex_put_var_tab.c
|
|
|
|
+ src/ex__get_glob_vars_multi_time.c
|
|
+ src/ex__get_nodal_var_multi_time.c
|
|
src/ex__put_homogenous_block_params.c
|
|
+ src/ex__put_nodal_var_multi_time.c
|
|
+
|
|
src/ex_add_attr.c
|
|
src/ex_close.c
|
|
src/ex_conv.c
|
|
@@ -129,6 +133,7 @@ set(sources
|
|
src/ex_create_par.c
|
|
src/ex_cvt_nodes_to_sides.c
|
|
src/ex_err.c
|
|
+ src/ex_field_utils.c
|
|
src/ex_get_all_times.c
|
|
src/ex_get_assemblies.c
|
|
src/ex_get_assembly.c
|
|
@@ -139,6 +144,7 @@ set(sources
|
|
src/ex_get_blob.c
|
|
src/ex_get_blobs.c
|
|
src/ex_get_block.c
|
|
+ src/ex_get_block_id_map.c
|
|
src/ex_get_block_param.c
|
|
src/ex_get_block_params.c
|
|
src/ex_get_cmap_params.c
|
|
@@ -152,6 +158,7 @@ set(sources
|
|
src/ex_get_elem_cmap.c
|
|
src/ex_get_elem_type.c
|
|
src/ex_get_entity_count_per_polyhedra.c
|
|
+ src/ex_get_field_metadata.c
|
|
src/ex_get_glob_var_time_int.c
|
|
src/ex_get_glob_vars_int.c
|
|
src/ex_get_group_id.c
|
|
@@ -168,7 +175,6 @@ set(sources
|
|
src/ex_get_map_param.c
|
|
src/ex_get_name.c
|
|
src/ex_get_names.c
|
|
- src/ex_get_nodal_var_int.c
|
|
src/ex_get_nodal_var_time_int.c
|
|
src/ex_get_node_cmap.c
|
|
src/ex_get_ns_param_global.c
|
|
@@ -206,6 +212,7 @@ set(sources
|
|
src/ex_get_time.c
|
|
src/ex_get_truth_table.c
|
|
src/ex_get_var.c
|
|
+ src/ex_get_var_multi_time.c
|
|
src/ex_get_var_time.c
|
|
src/ex_get_variable_name.c
|
|
src/ex_get_variable_names.c
|
|
@@ -239,6 +246,7 @@ set(sources
|
|
src/ex_put_eb_info_global.c
|
|
src/ex_put_elem_cmap.c
|
|
src/ex_put_entity_count_per_polyhedra.c
|
|
+ src/ex_put_field_metadata.c
|
|
src/ex_put_id_map.c
|
|
src/ex_put_info.c
|
|
src/ex_put_init.c
|
|
@@ -252,7 +260,6 @@ set(sources
|
|
src/ex_put_name.c
|
|
src/ex_put_names.c
|
|
src/ex_put_nodal_var.c
|
|
- src/ex_put_nodal_var_int.c
|
|
src/ex_put_node_cmap.c
|
|
src/ex_put_ns_param_global.c
|
|
src/ex_put_num_map.c
|
|
@@ -285,6 +292,7 @@ set(sources
|
|
src/ex_put_time.c
|
|
src/ex_put_truth_table.c
|
|
src/ex_put_var.c
|
|
+ src/ex_put_var_multi_time.c
|
|
src/ex_put_variable_name.c
|
|
src/ex_put_variable_names.c
|
|
src/ex_put_variable_param.c
|
|
@@ -317,9 +325,10 @@ set(headers
|
|
vtk_module_find_package(PACKAGE Threads)
|
|
|
|
vtk_module_add_module(VTK::exodusII
|
|
+ HEADER_DIRECTORIES
|
|
SOURCES ${sources}
|
|
HEADERS ${headers}
|
|
- HEADERS_SUBDIR "vtkexodusII/include")
|
|
+ HEADERS_SUBDIR "vtkexodusII")
|
|
vtk_module_definitions(VTK::exodusII
|
|
PRIVATE
|
|
exoIIc_EXPORTS)
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/README b/ThirdParty/exodusII/vtkexodusII/README
|
|
index ff04ca7ae8..411da85e3a 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/README
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/README
|
|
@@ -1,3 +1,6 @@
|
|
+
|
|
+See SEACAS (including Exodus) documentation at http://sandialabs.github.io/seacas-docs/
|
|
+
|
|
========================================================================
|
|
CONTACT:
|
|
|
|
@@ -5,23 +8,7 @@ Greg Sjaardema,
|
|
Sandia National Laboratories,
|
|
gdsjaar@sandia.gov, gsjaardema@gmail.com
|
|
|
|
-========================================================================
|
|
-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 NTESS Copyright Notice.
|
|
-2. The BSD License.
|
|
-
|
|
We appreciate feedback from users of this package. Please send
|
|
comments, suggestions, and bug reports to Greg Sjaardema
|
|
<gdsjaar@sandia.gov>, <gsjaardema@gmail.com>
|
|
|
|
-Please identify the version of the package.
|
|
-
|
|
-========================================================================
|
|
-BUILDING
|
|
-
|
|
-See instructions at the top-level of the repository in README.md
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/cmake/exodus_config.h.in b/ThirdParty/exodusII/vtkexodusII/cmake/exodus_config.h.in
|
|
index e4dcd51f27..c8e303978d 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/cmake/exodus_config.h.in
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/cmake/exodus_config.h.in
|
|
@@ -1,7 +1,5 @@
|
|
-#ifndef EXODUS_CONFIG_H
|
|
-#define EXODUS_CONFIG_H
|
|
+#pragma once
|
|
#cmakedefine EXODUS_THREADSAFE
|
|
|
|
@SEACAS_DEPRECATED_DECLARATIONS@
|
|
|
|
-#endif
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/include/exodusII.h b/ThirdParty/exodusII/vtkexodusII/include/exodusII.h
|
|
index b4fa884ab5..051f7ad23d 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/include/exodusII.h
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/include/exodusII.h
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2025 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -11,9 +11,7 @@
|
|
* exodusII.h - Exodus II API include file
|
|
*
|
|
*****************************************************************************/
|
|
-
|
|
-#ifndef EXODUSII_H
|
|
-#define EXODUSII_H
|
|
+#pragma once
|
|
|
|
#include "exodus_config.h"
|
|
#include "exodusII_cfg.h"
|
|
@@ -53,24 +51,27 @@
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
|
|
+/** Maximum length of name permitted by NetCDF */
|
|
+#define EX_MAX_NAME NC_MAX_NAME
|
|
+
|
|
#ifndef NC_INT64
|
|
#error "NetCDF version 4.1.2 or later is required."
|
|
#endif
|
|
|
|
/* EXODUS version number */
|
|
-#define EXODUS_VERSION "8.11"
|
|
-#define EXODUS_VERSION_MAJOR 8
|
|
-#define EXODUS_VERSION_MINOR 11
|
|
-#define EXODUS_RELEASE_DATE "March 15, 2021"
|
|
+#define EXODUS_VERSION "9.04"
|
|
+#define EXODUS_VERSION_MAJOR 9
|
|
+#define EXODUS_VERSION_MINOR 4
|
|
+#define EXODUS_RELEASE_DATE "November 5, 2024"
|
|
|
|
-#define EX_API_VERS 8.11f
|
|
+#define EX_API_VERS 9.04f
|
|
#define EX_API_VERS_NODOT (100 * EXODUS_VERSION_MAJOR + EXODUS_VERSION_MINOR)
|
|
-#define EX_VERS EX_API_VERS
|
|
+#define EX_VERS EX_API_VERS
|
|
|
|
/* Retained for backward compatibility */
|
|
-#define NEMESIS_API_VERSION 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
|
|
+#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.
|
|
@@ -98,27 +99,27 @@ extern "C" {
|
|
*/
|
|
/* Modes for ex_open */
|
|
#define EX_WRITE 0x0001 /**< ex_open(): open existing file for appending. */
|
|
-#define EX_READ 0x0002 /**< ex_open(): open file for reading (default) */
|
|
-
|
|
-#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_64BIT_OFFSET 0x0020 /**< enable mods that permit storage of larger models */
|
|
-#define EX_LARGE_MODEL EX_64BIT_OFFSET /**< enable mods that permit storage of larger models */
|
|
-#define EX_64BIT_DATA 0x400000 /**< CDF-5 format: classic model but 64 bit dimensions and sizes */
|
|
-#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 */
|
|
+#define EX_READ 0x0002 /**< ex_open(): open file for reading (default) */
|
|
+
|
|
+#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_64BIT_OFFSET 0x0020 /**< enable mods that permit storage of larger models */
|
|
+#define EX_LARGE_MODEL EX_64BIT_OFFSET /**< enable mods that permit storage of larger models */
|
|
+#define EX_64BIT_DATA 0x400000 /**< CDF-5 format: classic model but 64 bit dimensions and sizes */
|
|
+#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 */
|
|
|
|
#define EX_DISKLESS 0x100000 /**< Experimental */
|
|
-#define EX_MMAP 0x200000 /**< Experimental */
|
|
+#define EX_MMAP 0x200000 /**< Experimental */
|
|
|
|
/* 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_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 \
|
|
*/
|
|
@@ -126,7 +127,7 @@ extern "C" {
|
|
(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_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 */
|
|
@@ -135,9 +136,9 @@ extern "C" {
|
|
EX_INQ_INT64_API) /**< All of the above... */
|
|
|
|
/* Parallel IO mode flags... */
|
|
-#define EX_MPIIO 0x20000
|
|
+#define EX_MPIIO 0x20000
|
|
#define EX_MPIPOSIX 0x40000 /**< \deprecated As of libhdf5 1.8.13. */
|
|
-#define EX_PNETCDF 0x80000
|
|
+#define EX_PNETCDF 0x80000
|
|
|
|
/** @}*/
|
|
|
|
@@ -218,6 +219,7 @@ enum ex_inquiry {
|
|
EX_INQ_NUM_ELEM_SET_VAR = 69, /**< number of element set variables */
|
|
EX_INQ_NUM_SIDE_SET_VAR = 70, /**< number of sideset variables */
|
|
EX_INQ_NUM_GLOBAL_VAR = 71, /**< number of global variables */
|
|
+ EX_INQ_FILE_FORMAT = 72, /**< netCDF file format */
|
|
EX_INQ_INVALID = -1
|
|
};
|
|
|
|
@@ -245,9 +247,11 @@ NetCDF-4.?.? and later
|
|
enum ex_option_type {
|
|
EX_OPT_MAX_NAME_LENGTH =
|
|
1, /**< 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_TYPE, /**< Default is gzip */
|
|
+ EX_OPT_COMPRESSION_LEVEL, /**< Range depends on compression type. */
|
|
EX_OPT_COMPRESSION_SHUFFLE, /**< 1 if enabled, 0 if disabled */
|
|
+ EX_OPT_QUANTIZE_NSD, /**< if > 0, Number of significant digits to retain in lossy quantize
|
|
+ compression */
|
|
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 the database. */
|
|
@@ -258,6 +262,8 @@ enum ex_compression_type {
|
|
EX_COMPRESS_ZLIB = 1, /**< Use ZLIB-based compression (if available) */
|
|
EX_COMPRESS_GZIP = 1, /**< Same as ZLIB, but typical alias used */
|
|
EX_COMPRESS_SZIP, /**< Use SZIP-based compression (if available) */
|
|
+ EX_COMPRESS_ZSTD, /**< Use ZStandard compression (if available) */
|
|
+ EX_COMPRESS_BZ2, /**< Use BZ2 / Bzip2 compression (if available) */
|
|
};
|
|
typedef enum ex_compression_type ex_compression_type;
|
|
/** @}*/
|
|
@@ -288,6 +294,98 @@ enum ex_entity_type {
|
|
};
|
|
typedef enum ex_entity_type ex_entity_type;
|
|
|
|
+enum ex_field_type {
|
|
+ EX_FIELD_TYPE_INVALID = 0,
|
|
+ EX_FIELD_TYPE_USER_DEFINED,
|
|
+ EX_FIELD_TYPE_SEQUENCE,
|
|
+ EX_BASIS,
|
|
+ EX_QUADRATURE,
|
|
+ EX_SCALAR,
|
|
+ EX_VECTOR_1D,
|
|
+ EX_VECTOR_2D,
|
|
+ EX_VECTOR_3D,
|
|
+ EX_QUATERNION_2D,
|
|
+ EX_QUATERNION_3D,
|
|
+ EX_FULL_TENSOR_36,
|
|
+ EX_FULL_TENSOR_32,
|
|
+ EX_FULL_TENSOR_22,
|
|
+ EX_FULL_TENSOR_16,
|
|
+ EX_FULL_TENSOR_12,
|
|
+ EX_SYM_TENSOR_33,
|
|
+ EX_SYM_TENSOR_31,
|
|
+ EX_SYM_TENSOR_21,
|
|
+ EX_SYM_TENSOR_13,
|
|
+ EX_SYM_TENSOR_11,
|
|
+ EX_SYM_TENSOR_10,
|
|
+ EX_ASYM_TENSOR_03,
|
|
+ EX_ASYM_TENSOR_02,
|
|
+ EX_ASYM_TENSOR_01,
|
|
+ EX_MATRIX_2X2,
|
|
+ EX_MATRIX_3X3
|
|
+};
|
|
+typedef enum ex_field_type ex_field_type;
|
|
+
|
|
+#define EX_MAX_FIELD_NESTING 2
|
|
+typedef struct ex_field
|
|
+{
|
|
+ ex_entity_type entity_type;
|
|
+ int64_t entity_id;
|
|
+ char name[EX_MAX_NAME + 1]; /* Name of the field */
|
|
+ /*
|
|
+ * For basis, user, quadrature -- what is name of the subtype. This
|
|
+ * is a comma-separated list of `nesting` names Use two consecutive
|
|
+ * commas for an empty type_name. Leave empty if no type_names
|
|
+ */
|
|
+ int nesting; /* Number of composite fields (vector at each quadrature point = 2) */
|
|
+ char type_name[EX_MAX_NAME + 1];
|
|
+ ex_field_type type[EX_MAX_FIELD_NESTING]; /* ex_field_type of each nested field */
|
|
+ int cardinality[EX_MAX_FIELD_NESTING]; /* 0 to calculate based on type */
|
|
+ char component_separator[EX_MAX_FIELD_NESTING]; /* empty defaults to '_'; */
|
|
+ char suffices[EX_MAX_NAME + 1]; /* Optional comma-separated list of suffices if type is
|
|
+ EX_FIELD_TYPE_USER_DEFINED */
|
|
+} ex_field;
|
|
+
|
|
+typedef struct ex_basis
|
|
+{
|
|
+ /*
|
|
+ clang-format off
|
|
+ *
|
|
+ * subc_dim: dimension of the subcell associated with the specified DoF ordinal
|
|
+ * -- 0 node, 1 edge, 2 face, 3 volume [Range: 0..3]
|
|
+ * subc_ordinal: ordinal of the subcell relative to its parent cell
|
|
+ * -- 0..n for each ordinal with the same subc dim [Range: <= DoF ordinal]
|
|
+ * subc_dof_ordinal: ordinal of the DoF relative to the subcell
|
|
+ * subc_num_dof: cardinality of the DoF set associated with this subcell.
|
|
+ * xi, eta, mu (ξ, η, ζ): Parametric coordinate location of the DoF
|
|
+ * -- (Only first ndim values are valid)
|
|
+ *
|
|
+ clang-format on
|
|
+ */
|
|
+
|
|
+ char name[EX_MAX_NAME + 1];
|
|
+ int cardinality; /* number of `basis` points == dimension of non-null subc_*, xi, eta, mu */
|
|
+ int *subc_dim;
|
|
+ int *subc_ordinal;
|
|
+ int *subc_dof_ordinal;
|
|
+ int *subc_num_dof;
|
|
+ double *xi;
|
|
+ double *eta;
|
|
+ double *zeta;
|
|
+} ex_basis;
|
|
+
|
|
+typedef struct ex_quadrature
|
|
+{
|
|
+ char name[EX_MAX_NAME + 1];
|
|
+ int cardinality; /* Number of quadrature points */
|
|
+ int dimension; /* 1,2,3 -- spatial dimension of points */
|
|
+ double *xi; /* xi (x) coordinate of points; dimension = cardinality or NULL */
|
|
+ double *
|
|
+ eta; /* eta (y) coordinate of points; dimension = cardinality if dimension = 2 or 3 or NULL */
|
|
+ double
|
|
+ *zeta; /* zeta (z) coordinate of points; dimension = cardinality if dimension == 3. or NULL */
|
|
+ double *weight; /* weights for each point; dimension = cardinality or NULL */
|
|
+} ex_quadrature;
|
|
+
|
|
/*!
|
|
* ex_opts() function codes - codes are OR'ed into exopts
|
|
*/
|
|
@@ -311,9 +409,6 @@ typedef enum ex_options ex_options;
|
|
* @{
|
|
*/
|
|
|
|
-/** Maximum length of name permitted by NetCDF */
|
|
-#define EX_MAX_NAME NC_MAX_NAME
|
|
-
|
|
/** Maximum length of QA record, element type name */
|
|
#define MAX_STR_LENGTH 32L
|
|
/** Default maximum length of an entity name, attribute name, variable name.
|
|
@@ -375,31 +470,31 @@ typedef struct ex_attribute
|
|
{
|
|
ex_entity_type entity_type;
|
|
int64_t entity_id;
|
|
- char name[NC_MAX_NAME];
|
|
+ char name[EX_MAX_NAME + 1];
|
|
ex_type type; /* int, double, text */
|
|
- size_t value_count;
|
|
- void * values; /* not accessed if NULL */
|
|
+ int value_count;
|
|
+ void *values; /* not accessed if NULL */
|
|
} ex_attribute;
|
|
|
|
typedef struct ex_blob
|
|
{
|
|
- int64_t id;
|
|
- char * name;
|
|
- int64_t num_entry;
|
|
+ ex_entity_id id;
|
|
+ char *name;
|
|
+ int64_t num_entry;
|
|
} ex_blob;
|
|
|
|
typedef struct ex_assembly
|
|
{
|
|
- int64_t id;
|
|
- char * name;
|
|
+ ex_entity_id id;
|
|
+ char *name;
|
|
ex_entity_type type; /* EX_ELEM_BLOCK or EX_ASSEMBLY */
|
|
int entity_count;
|
|
- int64_t * entity_list;
|
|
+ ex_entity_id *entity_list;
|
|
} ex_assembly;
|
|
|
|
typedef struct ex_block
|
|
{
|
|
- int64_t id;
|
|
+ ex_entity_id id;
|
|
ex_entity_type type;
|
|
char topology[MAX_STR_LENGTH + 1];
|
|
int64_t num_entry;
|
|
@@ -411,34 +506,34 @@ typedef struct ex_block
|
|
|
|
typedef struct ex_set
|
|
{
|
|
- int64_t id;
|
|
+ ex_entity_id 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;
|
|
+ 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;
|
|
+ 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;
|
|
+ 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;
|
|
+ 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;
|
|
|
|
@@ -451,7 +546,7 @@ typedef struct ex_set_specs
|
|
void_int *sets_dist_index;
|
|
void_int *sets_entry_list;
|
|
void_int *sets_extra_list;
|
|
- void * sets_dist_fact;
|
|
+ void *sets_dist_fact;
|
|
} ex_set_specs;
|
|
|
|
typedef struct ex_var_params
|
|
@@ -477,6 +572,12 @@ typedef struct ex_var_params
|
|
} ex_var_params;
|
|
/** @} */
|
|
|
|
+#ifndef EXODUS_EXPORT
|
|
+#if defined(_WIN32) && defined(exodus_shared_EXPORTS)
|
|
+#define EXODUS_EXPORT __declspec(dllexport)
|
|
+#endif
|
|
+#endif /* EXODUS_EXPORT */
|
|
+
|
|
#ifndef EXODUS_EXPORT
|
|
#define EXODUS_EXPORT extern
|
|
#endif /* EXODUS_EXPORT */
|
|
@@ -494,26 +595,26 @@ EXODUS_EXPORT int ex_copy_transient(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,
|
|
+EXODUS_EXPORT int ex_create_int(const char *rel_path, int cmode, int *comp_ws, int *io_ws,
|
|
int run_version);
|
|
|
|
#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 run_version);
|
|
+EXODUS_EXPORT int ex_open_int(const char *rel_path, int mode, int *comp_ws, int *io_ws,
|
|
+ float *version, int run_version);
|
|
|
|
#if defined(PARALLEL_AWARE_EXODUS)
|
|
#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_create_par_int(const char *path, int cmode, int *comp_ws, int *io_ws,
|
|
+EXODUS_EXPORT int ex_create_par_int(const char *rel_path, int cmode, int *comp_ws, int *io_ws,
|
|
MPI_Comm comm, MPI_Info info, int my_version);
|
|
|
|
#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)
|
|
|
|
-EXODUS_EXPORT int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws,
|
|
+EXODUS_EXPORT int ex_open_par_int(const char *rel_path, int mode, int *comp_ws, int *io_ws,
|
|
float *version, MPI_Comm comm, MPI_Info info, int my_version);
|
|
#endif
|
|
|
|
@@ -524,8 +625,7 @@ EXODUS_EXPORT int ex_get_group_ids(int parent_id, int *num_groups, int *group_id
|
|
EXODUS_EXPORT int ex_get_info(int exoid, char **info);
|
|
|
|
EXODUS_EXPORT int ex_get_qa(int exoid, char *qa_record[][4]);
|
|
-
|
|
-EXODUS_EXPORT int ex_put_info(int exoid, int num_info, char *info[]);
|
|
+EXODUS_EXPORT int ex_put_info(int exoid, int num_info, char *const info[]);
|
|
|
|
EXODUS_EXPORT int ex_put_qa(int exoid, int num_qa_records, char *qa_record[][4]);
|
|
|
|
@@ -540,11 +640,11 @@ EXODUS_EXPORT void ex_set_err(const char *module_name, const char *message, int
|
|
EXODUS_EXPORT const char *ex_strerror(int err_num);
|
|
EXODUS_EXPORT void ex_get_err(const char **msg, const char **func, int *err_num);
|
|
EXODUS_EXPORT int ex_opts(int options);
|
|
-EXODUS_EXPORT int ex_inquire(int exoid, ex_inquiry req_info, void_int * /*ret_int*/,
|
|
- float * /*ret_float*/, char * /*ret_char*/);
|
|
-EXODUS_EXPORT int64_t ex_inquire_int(int exoid, ex_inquiry req_info);
|
|
-EXODUS_EXPORT int ex_int64_status(int exoid);
|
|
-EXODUS_EXPORT int ex_set_int64_status(int exoid, int mode);
|
|
+EXODUS_EXPORT int ex_inquire(int exoid, ex_inquiry req_info, void_int *ret_int, float *ret_float,
|
|
+ char *ret_char);
|
|
+EXODUS_EXPORT int64_t ex_inquire_int(int exoid, ex_inquiry req_info);
|
|
+EXODUS_EXPORT unsigned ex_int64_status(int exoid);
|
|
+EXODUS_EXPORT int ex_set_int64_status(int exoid, int mode);
|
|
|
|
EXODUS_EXPORT void ex_print_config(void);
|
|
EXODUS_EXPORT const char *ex_config(void);
|
|
@@ -590,8 +690,8 @@ EXODUS_EXPORT int ex_get_truth_table(int exoid, ex_entity_type obj_type, int num
|
|
int *var_tab);
|
|
|
|
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);
|
|
+ const int *elem_var_tab, int num_m, const int *nset_var_tab,
|
|
+ int num_s, const int *sset_var_tab);
|
|
|
|
EXODUS_EXPORT int ex_put_time(int exoid, int time_step, const void *time_value);
|
|
|
|
@@ -601,7 +701,7 @@ EXODUS_EXPORT int ex_put_variable_name(int exoid, ex_entity_type obj_type, int v
|
|
const char *var_name);
|
|
|
|
EXODUS_EXPORT int ex_put_variable_names(int exoid, ex_entity_type obj_type, int num_vars,
|
|
- char *var_names[]);
|
|
+ char *const var_names[]);
|
|
|
|
EXODUS_EXPORT int ex_put_variable_param(int exoid, ex_entity_type obj_type, int num_vars);
|
|
|
|
@@ -609,12 +709,12 @@ EXODUS_EXPORT int ex_put_reduction_variable_name(int exoid, ex_entity_type obj_t
|
|
const char *var_name);
|
|
|
|
EXODUS_EXPORT int ex_put_reduction_variable_names(int exoid, ex_entity_type obj_type, int num_vars,
|
|
- char *var_names[]);
|
|
+ char *const var_names[]);
|
|
|
|
EXODUS_EXPORT int ex_put_reduction_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);
|
|
+ const int *var_tab);
|
|
|
|
/* (MODIFIED) Write All Results Variables Parameters */
|
|
EXODUS_EXPORT int ex_put_all_var_param_ext(int exoid, const ex_var_params *vp);
|
|
@@ -624,6 +724,11 @@ EXODUS_EXPORT int ex_put_var(int exoid, int time_step, ex_entity_type var_type,
|
|
ex_entity_id obj_id, int64_t num_entries_this_obj,
|
|
const void *var_vals);
|
|
|
|
+/* Write Edge Face or Element Variable Values Defined On Blocks or Sets Through Time */
|
|
+EXODUS_EXPORT int ex_put_var_multi_time(int exoid, ex_entity_type var_type, int var_index,
|
|
+ ex_entity_id obj_id, int64_t num_entries_this_obj,
|
|
+ int beg_time_step, int end_time_step, 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_partial_var(int exoid, int time_step, ex_entity_type var_type,
|
|
int var_index, ex_entity_id obj_id, int64_t start_index,
|
|
@@ -638,6 +743,17 @@ EXODUS_EXPORT int ex_put_reduction_vars(int exoid, int time_step, ex_entity_type
|
|
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 Edge Face or Element Variable Values Defined On Blocks or Sets at a Time Step */
|
|
+EXODUS_EXPORT int ex_get_var_multi_time(int exoid, ex_entity_type var_type, int var_index,
|
|
+ ex_entity_id obj_id, int64_t num_entry_this_obj,
|
|
+ int beg_time_step, int end_time_step, void *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,
|
|
+ ex_entity_id id, int beg_time_step, int end_time_step,
|
|
+ void *var_vals);
|
|
+
|
|
+/* Read Partial Edge Face or Element Variable Values on Blocks or Sets at a Time Step */
|
|
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);
|
|
@@ -646,10 +762,6 @@ EXODUS_EXPORT int ex_get_partial_var(int exoid, int time_step, ex_entity_type va
|
|
EXODUS_EXPORT int ex_get_reduction_vars(int exoid, int time_step, ex_entity_type obj_type,
|
|
ex_entity_id obj_id, int64_t num_variables, void *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);
|
|
-
|
|
/*! @} */
|
|
|
|
/* ========================================================================
|
|
@@ -659,14 +771,14 @@ EXODUS_EXPORT int ex_get_var_time(int exoid, ex_entity_type var_type, int var_in
|
|
* 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 */
|
|
+ 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_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 */
|
|
+ const char *ftype);
|
|
|
|
EXODUS_EXPORT int ex_get_init_global(int exoid, /* NemesisI file ID */
|
|
void_int *num_nodes_g, /* Number of global FEM nodes */
|
|
@@ -708,14 +820,15 @@ EXODUS_EXPORT int ex_put_loadbal_param(int exoid, /* NemesisI file
|
|
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 */
|
|
+EXODUS_EXPORT int
|
|
+ex_put_loadbal_param_cc(int exoid, /* NetCDF/Exodus file ID */
|
|
+ const void_int *num_int_nodes, /* Number of internal node IDs */
|
|
+ const void_int *num_bor_nodes, /* Number of border node IDs */
|
|
+ const void_int *num_ext_nodes, /* Number of external node IDs */
|
|
+ const void_int *num_int_elems, /* Number of internal elem IDs */
|
|
+ const void_int *num_bor_elems, /* Number of border elem IDs */
|
|
+ const void_int *num_node_cmaps, /* Number of nodal comm maps */
|
|
+ const void_int *num_elem_cmaps /* Number of elem comm maps */
|
|
);
|
|
|
|
/* Utility function to replace strncpy, strcpy -- guarantee null termination */
|
|
@@ -784,11 +897,12 @@ EXODUS_EXPORT int ex_get_attr_param(int exoid, ex_entity_type obj_type, ex_entit
|
|
int *num_attrs);
|
|
|
|
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,
|
|
+ char *const elem_type[],
|
|
+ const void_int *num_elem_this_blk,
|
|
const void_int *num_nodes_per_elem,
|
|
const void_int *num_attr_this_blk, int define_maps);
|
|
|
|
-EXODUS_EXPORT int ex_put_coord_names(int exoid, char *coord_names[]);
|
|
+EXODUS_EXPORT int ex_put_coord_names(int exoid, char *const coord_names[]);
|
|
|
|
EXODUS_EXPORT int ex_put_coord(int exoid, const void *x_coor, const void *y_coor,
|
|
const void *z_coor);
|
|
@@ -814,15 +928,18 @@ 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_get_block_id_map(int exoid, ex_entity_type map_type, ex_entity_id entity_id,
|
|
+ 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);
|
|
+ const void *pt_coordinates, const char *tags);
|
|
|
|
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_names(int exoid, ex_entity_type obj_type, char *const names[]);
|
|
|
|
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,
|
|
@@ -859,7 +976,7 @@ EXODUS_EXPORT int ex_get_block(int exoid, ex_entity_type blk_type, ex_entity_id
|
|
/* 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);
|
|
+EXODUS_EXPORT int ex_put_block_param(int exoid, ex_block block);
|
|
|
|
EXODUS_EXPORT int ex_get_block_params(int exoid, size_t block_count, struct ex_block **blocks);
|
|
|
|
@@ -925,26 +1042,43 @@ EXODUS_EXPORT int ex_put_attr_names(int exoid, ex_entity_type blk_type, ex_entit
|
|
EXODUS_EXPORT int ex_get_attr_names(int exoid, ex_entity_type obj_type, ex_entity_id obj_id,
|
|
char **names);
|
|
|
|
-EXODUS_EXPORT int ex_put_assembly(int exoid, const struct ex_assembly assembly);
|
|
+EXODUS_EXPORT int ex_put_assembly(int exoid, struct ex_assembly assembly);
|
|
EXODUS_EXPORT int ex_get_assembly(int exoid, struct ex_assembly *assembly);
|
|
|
|
EXODUS_EXPORT int ex_put_assemblies(int exoid, size_t count, const struct ex_assembly *assemblies);
|
|
EXODUS_EXPORT int ex_get_assemblies(int exoid, struct ex_assembly *assemblies);
|
|
|
|
-EXODUS_EXPORT int ex_put_blob(int exoid, const struct ex_blob blob);
|
|
+EXODUS_EXPORT int ex_put_blob(int exoid, struct ex_blob blob);
|
|
EXODUS_EXPORT int ex_get_blob(int exoid, struct ex_blob *blob);
|
|
|
|
EXODUS_EXPORT int ex_put_blobs(int exoid, size_t count, const struct ex_blob *blobs);
|
|
EXODUS_EXPORT int ex_get_blobs(int exoid, struct ex_blob *blobs);
|
|
|
|
+EXODUS_EXPORT int ex_put_multi_field_metadata(int exoid, const ex_field *field, int field_count);
|
|
+EXODUS_EXPORT int ex_put_field_metadata(int exoid, ex_field field);
|
|
+EXODUS_EXPORT int ex_put_field_suffices(int exoid, ex_field field, const char *suffices);
|
|
+EXODUS_EXPORT int ex_get_field_metadata(int exoid, ex_field *field);
|
|
+EXODUS_EXPORT int ex_get_field_metadata_count(int exoid, ex_entity_type obj_type, ex_entity_id id);
|
|
+EXODUS_EXPORT int ex_get_field_suffices(int exoid, ex_field field, char *suffices);
|
|
+
|
|
+EXODUS_EXPORT int ex_get_basis_count(int exoid);
|
|
+EXODUS_EXPORT int ex_get_basis(int exoid, ex_basis **pbasis, int *num_basis);
|
|
+EXODUS_EXPORT int ex_put_basis(int exoid, ex_basis basis);
|
|
+
|
|
+EXODUS_EXPORT int ex_get_quadrature_count(int exoid);
|
|
+EXODUS_EXPORT int ex_get_quadrature(int exoid, ex_quadrature **pquad, int *num_quad);
|
|
+EXODUS_EXPORT int ex_put_quadrature(int exoid, ex_quadrature quad);
|
|
+
|
|
/* Write arbitrary integer, double, or text attributes on an entity */
|
|
EXODUS_EXPORT int ex_put_attribute(int exoid, ex_attribute attributes);
|
|
-EXODUS_EXPORT int ex_put_attributes(int exoid, size_t attr_count, ex_attribute *attributes);
|
|
+EXODUS_EXPORT int ex_put_attributes(int exoid, size_t attr_count, const ex_attribute *attributes);
|
|
|
|
EXODUS_EXPORT int ex_put_double_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id,
|
|
- const char *atr_name, int num_values, double *values);
|
|
+ const char *atr_name, int num_values,
|
|
+ const double *values);
|
|
EXODUS_EXPORT int ex_put_integer_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id,
|
|
- const char *atr_name, int num_values, void_int *values);
|
|
+ const char *atr_name, int num_values,
|
|
+ const void_int *values);
|
|
EXODUS_EXPORT int ex_put_text_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id,
|
|
const char *atr_name, const char *value);
|
|
|
|
@@ -1041,10 +1175,10 @@ EXODUS_EXPORT int ex_get_ns_param_global(int exoid, /**< NetCDF/Exodu
|
|
);
|
|
|
|
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 *node_cnts, /**< Vector of node counts in node-sets */
|
|
- void_int *df_cnts /**< Vector of dist factor counts in node-sets */
|
|
+ex_put_ns_param_global(int exoid, /**< NemesisI file ID */
|
|
+ const void_int *global_ids, /**< Vector of global node-set IDs */
|
|
+ const void_int *node_cnts, /**< Vector of node counts in node-sets */
|
|
+ const void_int *df_cnts /**< Vector of dist factor counts in node-sets */
|
|
);
|
|
|
|
EXODUS_EXPORT int ex_get_ss_param_global(int exoid, /**< NetCDF/Exodus file ID */
|
|
@@ -1053,12 +1187,12 @@ EXODUS_EXPORT int ex_get_ss_param_global(int exoid, /**< NetCDF/Exodu
|
|
void_int *df_cnts /**< 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 *side_cnts, /**< Vector of element/side counts in each side set */
|
|
- void_int *df_cnts /**< Vector of dist. factor */
|
|
- /**< counts in each side set */
|
|
+EXODUS_EXPORT int ex_put_ss_param_global(
|
|
+ int exoid, /**< NemesisI file ID */
|
|
+ const void_int *global_ids, /**< Vector of global side-set IDs */
|
|
+ const void_int *side_cnts, /**< Vector of element/side counts in each side set */
|
|
+ const void_int *df_cnts /**< Vector of dist. factor */
|
|
+ /**< counts in each side set */
|
|
);
|
|
|
|
EXODUS_EXPORT int
|
|
@@ -1068,9 +1202,9 @@ ex_get_eb_info_global(int exoid, /**< NemesisI file ID
|
|
);
|
|
|
|
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 */
|
|
+ex_put_eb_info_global(int exoid, /**< NemesisI file ID */
|
|
+ const void_int *el_blk_ids, /**< Vector of global element IDs */
|
|
+ const void_int *el_blk_cnts /**< Vector of global element counts */
|
|
);
|
|
|
|
/*=============================================================================
|
|
@@ -1078,7 +1212,7 @@ ex_put_eb_info_global(int exoid, /**< NemesisI file ID */
|
|
*===========================================================================*/
|
|
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 */
|
|
+ char *elem_type /**< The name of the element type */
|
|
);
|
|
|
|
/*=============================================================================
|
|
@@ -1091,11 +1225,12 @@ EXODUS_EXPORT int ex_get_processor_node_maps(int exoid, /**< NetCDF/Ex
|
|
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 proc_id /**< This processor ID */
|
|
+EXODUS_EXPORT int
|
|
+ex_put_processor_node_maps(int exoid, /**< NetCDF/Exodus file ID */
|
|
+ const void_int *node_mapi, /**< Internal FEM node IDs */
|
|
+ const void_int *node_mapb, /**< Border FEM node IDs */
|
|
+ const void_int *node_mape, /**< External FEM node IDs */
|
|
+ int proc_id /**< This processor ID */
|
|
);
|
|
|
|
EXODUS_EXPORT int ex_get_processor_elem_maps(int exoid, /**< NetCDF/Exodus file ID */
|
|
@@ -1104,10 +1239,11 @@ EXODUS_EXPORT int ex_get_processor_elem_maps(int exoid, /**< NetCDF/Ex
|
|
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 */
|
|
+EXODUS_EXPORT int
|
|
+ex_put_processor_elem_maps(int exoid, /**< NetCDF/Exodus file ID */
|
|
+ const void_int *elem_mapi, /**< Internal FEM element IDs */
|
|
+ const void_int *elem_mapb, /**< Border FEM element IDs */
|
|
+ int processor /**< This processor ID */
|
|
);
|
|
|
|
/*=============================================================================
|
|
@@ -1123,64 +1259,76 @@ ex_get_cmap_params(int exoid, /**< NetCDF/Exodus file ID */
|
|
int processor /**< This processor ID */
|
|
);
|
|
|
|
-EXODUS_EXPORT int ex_put_cmap_params(int exoid, /**< NetCDF/Exodus file ID */
|
|
- void_int *node_cmap_ids, /**< Node map IDs */
|
|
- void_int *node_cmap_node_cnts, /**< Nodes in nodal comm */
|
|
- void_int *elem_cmap_ids, /**< Elem map IDs */
|
|
- void_int *elem_cmap_elem_cnts, /**< Elems in elemental comm */
|
|
- int64_t processor /**< This processor ID */
|
|
+EXODUS_EXPORT int
|
|
+ex_put_cmap_params(int exoid, /**< NetCDF/Exodus file ID */
|
|
+ const void_int *node_cmap_ids, /**< Node map IDs */
|
|
+ const void_int *node_cmap_node_cnts, /**< Nodes in nodal comm */
|
|
+ const void_int *elem_cmap_ids, /**< Elem map IDs */
|
|
+ const void_int *elem_cmap_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_cmap_ids, /**< Node map IDs */
|
|
- void_int *node_cmap_node_cnts, /**< Nodes in nodal comm */
|
|
- void_int *node_proc_ptrs, /**< Pointer into array for node maps */
|
|
- void_int *elem_cmap_ids, /**< Elem map IDs */
|
|
- void_int *elem_cmap_elem_cnts, /**< Elems in elemental comm */
|
|
- void_int *elem_proc_ptrs /**< Pointer into array for elem maps */
|
|
+ex_put_cmap_params_cc(int exoid, /**< NetCDF/Exodus file ID */
|
|
+ const void_int *node_cmap_ids, /**< Node map IDs */
|
|
+ const void_int *node_cmap_node_cnts, /**< Nodes in nodal comm */
|
|
+ const void_int *node_proc_ptrs, /**< Pointer into array for node maps */
|
|
+ const void_int *elem_cmap_ids, /**< Elem map IDs */
|
|
+ const void_int *elem_cmap_elem_cnts, /**< Elems in elemental comm */
|
|
+ const 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 */
|
|
+ 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_put_node_cmap(int exoid, /**< NetCDF/Exodus file ID */
|
|
+ ex_entity_id map_id, /**< Nodal comm map ID */
|
|
+ const void_int *node_ids, /**< FEM node IDs */
|
|
+ const void_int *proc_ids, /**< Processor IDs */
|
|
+ int processor /**< This processor ID */
|
|
);
|
|
|
|
EXODUS_EXPORT int
|
|
-ex_put_partial_node_cmap(int exoid, /**< NetCDF/Exodus file ID */
|
|
- ex_entity_id map_id, /**< Nodal comm map ID */
|
|
- int64_t start_entity_num, /**< Starting position to write to */
|
|
- int64_t num_entities, /**< Number of nodes to write */
|
|
- void_int * node_ids, /**< FEM node IDs */
|
|
- void_int * proc_ids, /**< Processor IDs */
|
|
- int processor /**< This processor ID */
|
|
+ex_put_partial_node_cmap(int exoid, /**< NetCDF/Exodus file ID */
|
|
+ ex_entity_id map_id, /**< Nodal comm map ID */
|
|
+ int64_t start_entity_num, /**< Starting position to write to */
|
|
+ int64_t num_entities, /**< Number of nodes to write */
|
|
+ const void_int *node_ids, /**< FEM node IDs */
|
|
+ const 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 */
|
|
+ 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 */
|
|
+EXODUS_EXPORT int ex_put_elem_cmap(int exoid, /**< NetCDF/Exodus file ID */
|
|
+ ex_entity_id map_id, /**< Elemental comm map ID */
|
|
+ const void_int *elem_ids, /**< Vector of element IDs */
|
|
+ const void_int *side_ids, /**< Vector of side IDs */
|
|
+ const void_int *proc_ids, /**< Vector of processor IDs */
|
|
+ int processor /**< This processor ID */
|
|
);
|
|
|
|
+EXODUS_EXPORT int ex_initialize_basis_struct(ex_basis *basis, size_t num_basis, int mode);
|
|
+EXODUS_EXPORT int ex_initialize_quadrature_struct(ex_quadrature *quad, size_t num_quad, int mode);
|
|
+
|
|
+EXODUS_EXPORT const char *ex_component_field_name(ex_field *field,
|
|
+ int component[EX_MAX_FIELD_NESTING]);
|
|
+EXODUS_EXPORT const char *ex_field_component_suffix(ex_field *field, int nest_level, int component);
|
|
+EXODUS_EXPORT int ex_field_cardinality(ex_field_type field_type);
|
|
+EXODUS_EXPORT const char *ex_field_type_name(ex_field_type field_type);
|
|
+EXODUS_EXPORT ex_field_type ex_string_to_field_type_enum(const char *field_name);
|
|
+EXODUS_EXPORT const char *ex_field_type_enum_to_string(ex_field_type field_type);
|
|
+
|
|
/*! @} */
|
|
|
|
/* Deprecated Code Handling Options:
|
|
@@ -1297,7 +1445,7 @@ SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_nset_var_tab(int exoid, int num_nodes
|
|
SEACAS_DEPRECATED 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);
|
|
+ void *nset_var_vals);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_one_elem_attr(int exoid, ex_entity_id elem_blk_id,
|
|
int attrib_index, void *attrib);
|
|
@@ -1318,7 +1466,7 @@ SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_side_set_param(int exoid, ex_entity_i
|
|
SEACAS_DEPRECATED 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);
|
|
+ void *sset_var_vals);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_sset_var_tab(int exoid, int num_sidesets,
|
|
int num_sset_var, int *sset_var_tab);
|
|
@@ -1371,7 +1519,7 @@ SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_elem_num_map(int exoid, const void_in
|
|
SEACAS_DEPRECATED 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);
|
|
+ const void *elem_var_vals);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_elem_var_tab(int exoid, int num_elem_blk,
|
|
int num_elem_var, int *elem_var_tab);
|
|
@@ -1397,7 +1545,7 @@ SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_node_set_param(int exoid, ex_entity_i
|
|
SEACAS_DEPRECATED 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);
|
|
+ const void *nset_var_vals);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_nset_var_tab(int exoid, int num_nset, int num_nset_var,
|
|
int *nset_var_tab);
|
|
@@ -1419,7 +1567,7 @@ SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_side_set_param(int exoid, ex_entity_i
|
|
SEACAS_DEPRECATED 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);
|
|
+ const void *sset_var_vals);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_sset_var_tab(int exoid, int num_sset, int num_sset_var,
|
|
int *sset_var_tab);
|
|
@@ -1473,8 +1621,8 @@ 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 */
|
|
+ void_int *side_set_elem_list, /**< List of element IDs */
|
|
+ void_int *side_set_side_list /**< List of side IDs */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1491,7 +1639,7 @@ 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_dist_fact /**< Distribution factors */
|
|
+ void *side_set_dist_fact /**< Distribution factors */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1499,7 +1647,7 @@ 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_dist_fact /**< Distribution factors */
|
|
+ void *side_set_dist_fact /**< Distribution factors */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1507,7 +1655,7 @@ 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_nodes, /**< Number of nodes to read */
|
|
- void_int * node_set_node_list /**< List of nodes in node set */
|
|
+ void_int *node_set_node_list /**< List of nodes in node set */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1523,7 +1671,7 @@ 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_dist_fact /**< Distribution factors */
|
|
+ void *node_set_dist_fact /**< Distribution factors */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1531,7 +1679,7 @@ 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_dist_fact /**< Distribution factors */
|
|
+ void *node_set_dist_fact /**< Distribution factors */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1539,7 +1687,7 @@ 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 */
|
|
+ void_int *connect /**< Connectivity vector */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1555,7 +1703,7 @@ 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 */
|
|
+ void *attrib /**< Attribute */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1563,7 +1711,7 @@ 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 */
|
|
+ void *attrib /**< Attribute */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1619,7 +1767,7 @@ 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 */
|
|
+ void_int *connect /**< Connectivity vector */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1627,7 +1775,7 @@ 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 */
|
|
+ void *attrib /**< Attribute */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1649,7 +1797,7 @@ ex_get_partial_node_set(int exoid, /**< NetCDF/Exodus file
|
|
ex_entity_id node_set_id, /**< Node set ID */
|
|
int64_t start_node_num, /**< Node index to start reading at */
|
|
int64_t num_nodes, /**< Number of nodes to read */
|
|
- void_int * node_set_node_list /**< List of nodes in node set */
|
|
+ void_int *node_set_node_list /**< List of nodes in node set */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1657,7 +1805,7 @@ ex_get_partial_node_set_df(int exoid, /**< NetCDF/Exodus fi
|
|
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_dist_fact /**< Distribution factors */
|
|
+ void *node_set_dist_fact /**< Distribution factors */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1665,8 +1813,8 @@ ex_get_partial_side_set(int exoid, /**< NetCDF/Exodus file
|
|
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 */
|
|
+ void_int *side_set_elem_list, /**< List of element IDs */
|
|
+ void_int *side_set_side_list /**< List of side IDs */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1674,7 +1822,7 @@ ex_get_partial_side_set_df(int exoid, /**< NetCDF/Exodus fi
|
|
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_dist_fact /**< Distribution factors */
|
|
+ void *side_set_dist_fact /**< Distribution factors */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_partial_node_num_map(int exoid, int64_t start_ent,
|
|
@@ -1703,7 +1851,7 @@ ex_put_partial_side_set_df(int exoid, /**< NetCDF/Exodus fi
|
|
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_dist_fact /**< Distribution factors */
|
|
+ void *side_set_dist_fact /**< Distribution factors */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1719,7 +1867,7 @@ ex_put_partial_node_set_df(int exoid, /**< NetCDF/Exodus fi
|
|
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_dist_fact /**< Distribution factors */
|
|
+ void *node_set_dist_fact /**< Distribution factors */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1735,7 +1883,7 @@ 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 */
|
|
+ void *attrib /**< Attribute */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1745,7 +1893,7 @@ ex_put_elem_var_slab(int exoid, /**< NetCDF/Exodus file ID */
|
|
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 */
|
|
+ void *elem_var_vals /**< variable values */
|
|
);
|
|
|
|
SEACAS_DEPRECATED EXODUS_EXPORT int
|
|
@@ -1754,7 +1902,7 @@ ex_put_nodal_var_slab(int exoid, /**< NetCDF/Exodus file ID */
|
|
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 */
|
|
+ void *nodal_var_vals /**< Nodal variable values */
|
|
);
|
|
|
|
#endif
|
|
@@ -1781,7 +1929,7 @@ EXODUS_EXPORT EX_errval_t *ex_errval;
|
|
EXODUS_EXPORT int exerrval; /**< shared error return value */
|
|
#endif
|
|
|
|
-EXODUS_EXPORT char * ex_name_of_object(ex_entity_type obj_type);
|
|
+EXODUS_EXPORT char *ex_name_of_object(ex_entity_type obj_type);
|
|
EXODUS_EXPORT ex_entity_type ex_var_type_to_ex_entity_type(char var_type);
|
|
EXODUS_EXPORT int ex_set_parallel(int exoid, int is_parallel);
|
|
|
|
@@ -1790,7 +1938,7 @@ EXODUS_EXPORT int ex_set_parallel(int exoid, int is_parallel);
|
|
*/
|
|
EXODUS_EXPORT int ex_get_idx(int exoid, /**< NetCDF/Exodus file ID */
|
|
const char *ne_var_name, /**< Nemesis index variable name */
|
|
- int64_t * my_index, /**< array of length 2 to hold results */
|
|
+ int64_t *my_index, /**< array of length 2 to hold results */
|
|
int pos /**< position of this proc/cmap in index */
|
|
);
|
|
|
|
@@ -1798,30 +1946,35 @@ EXODUS_EXPORT int ex_get_idx(int exoid, /**< NetCDF/Exodus file ID
|
|
* \defgroup ErrorReturnCodes 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_INTERNAL 1006 /**< internal logic error */
|
|
-#define EX_DUPLICATEID 1007 /**< duplicate id found */
|
|
-#define EX_DUPLICATEOPEN 1008 /**< duplicate open */
|
|
-#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_LASTERR -1003 /**< in ex_err, use existing err_num value */
|
|
-#define EX_NULLENTITY -1006 /**< null entity found */
|
|
-#define EX_NOENTITY -1007 /**< no entities of that type on database */
|
|
-#define EX_NOTFOUND -1008 /**< could not find requested variable on database */
|
|
-
|
|
-#define EX_FATAL -1 /**< fatal error flag def */
|
|
-#define EX_NOERR 0 /**< no error flag def */
|
|
-#define EX_WARN 1 /**< warning flag def */
|
|
+enum ex_error_return_code {
|
|
+ EX_MEMFAIL = 1000, /**< memory allocation failure flag def */
|
|
+ EX_BADFILEMODE = 1001, /**< bad file mode def */
|
|
+ EX_BADFILEID = 1002, /**< bad file id def */
|
|
+ EX_WRONGFILETYPE = 1003, /**< wrong file type for function */
|
|
+ EX_LOOKUPFAIL = 1004, /**< id table lookup failed */
|
|
+ EX_BADPARAM = 1005, /**< bad parameter passed */
|
|
+ EX_INTERNAL = 1006, /**< internal logic error */
|
|
+ EX_DUPLICATEID = 1007, /**< duplicate id found */
|
|
+ EX_DUPLICATEOPEN = 1008, /**< duplicate open */
|
|
+ EX_BADFILENAME = 1009, /**< empty or null filename specified */
|
|
+ EX_MSG = -1000, /**< message print code - no error implied */
|
|
+ EX_PRTLASTMSG = -1001, /**< print last error message msg code */
|
|
+ EX_NOTROOTID = -1002, /**< file id is not the root id; it is a subgroup id */
|
|
+ EX_LASTERR = -1003, /**< in ex_err, use existing err_num value */
|
|
+ EX_NULLENTITY = -1006, /**< null entity found */
|
|
+ EX_NOENTITY = -1007, /**< no entities of that type on database */
|
|
+ EX_NOTFOUND = -1008, /**< could not find requested variable on database */
|
|
+ EX_INTSIZEMISMATCH =
|
|
+ -1009, /**< integer sizes do not match on input/output databases in ex_copy */
|
|
+
|
|
+ EX_FATAL = -1, /**< fatal error flag def */
|
|
+ EX_NOERR = 0, /**< no error flag def */
|
|
+ EX_WARN = 1 /**< warning flag def */
|
|
+};
|
|
+typedef enum ex_error_return_code ex_error_return_code;
|
|
+
|
|
/** @} */
|
|
|
|
#ifdef __cplusplus
|
|
} /* close brackets on extern "C" declaration */
|
|
#endif
|
|
-
|
|
-#endif
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/include/exodusII_cfg.h.in b/ThirdParty/exodusII/vtkexodusII/include/exodusII_cfg.h.in
|
|
index 659dfc9f76..304c65b4c7 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/include/exodusII_cfg.h.in
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/include/exodusII_cfg.h.in
|
|
@@ -1,26 +1,22 @@
|
|
-// Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
-// of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
-// NTESS, the U.S. Government retains certain rights in this software.
|
|
-//
|
|
-// See packages/seacas/LICENSE for details
|
|
-
|
|
-#ifndef __exodusII_cfg_h
|
|
-#define __exodusII_cfg_h
|
|
-
|
|
-#if defined(_WIN32) && !defined(WIN32)
|
|
-# define WIN32
|
|
-#endif
|
|
+/*
|
|
+ * Copyright(C) 1999-2022 National Technology & Engineering Solutions
|
|
+ * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
+ * NTESS, the U.S. Government retains certain rights in this software.
|
|
+ *
|
|
+ * See packages/seacas/LICENSE for details
|
|
+ */
|
|
+#pragma once
|
|
|
|
#cmakedefine EXODUSII_BUILD_SHARED_LIBS
|
|
-#if defined(WIN32) && defined(EXODUSII_BUILD_SHARED_LIBS)
|
|
+#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || \
|
|
+ defined(__MINGW32__) || defined(_WIN64) || defined(__MINGW64__)
|
|
+#if defined(EXODUSII_BUILD_SHARED_LIBS)
|
|
# if defined(exoIIc_EXPORTS)
|
|
# define EXODUS_EXPORT __declspec( dllexport ) extern
|
|
# else
|
|
# define EXODUS_EXPORT __declspec( dllimport ) extern
|
|
# endif
|
|
+#endif
|
|
#else
|
|
# define EXODUS_EXPORT extern
|
|
#endif
|
|
-
|
|
-#endif
|
|
-
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/include/exodusII_int.h b/ThirdParty/exodusII/vtkexodusII/include/exodusII_int.h
|
|
index da03f8c5a1..70d1c82e18 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/include/exodusII_int.h
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/include/exodusII_int.h
|
|
@@ -1,6 +1,6 @@
|
|
/*
|
|
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2023, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -11,9 +11,7 @@
|
|
* exodusII_int.h - ExodusII header file for internal Exodus call use only
|
|
*
|
|
*/
|
|
-
|
|
-#ifndef EXODUSII_INT_H
|
|
-#define EXODUSII_INT_H
|
|
+#pragma once
|
|
|
|
#include <stdbool.h>
|
|
|
|
@@ -30,6 +28,18 @@
|
|
#endif
|
|
#endif
|
|
|
|
+#if NC_HAS_ZSTD == 1 || NC_HAS_BZ2
|
|
+#include "netcdf_filter.h"
|
|
+#endif
|
|
+
|
|
+#if !defined NC_FillValue
|
|
+#if defined _FillValue
|
|
+#define NC_FillValue _FillValue
|
|
+#else
|
|
+#define NC_FillValue "_FillValue"
|
|
+#endif
|
|
+#endif
|
|
+
|
|
#if defined(_WIN32) && defined(_MSC_VER) && _MSC_VER < 1900
|
|
#define PRId64 "I64d"
|
|
#else
|
|
@@ -69,6 +79,10 @@
|
|
extern "C" {
|
|
#endif
|
|
|
|
+#if NC_VERSION_MAJOR > 4 || (NC_VERSION_MAJOR == 4 && NC_VERSION_MINOR >= 6) || NC_HAS_HDF5
|
|
+#define EX_CAN_USE_NC_DEF_VAR_FILL 1
|
|
+#endif
|
|
+
|
|
/**
|
|
* \defgroup Internal Internal Functions and Defines
|
|
* \internal
|
|
@@ -86,9 +100,12 @@ extern "C" {
|
|
|
|
/* 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 */
|
|
+#define EX_GRP_ID_MASK (0x0000ffff) /**< Must match GRP_ID_MASK in NetCDF nc4internal.h */
|
|
|
|
-EXODUS_EXPORT void ex__reset_error_status(void);
|
|
+/* Utility function to find variable to store entity attribute on */
|
|
+int exi_get_varid(int exoid, ex_entity_type obj_type, ex_entity_id id);
|
|
+
|
|
+EXODUS_EXPORT void exi_reset_error_status(void);
|
|
|
|
#if defined(EXODUS_THREADSAFE)
|
|
#if !defined(exerrval)
|
|
@@ -114,18 +131,18 @@ typedef struct EX_mutex_struct
|
|
} EX_mutex_t;
|
|
|
|
extern EX_mutex_t EX_g;
|
|
-extern int ex__mutex_lock(EX_mutex_t *mutex);
|
|
-extern int ex__mutex_unlock(EX_mutex_t *mutex, const char *func, int line);
|
|
-extern void ex__pthread_first_thread_init(void);
|
|
-extern EX_errval_t *exerrval_get();
|
|
+extern int exi_mutex_lock(EX_mutex_t *mutex);
|
|
+extern int exi_mutex_unlock(EX_mutex_t *mutex, const char *func, int line);
|
|
+extern void exi_pthread_first_thread_init(void);
|
|
+extern EX_errval_t *exerrval_get(void);
|
|
|
|
#define EX_FUNC_ENTER() \
|
|
do { \
|
|
/* Initialize the thread-safe code */ \
|
|
- pthread_once(&EX_first_init_g, ex__pthread_first_thread_init); \
|
|
+ pthread_once(&EX_first_init_g, exi_pthread_first_thread_init); \
|
|
\
|
|
/* Grab the mutex for the library */ \
|
|
- ex__mutex_lock(&EX_g); \
|
|
+ exi_mutex_lock(&EX_g); \
|
|
ex_errval = exerrval_get(); \
|
|
exerrval = 0; \
|
|
ex_errval->last_err_num = 0; \
|
|
@@ -134,28 +151,28 @@ extern EX_errval_t *exerrval_get();
|
|
#define EX_FUNC_ENTER_INT() \
|
|
do { \
|
|
/* Initialize the thread-safe code */ \
|
|
- pthread_once(&EX_first_init_g, ex__pthread_first_thread_init); \
|
|
+ pthread_once(&EX_first_init_g, exi_pthread_first_thread_init); \
|
|
\
|
|
/* Grab the mutex for the library */ \
|
|
- ex__mutex_lock(&EX_g); \
|
|
+ exi_mutex_lock(&EX_g); \
|
|
ex_errval = exerrval_get(); \
|
|
} while (0)
|
|
|
|
#define EX_FUNC_LEAVE(error) \
|
|
do { \
|
|
- ex__mutex_unlock(&EX_g, __func__, __LINE__); \
|
|
+ exi_mutex_unlock(&EX_g, __func__, __LINE__); \
|
|
return error; \
|
|
} while (0)
|
|
|
|
#define EX_FUNC_VOID() \
|
|
do { \
|
|
- ex__mutex_unlock(&EX_g, __func__, __LINE__); \
|
|
+ exi_mutex_unlock(&EX_g, __func__, __LINE__); \
|
|
return; \
|
|
} while (0)
|
|
|
|
#define EX_FUNC_UNLOCK() \
|
|
do { \
|
|
- ex__mutex_unlock(&EX_g, __func__, __LINE__); \
|
|
+ exi_mutex_unlock(&EX_g, __func__, __LINE__); \
|
|
} while (0)
|
|
|
|
#else
|
|
@@ -165,7 +182,7 @@ extern EX_errval_t *exerrval_get();
|
|
EXODUS_EXPORT int indent;
|
|
#define EX_FUNC_ENTER() \
|
|
do { \
|
|
- ex__reset_error_status(); \
|
|
+ exi_reset_error_status(); \
|
|
fprintf(stderr, "%d Enter: %s\n", indent, __func__); \
|
|
indent++; \
|
|
} while (0)
|
|
@@ -193,12 +210,12 @@ EXODUS_EXPORT int indent;
|
|
} while (0)
|
|
#else
|
|
#define EX_FUNC_ENTER() \
|
|
- { \
|
|
- ex__reset_error_status(); \
|
|
- }
|
|
+ do { \
|
|
+ exi_reset_error_status(); \
|
|
+ } while (0)
|
|
#define EX_FUNC_ENTER_INT()
|
|
#define EX_FUNC_LEAVE(error) return error
|
|
-#define EX_FUNC_VOID() return
|
|
+#define EX_FUNC_VOID() return
|
|
#define EX_FUNC_UNLOCK()
|
|
#endif
|
|
#endif
|
|
@@ -223,341 +240,341 @@ EXODUS_EXPORT int indent;
|
|
* fail when they encounter a blank in a name.
|
|
*
|
|
*/
|
|
-#define ATT_TITLE "title" /**< the database title */
|
|
+#define ATT_TITLE "title" /**< the database title */
|
|
#define ATT_API_VERSION "api_version" /**< the EXODUS api vers number */
|
|
/*! the EXODUS api vers # used for db version 2.01 and earlier */
|
|
#define ATT_API_VERSION_BLANK "api version"
|
|
-#define ATT_VERSION "version" /**< the EXODUS file vers number */
|
|
-#define ATT_FILESIZE "file_size" /**< 1=large, 0=normal */
|
|
+#define ATT_VERSION "version" /**< the EXODUS file vers number */
|
|
+#define ATT_FILESIZE "file_size" /**< 1=large, 0=normal */
|
|
/*! word size of floating point numbers in file */
|
|
#define ATT_FLT_WORDSIZE "floating_point_word_size"
|
|
/*! word size of floating point numbers in file used for db version
|
|
2.01 and earlier */
|
|
#define ATT_FLT_WORDSIZE_BLANK "floating point word size"
|
|
-#define ATT_MAX_NAME_LENGTH "maximum_name_length"
|
|
-#define ATT_INT64_STATUS "int64_status"
|
|
-#define ATT_NEM_API_VERSION "nemesis_api_version"
|
|
-#define ATT_NEM_FILE_VERSION "nemesis_file_version"
|
|
-#define ATT_PROCESSOR_INFO "processor_info"
|
|
-#define ATT_LAST_WRITTEN_TIME "last_written_time"
|
|
-
|
|
-#define DIM_NUM_ASSEMBLY "num_assembly" /**< number of assemblies */
|
|
-#define DIM_NUM_BLOB "num_blob" /**< number of blobs */
|
|
-#define DIM_NUM_NODES "num_nodes" /**< number of nodes */
|
|
-#define DIM_NUM_DIM "num_dim" /**< number of dimensions; 2- or 3-d*/
|
|
-#define DIM_NUM_EDGE "num_edge" /**< number of edges (over all blks)*/
|
|
-#define DIM_NUM_FACE "num_face" /**< number of faces (over all blks)*/
|
|
-#define DIM_NUM_ELEM "num_elem" /**< number of elements */
|
|
-#define DIM_NUM_EL_BLK "num_el_blk" /**< number of element blocks */
|
|
-#define DIM_NUM_ED_BLK "num_ed_blk" /**< number of edge blocks */
|
|
-#define DIM_NUM_FA_BLK "num_fa_blk" /**< number 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 DIM_NUM_ENTITY_ASSEMBLY(num) ex__catstr("num_entity_assembly", num)
|
|
-#define VAR_ENTITY_ASSEMBLY(num) ex__catstr("assembly_entity", num)
|
|
-#define DIM_NUM_VALUES_BLOB(num) ex__catstr("num_values_blob", num)
|
|
-#define VAR_ENTITY_BLOB(num) ex__catstr("blob_entity", num)
|
|
-#define EX_ATTRIBUTE_TYPE "_type"
|
|
-#define EX_ATTRIBUTE_TYPENAME "_typename"
|
|
-#define EX_ATTRIBUTE_NAME "_name"
|
|
-#define EX_ATTRIBUTE_ID "_id"
|
|
+#define ATT_MAX_NAME_LENGTH "maximum_name_length"
|
|
+#define ATT_INT64_STATUS "int64_status"
|
|
+#define ATT_NEM_API_VERSION "nemesis_api_version"
|
|
+#define ATT_NEM_FILE_VERSION "nemesis_file_version"
|
|
+#define ATT_PROCESSOR_INFO "processor_info"
|
|
+#define ATT_LAST_WRITTEN_TIME "last_written_time"
|
|
+
|
|
+#define DIM_NUM_ASSEMBLY "num_assembly" /**< number of assemblies */
|
|
+#define DIM_NUM_BLOB "num_blob" /**< number of blobs */
|
|
+#define DIM_NUM_NODES "num_nodes" /**< number of nodes */
|
|
+#define DIM_NUM_DIM "num_dim" /**< number of dimensions; 2- or 3-d*/
|
|
+#define DIM_NUM_EDGE "num_edge" /**< number of edges (over all blks)*/
|
|
+#define DIM_NUM_FACE "num_face" /**< number of faces (over all blks)*/
|
|
+#define DIM_NUM_ELEM "num_elem" /**< number of elements */
|
|
+#define DIM_NUM_EL_BLK "num_el_blk" /**< number of element blocks */
|
|
+#define DIM_NUM_ED_BLK "num_ed_blk" /**< number of edge blocks */
|
|
+#define DIM_NUM_FA_BLK "num_fa_blk" /**< number 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 DIM_NUM_ENTITY_ASSEMBLY(num) exi_catstr("num_entity_assembly", num)
|
|
+#define VAR_ENTITY_ASSEMBLY(num) exi_catstr("assembly_entity", num)
|
|
+#define DIM_NUM_VALUES_BLOB(num) exi_catstr("num_values_blob", num)
|
|
+#define VAR_ENTITY_BLOB(num) exi_catstr("blob_entity", num)
|
|
+#define EX_ATTRIBUTE_TYPE "_type"
|
|
+#define EX_ATTRIBUTE_TYPENAME "_typename"
|
|
+#define EX_ATTRIBUTE_NAME "_name"
|
|
+#define EX_ATTRIBUTE_ID "_id"
|
|
|
|
/*! element type names for each element block */
|
|
#define ATT_NAME_ELB "elem_type"
|
|
/*! number of elements in element block num */
|
|
-#define DIM_NUM_EL_IN_BLK(num) ex__catstr("num_el_in_blk", num)
|
|
+#define DIM_NUM_EL_IN_BLK(num) exi_catstr("num_el_in_blk", num)
|
|
/*! number of nodes per element in element block num */
|
|
-#define DIM_NUM_NOD_PER_EL(num) ex__catstr("num_nod_per_el", num)
|
|
+#define DIM_NUM_NOD_PER_EL(num) exi_catstr("num_nod_per_el", num)
|
|
/*! number of attributes in element block num */
|
|
-#define DIM_NUM_ATT_IN_BLK(num) ex__catstr("num_att_in_blk", num)
|
|
+#define DIM_NUM_ATT_IN_BLK(num) exi_catstr("num_att_in_blk", num)
|
|
/*! number of edges in edge block num */
|
|
-#define DIM_NUM_ED_IN_EBLK(num) ex__catstr("num_ed_in_blk", num)
|
|
+#define DIM_NUM_ED_IN_EBLK(num) exi_catstr("num_ed_in_blk", num)
|
|
/*! number of nodes per edge in edge block num */
|
|
-#define DIM_NUM_NOD_PER_ED(num) ex__catstr("num_nod_per_ed", num)
|
|
+#define DIM_NUM_NOD_PER_ED(num) exi_catstr("num_nod_per_ed", num)
|
|
/*! number of edges per element in element block num */
|
|
-#define DIM_NUM_EDG_PER_EL(num) ex__catstr("num_edg_per_el", num)
|
|
+#define DIM_NUM_EDG_PER_EL(num) exi_catstr("num_edg_per_el", num)
|
|
/*! number of attributes in edge block num */
|
|
-#define DIM_NUM_ATT_IN_EBLK(num) ex__catstr("num_att_in_eblk", num)
|
|
+#define DIM_NUM_ATT_IN_EBLK(num) exi_catstr("num_att_in_eblk", num)
|
|
/*! number of faces in face block num */
|
|
-#define DIM_NUM_FA_IN_FBLK(num) ex__catstr("num_fa_in_blk", num)
|
|
+#define DIM_NUM_FA_IN_FBLK(num) exi_catstr("num_fa_in_blk", num)
|
|
/*! number of nodes per face in face block num */
|
|
-#define DIM_NUM_NOD_PER_FA(num) ex__catstr("num_nod_per_fa", num)
|
|
+#define DIM_NUM_NOD_PER_FA(num) exi_catstr("num_nod_per_fa", num)
|
|
/*! number of faces per element in element block num */
|
|
-#define DIM_NUM_FAC_PER_EL(num) ex__catstr("num_fac_per_el", num)
|
|
+#define DIM_NUM_FAC_PER_EL(num) exi_catstr("num_fac_per_el", num)
|
|
/*! number of attributes in face block num */
|
|
-#define DIM_NUM_ATT_IN_FBLK(num) ex__catstr("num_att_in_fblk", num)
|
|
+#define DIM_NUM_ATT_IN_FBLK(num) exi_catstr("num_att_in_fblk", num)
|
|
/*! element connectivity for element block num */
|
|
-#define VAR_CONN(num) ex__catstr("connect", num)
|
|
+#define VAR_CONN(num) exi_catstr("connect", num)
|
|
/*! array containing number of entity per */
|
|
/* entity for n-sided face/element blocks */
|
|
-#define VAR_EBEPEC(num) ex__catstr("ebepecnt", num)
|
|
+#define VAR_EBEPEC(num) exi_catstr("ebepecnt", num)
|
|
/*! list of attributes for element block num */
|
|
-#define VAR_ATTRIB(num) ex__catstr("attrib", num)
|
|
+#define VAR_ATTRIB(num) exi_catstr("attrib", num)
|
|
/*! list of attribute names for element block num */
|
|
-#define VAR_NAME_ATTRIB(num) ex__catstr("attrib_name", num)
|
|
+#define VAR_NAME_ATTRIB(num) exi_catstr("attrib_name", num)
|
|
/*! list of the numth property for all element blocks */
|
|
-#define VAR_EB_PROP(num) ex__catstr("eb_prop", num)
|
|
+#define VAR_EB_PROP(num) exi_catstr("eb_prop", num)
|
|
/*! edge connectivity for element block num */
|
|
-#define VAR_ECONN(num) ex__catstr("edgconn", num)
|
|
+#define VAR_ECONN(num) exi_catstr("edgconn", num)
|
|
/*! edge connectivity for edge block num */
|
|
-#define VAR_EBCONN(num) ex__catstr("ebconn", num)
|
|
+#define VAR_EBCONN(num) exi_catstr("ebconn", num)
|
|
/*! list of attributes for edge block num */
|
|
-#define VAR_EATTRIB(num) ex__catstr("eattrb", num)
|
|
+#define VAR_EATTRIB(num) exi_catstr("eattrb", num)
|
|
/*! list of attribute names for edge block num */
|
|
-#define VAR_NAME_EATTRIB(num) ex__catstr("eattrib_name", num)
|
|
-#define VAR_NATTRIB "nattrb"
|
|
-#define VAR_NAME_NATTRIB "nattrib_name"
|
|
-#define DIM_NUM_ATT_IN_NBLK "num_att_in_nblk"
|
|
+#define VAR_NAME_EATTRIB(num) exi_catstr("eattrib_name", 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_NSATTRIB(num) exi_catstr("nsattrb", num)
|
|
+#define VAR_NAME_NSATTRIB(num) exi_catstr("nsattrib_name", num)
|
|
+#define DIM_NUM_ATT_IN_NS(num) exi_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_SSATTRIB(num) exi_catstr("ssattrb", num)
|
|
+#define VAR_NAME_SSATTRIB(num) exi_catstr("ssattrib_name", num)
|
|
+#define DIM_NUM_ATT_IN_SS(num) exi_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_ESATTRIB(num) exi_catstr("esattrb", num)
|
|
+#define VAR_NAME_ESATTRIB(num) exi_catstr("esattrib_name", num)
|
|
+#define DIM_NUM_ATT_IN_ES(num) exi_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_FSATTRIB(num) exi_catstr("fsattrb", num)
|
|
+#define VAR_NAME_FSATTRIB(num) exi_catstr("fsattrib_name", num)
|
|
+#define DIM_NUM_ATT_IN_FS(num) exi_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_ELSATTRIB(num) exi_catstr("elsattrb", num)
|
|
+#define VAR_NAME_ELSATTRIB(num) exi_catstr("elsattrib_name", num)
|
|
+#define DIM_NUM_ATT_IN_ELS(num) exi_catstr("num_att_in_els", num)
|
|
|
|
/*! list of the numth property for all edge blocks */
|
|
-#define VAR_ED_PROP(num) ex__catstr("ed_prop", num)
|
|
+#define VAR_ED_PROP(num) exi_catstr("ed_prop", num)
|
|
/*! face connectivity for element block num */
|
|
-#define VAR_FCONN(num) ex__catstr("facconn", num)
|
|
+#define VAR_FCONN(num) exi_catstr("facconn", num)
|
|
/*! face connectivity for face block num */
|
|
-#define VAR_FBCONN(num) ex__catstr("fbconn", num)
|
|
+#define VAR_FBCONN(num) exi_catstr("fbconn", num)
|
|
/*! array containing number of entity per entity for n-sided face/element blocks */
|
|
-#define VAR_FBEPEC(num) ex__catstr("fbepecnt", num)
|
|
+#define VAR_FBEPEC(num) exi_catstr("fbepecnt", num)
|
|
/*! list of attributes for face block num */
|
|
-#define VAR_FATTRIB(num) ex__catstr("fattrb", num)
|
|
+#define VAR_FATTRIB(num) exi_catstr("fattrb", num)
|
|
/*! list of attribute names for face block num */
|
|
-#define VAR_NAME_FATTRIB(num) ex__catstr("fattrib_name", num)
|
|
+#define VAR_NAME_FATTRIB(num) exi_catstr("fattrib_name", num)
|
|
/*! list of the numth property for all face blocks */
|
|
-#define VAR_FA_PROP(num) ex__catstr("fa_prop", num)
|
|
+#define VAR_FA_PROP(num) exi_catstr("fa_prop", num)
|
|
/*! name attached to element block, node set, side set, element map,
|
|
or map properties */
|
|
#define ATT_PROP_NAME "name"
|
|
-#define VAR_MAP "elem_map" /**< element order map */
|
|
-#define DIM_NUM_SS "num_side_sets" /**< number of side sets */
|
|
-#define VAR_SS_STAT "ss_status" /**< side set status */
|
|
-#define VAR_SS_IDS "ss_prop1" /**< side set id properties */
|
|
+#define VAR_MAP "elem_map" /**< element order map */
|
|
+#define DIM_NUM_SS "num_side_sets" /**< number of side sets */
|
|
+#define VAR_SS_STAT "ss_status" /**< side set status */
|
|
+#define VAR_SS_IDS "ss_prop1" /**< side set id properties */
|
|
/*! number of sides in side set num*/
|
|
-#define DIM_NUM_SIDE_SS(num) ex__catstr("num_side_ss", num)
|
|
+#define DIM_NUM_SIDE_SS(num) exi_catstr("num_side_ss", num)
|
|
/*! number of distribution factors in side set num */
|
|
-#define DIM_NUM_DF_SS(num) ex__catstr("num_df_ss", num)
|
|
+#define DIM_NUM_DF_SS(num) exi_catstr("num_df_ss", num)
|
|
/*! the distribution factors for each node in side set num */
|
|
-#define VAR_FACT_SS(num) ex__catstr("dist_fact_ss", num)
|
|
+#define VAR_FACT_SS(num) exi_catstr("dist_fact_ss", num)
|
|
/*! list of elements in side set num */
|
|
-#define VAR_ELEM_SS(num) ex__catstr("elem_ss", num)
|
|
+#define VAR_ELEM_SS(num) exi_catstr("elem_ss", num)
|
|
/*! list of sides in side set */
|
|
-#define VAR_SIDE_SS(num) ex__catstr("side_ss", num)
|
|
+#define VAR_SIDE_SS(num) exi_catstr("side_ss", num)
|
|
/*! list of the numth property for all side sets */
|
|
-#define VAR_SS_PROP(num) ex__catstr("ss_prop", num)
|
|
-#define DIM_NUM_ES "num_edge_sets" /**< number of edge sets */
|
|
-#define VAR_ES_STAT "es_status" /**< edge set status */
|
|
-#define VAR_ES_IDS "es_prop1" /**< edge set id properties */
|
|
+#define VAR_SS_PROP(num) exi_catstr("ss_prop", num)
|
|
+#define DIM_NUM_ES "num_edge_sets" /**< number of edge sets */
|
|
+#define VAR_ES_STAT "es_status" /**< edge set status */
|
|
+#define VAR_ES_IDS "es_prop1" /**< edge set id properties */
|
|
/*! number of edges in edge set num*/
|
|
-#define DIM_NUM_EDGE_ES(num) ex__catstr("num_edge_es", num)
|
|
+#define DIM_NUM_EDGE_ES(num) exi_catstr("num_edge_es", num)
|
|
/*! number of distribution factors in edge set num */
|
|
-#define DIM_NUM_DF_ES(num) ex__catstr("num_df_es", num)
|
|
+#define DIM_NUM_DF_ES(num) exi_catstr("num_df_es", num)
|
|
/*! the distribution factors for each node in edge set num */
|
|
-#define VAR_FACT_ES(num) ex__catstr("dist_fact_es", num)
|
|
+#define VAR_FACT_ES(num) exi_catstr("dist_fact_es", num)
|
|
/*! list of edges in edge set num */
|
|
-#define VAR_EDGE_ES(num) ex__catstr("edge_es", num)
|
|
+#define VAR_EDGE_ES(num) exi_catstr("edge_es", num)
|
|
/*! list of orientations in the edge set. */
|
|
-#define VAR_ORNT_ES(num) ex__catstr("ornt_es", num)
|
|
+#define VAR_ORNT_ES(num) exi_catstr("ornt_es", num)
|
|
/*! list of the numth property for all edge sets */
|
|
-#define VAR_ES_PROP(num) ex__catstr("es_prop", num)
|
|
-#define DIM_NUM_FS "num_face_sets" /**< number of face sets */
|
|
-#define VAR_FS_STAT "fs_status" /**< face set status */
|
|
-#define VAR_FS_IDS "fs_prop1" /**< face set id properties */
|
|
+#define VAR_ES_PROP(num) exi_catstr("es_prop", num)
|
|
+#define DIM_NUM_FS "num_face_sets" /**< number of face sets */
|
|
+#define VAR_FS_STAT "fs_status" /**< face set status */
|
|
+#define VAR_FS_IDS "fs_prop1" /**< face set id properties */
|
|
/*! number of faces in side set num*/
|
|
-#define DIM_NUM_FACE_FS(num) ex__catstr("num_face_fs", num)
|
|
+#define DIM_NUM_FACE_FS(num) exi_catstr("num_face_fs", num)
|
|
/*! number of distribution factors in face set num */
|
|
-#define DIM_NUM_DF_FS(num) ex__catstr("num_df_fs", num)
|
|
+#define DIM_NUM_DF_FS(num) exi_catstr("num_df_fs", num)
|
|
/*! the distribution factors for each node in face set num */
|
|
-#define VAR_FACT_FS(num) ex__catstr("dist_fact_fs", num)
|
|
+#define VAR_FACT_FS(num) exi_catstr("dist_fact_fs", num)
|
|
/*! list of elements in face set num */
|
|
-#define VAR_FACE_FS(num) ex__catstr("face_fs", num)
|
|
+#define VAR_FACE_FS(num) exi_catstr("face_fs", num)
|
|
/*! list of sides in side set */
|
|
-#define VAR_ORNT_FS(num) ex__catstr("ornt_fs", num)
|
|
+#define VAR_ORNT_FS(num) exi_catstr("ornt_fs", num)
|
|
/*! list of the numth property for all face sets */
|
|
-#define VAR_FS_PROP(num) ex__catstr("fs_prop", num)
|
|
-#define DIM_NUM_ELS "num_elem_sets" /**< number of elem sets */
|
|
+#define VAR_FS_PROP(num) exi_catstr("fs_prop", num)
|
|
+#define DIM_NUM_ELS "num_elem_sets" /**< number of elem sets */
|
|
/*! number of elements in elem set num */
|
|
-#define DIM_NUM_ELE_ELS(num) ex__catstr("num_ele_els", num)
|
|
+#define DIM_NUM_ELE_ELS(num) exi_catstr("num_ele_els", num)
|
|
/*! number of distribution factors in element set num */
|
|
-#define DIM_NUM_DF_ELS(num) ex__catstr("num_df_els", num)
|
|
-#define VAR_ELS_STAT "els_status" /**< elem set status */
|
|
-#define VAR_ELS_IDS "els_prop1" /**< elem set id properties */
|
|
+#define DIM_NUM_DF_ELS(num) exi_catstr("num_df_els", num)
|
|
+#define VAR_ELS_STAT "els_status" /**< elem set status */
|
|
+#define VAR_ELS_IDS "els_prop1" /**< elem set id properties */
|
|
/*! list of elements in elem set num */
|
|
-#define VAR_ELEM_ELS(num) ex__catstr("elem_els", num)
|
|
+#define VAR_ELEM_ELS(num) exi_catstr("elem_els", num)
|
|
/*! list of distribution factors in elem set num */
|
|
-#define VAR_FACT_ELS(num) ex__catstr("dist_fact_els", num)
|
|
+#define VAR_FACT_ELS(num) exi_catstr("dist_fact_els", num)
|
|
/*! list of the numth property for all elem sets */
|
|
-#define VAR_ELS_PROP(num) ex__catstr("els_prop", num)
|
|
-#define DIM_NUM_NS "num_node_sets" /**< number of node sets */
|
|
+#define VAR_ELS_PROP(num) exi_catstr("els_prop", num)
|
|
+#define DIM_NUM_NS "num_node_sets" /**< number of node sets */
|
|
/*! number of nodes in node set num */
|
|
-#define DIM_NUM_NOD_NS(num) ex__catstr("num_nod_ns", num)
|
|
+#define DIM_NUM_NOD_NS(num) exi_catstr("num_nod_ns", num)
|
|
/*! number of distribution factors in node set num */
|
|
-#define DIM_NUM_DF_NS(num) ex__catstr("num_df_ns", num)
|
|
-#define VAR_NS_STAT "ns_status" /**< node set status */
|
|
-#define VAR_NS_IDS "ns_prop1" /**< node set id properties */
|
|
+#define DIM_NUM_DF_NS(num) exi_catstr("num_df_ns", num)
|
|
+#define VAR_NS_STAT "ns_status" /**< node set status */
|
|
+#define VAR_NS_IDS "ns_prop1" /**< node set id properties */
|
|
/*! list of nodes in node set num */
|
|
-#define VAR_NODE_NS(num) ex__catstr("node_ns", num)
|
|
+#define VAR_NODE_NS(num) exi_catstr("node_ns", num)
|
|
/*! list of distribution factors in node set num */
|
|
-#define VAR_FACT_NS(num) ex__catstr("dist_fact_ns", num)
|
|
+#define VAR_FACT_NS(num) exi_catstr("dist_fact_ns", num)
|
|
/*! list of the numth property for all node sets */
|
|
-#define VAR_NS_PROP(num) ex__catstr("ns_prop", num)
|
|
-#define DIM_NUM_QA "num_qa_rec" /**< number of QA records */
|
|
-#define VAR_QA_TITLE "qa_records" /**< QA records */
|
|
-#define DIM_NUM_INFO "num_info" /**< number of information records */
|
|
-#define VAR_INFO "info_records" /**< information records */
|
|
-#define VAR_WHOLE_TIME "time_whole" /**< simulation times for whole time steps */
|
|
+#define VAR_NS_PROP(num) exi_catstr("ns_prop", num)
|
|
+#define DIM_NUM_QA "num_qa_rec" /**< number of QA records */
|
|
+#define VAR_QA_TITLE "qa_records" /**< QA records */
|
|
+#define DIM_NUM_INFO "num_info" /**< number of information records */
|
|
+#define VAR_INFO "info_records" /**< information records */
|
|
+#define VAR_WHOLE_TIME "time_whole" /**< simulation times for whole time steps */
|
|
#define VAR_ASSEMBLY_TAB "assembly_var_tab" /**< assembly variable truth table */
|
|
-#define VAR_BLOB_TAB "blob_var_tab" /**< blob variable truth table */
|
|
-#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" /**< number 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" /**< number 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 \deprecated */
|
|
+#define VAR_BLOB_TAB "blob_var_tab" /**< blob variable truth table */
|
|
+#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" /**< number 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" /**< number 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 \deprecated */
|
|
/*! values of nodal variables */
|
|
-#define VAR_NOD_VAR_NEW(num) ex__catstr("vals_nod_var", num)
|
|
+#define VAR_NOD_VAR_NEW(num) exi_catstr("vals_nod_var", num)
|
|
|
|
-#define DIM_NUM_ASSEMBLY_VAR "num_assembly_var" /**< number of assembly variables */
|
|
-#define VAR_NAME_ASSEMBLY_VAR "name_assembly_var" /**< names of assembly variables*/
|
|
-#define VAR_ASSEMBLY_VAR(num1, num2) ex__catstr2("vals_assembly_var", num1, "assembly", num2)
|
|
+#define DIM_NUM_ASSEMBLY_VAR "num_assembly_var" /**< number of assembly variables */
|
|
+#define VAR_NAME_ASSEMBLY_VAR "name_assembly_var" /**< names of assembly variables*/
|
|
+#define VAR_ASSEMBLY_VAR(num1, num2) exi_catstr2("vals_assembly_var", num1, "assembly", num2)
|
|
|
|
-#define DIM_NUM_BLOB_VAR "num_blob_var" /**< number of blob variables */
|
|
-#define VAR_NAME_BLOB_VAR "name_blob_var" /**< names of blob variables*/
|
|
-#define VAR_BLOB_VAR(num1, num2) ex__catstr2("vals_blob_var", num1, "blob", num2)
|
|
+#define DIM_NUM_BLOB_VAR "num_blob_var" /**< number of blob variables */
|
|
+#define VAR_NAME_BLOB_VAR "name_blob_var" /**< names of blob variables*/
|
|
+#define VAR_BLOB_VAR(num1, num2) exi_catstr2("vals_blob_var", num1, "blob", num2)
|
|
|
|
-#define DIM_NUM_ELE_VAR "num_elem_var" /**< number of element variables */
|
|
+#define DIM_NUM_ELE_VAR "num_elem_var" /**< number of element variables */
|
|
#define VAR_NAME_ELE_VAR "name_elem_var" /**< names of element variables*/
|
|
/*! values of element variable num1 in element block num2 */
|
|
-#define VAR_ELEM_VAR(num1, num2) ex__catstr2("vals_elem_var", num1, "eb", num2)
|
|
-#define DIM_NUM_EDG_VAR "num_edge_var" /**< number of edge variables */
|
|
-#define VAR_NAME_EDG_VAR "name_edge_var" /**< names of edge variables */
|
|
+#define VAR_ELEM_VAR(num1, num2) exi_catstr2("vals_elem_var", num1, "eb", num2)
|
|
+#define DIM_NUM_EDG_VAR "num_edge_var" /**< number of edge variables */
|
|
+#define VAR_NAME_EDG_VAR "name_edge_var" /**< names of edge variables */
|
|
/*! values of edge variable num1 in edge block num2 */
|
|
-#define VAR_EDGE_VAR(num1, num2) ex__catstr2("vals_edge_var", num1, "eb", num2)
|
|
-#define DIM_NUM_FAC_VAR "num_face_var" /**< number of face variables */
|
|
-#define VAR_NAME_FAC_VAR "name_face_var" /**< names of face variables */
|
|
+#define VAR_EDGE_VAR(num1, num2) exi_catstr2("vals_edge_var", num1, "eb", num2)
|
|
+#define DIM_NUM_FAC_VAR "num_face_var" /**< number of face variables */
|
|
+#define VAR_NAME_FAC_VAR "name_face_var" /**< names of face variables */
|
|
/*! values of face variable num1 in face block num2 */
|
|
-#define VAR_FACE_VAR(num1, num2) ex__catstr2("vals_face_var", num1, "fb", num2)
|
|
+#define VAR_FACE_VAR(num1, num2) exi_catstr2("vals_face_var", num1, "fb", num2)
|
|
|
|
-#define DIM_NUM_NSET_VAR "num_nset_var" /**< number of nodeset variables */
|
|
+#define DIM_NUM_NSET_VAR "num_nset_var" /**< number of nodeset variables */
|
|
#define VAR_NAME_NSET_VAR "name_nset_var" /**< names of nodeset variables*/
|
|
/*! values of nodeset variable num1 in nodeset num2 */
|
|
-#define VAR_NS_VAR(num1, num2) ex__catstr2("vals_nset_var", num1, "ns", num2)
|
|
-#define DIM_NUM_ESET_VAR "num_eset_var" /**< number of edgeset variables */
|
|
+#define VAR_NS_VAR(num1, num2) exi_catstr2("vals_nset_var", num1, "ns", num2)
|
|
+#define DIM_NUM_ESET_VAR "num_eset_var" /**< number of edgeset variables */
|
|
/*! values of edgeset variable num1 in edgeset num2 */
|
|
-#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)
|
|
-#define DIM_NUM_FSET_VAR "num_fset_var" /**< number of faceset variables */
|
|
-#define VAR_NAME_FSET_VAR "name_fset_var" /**< names of faceset variables*/
|
|
+#define VAR_NAME_ESET_VAR "name_eset_var" /**< names of edgeset variables*/
|
|
+#define VAR_ES_VAR(num1, num2) exi_catstr2("vals_eset_var", num1, "es", num2)
|
|
+#define DIM_NUM_FSET_VAR "num_fset_var" /**< number of faceset variables */
|
|
+#define VAR_NAME_FSET_VAR "name_fset_var" /**< names of faceset variables*/
|
|
/*! values of faceset variable num1 in faceset num2 */
|
|
-#define VAR_FS_VAR(num1, num2) ex__catstr2("vals_fset_var", num1, "fs", num2)
|
|
-#define DIM_NUM_SSET_VAR "num_sset_var" /**< number of sideset variables */
|
|
-#define VAR_NAME_SSET_VAR "name_sset_var" /**< names of sideset variables*/
|
|
+#define VAR_FS_VAR(num1, num2) exi_catstr2("vals_fset_var", num1, "fs", num2)
|
|
+#define DIM_NUM_SSET_VAR "num_sset_var" /**< number of sideset variables */
|
|
+#define VAR_NAME_SSET_VAR "name_sset_var" /**< names of sideset variables*/
|
|
/*! values of sideset variable num1 in sideset num2 */
|
|
-#define VAR_SS_VAR(num1, num2) ex__catstr2("vals_sset_var", num1, "ss", num2)
|
|
-#define DIM_NUM_ELSET_VAR "num_elset_var" /**< number of element set variables*/
|
|
-#define VAR_NAME_ELSET_VAR "name_elset_var" /**< names of elemset variables*/
|
|
+#define VAR_SS_VAR(num1, num2) exi_catstr2("vals_sset_var", num1, "ss", num2)
|
|
+#define DIM_NUM_ELSET_VAR "num_elset_var" /**< number of element set variables*/
|
|
+#define VAR_NAME_ELSET_VAR "name_elset_var" /**< names of elemset variables*/
|
|
/*! values of elemset variable num1 in elemset num2 */
|
|
-#define VAR_ELS_VAR(num1, num2) ex__catstr2("vals_elset_var", num1, "es", num2)
|
|
+#define VAR_ELS_VAR(num1, num2) exi_catstr2("vals_elset_var", num1, "es", num2)
|
|
|
|
/**
|
|
* \defgroup ReductionVariables Variables controlling storage of reduction variables
|
|
*@{
|
|
*/
|
|
-#define DIM_NUM_ASSEMBLY_RED_VAR "num_assembly_red_var" /**< number of assembly variables */
|
|
+#define DIM_NUM_ASSEMBLY_RED_VAR "num_assembly_red_var" /**< number of assembly variables */
|
|
#define VAR_NAME_ASSEMBLY_RED_VAR "name_assembly_red_var" /**< names of assembly variables*/
|
|
-#define VAR_ASSEMBLY_RED_VAR(num) ex__catstr("vals_red_var_assembly", num)
|
|
+#define VAR_ASSEMBLY_RED_VAR(num) exi_catstr("vals_red_var_assembly", num)
|
|
|
|
-#define DIM_NUM_BLOB_RED_VAR "num_blob_red_var" /**< number of blob variables */
|
|
+#define DIM_NUM_BLOB_RED_VAR "num_blob_red_var" /**< number of blob variables */
|
|
#define VAR_NAME_BLOB_RED_VAR "name_blob_red_var" /**< names of blob variables*/
|
|
-#define VAR_BLOB_RED_VAR(num) ex__catstr("vals_red_var_blob", num)
|
|
+#define VAR_BLOB_RED_VAR(num) exi_catstr("vals_red_var_blob", num)
|
|
|
|
-#define DIM_NUM_ELE_RED_VAR "num_elem_red_var" /**< number of element variables */
|
|
+#define DIM_NUM_ELE_RED_VAR "num_elem_red_var" /**< number of element variables */
|
|
#define VAR_NAME_ELE_RED_VAR "name_elem_red_var" /**< names of element variables*/
|
|
/*! values of element variable num in element block num */
|
|
-#define VAR_ELEM_RED_VAR(num) ex__catstr("vals_red_var_eb", num)
|
|
+#define VAR_ELEM_RED_VAR(num) exi_catstr("vals_red_var_eb", num)
|
|
|
|
-#define DIM_NUM_EDG_RED_VAR "num_edge_red_var" /**< number of edge variables */
|
|
+#define DIM_NUM_EDG_RED_VAR "num_edge_red_var" /**< number of edge variables */
|
|
#define VAR_NAME_EDG_RED_VAR "name_edge_red_var" /**< names of edge variables */
|
|
/*! values of edge variable num in edge block num */
|
|
-#define VAR_EDGE_RED_VAR(num) ex__catstr("vals_red_var_edb", num)
|
|
+#define VAR_EDGE_RED_VAR(num) exi_catstr("vals_red_var_edb", num)
|
|
|
|
-#define DIM_NUM_FAC_RED_VAR "num_face_red_var" /**< number of face variables */
|
|
+#define DIM_NUM_FAC_RED_VAR "num_face_red_var" /**< number of face variables */
|
|
#define VAR_NAME_FAC_RED_VAR "name_face_red_var" /**< names of face variables */
|
|
/*! values of face variable num in face block num */
|
|
-#define VAR_FACE_RED_VAR(num) ex__catstr("vals_red_var_fb", num)
|
|
+#define VAR_FACE_RED_VAR(num) exi_catstr("vals_red_var_fb", num)
|
|
|
|
-#define DIM_NUM_NSET_RED_VAR "num_nset_red_var" /**< number of nodeset variables */
|
|
+#define DIM_NUM_NSET_RED_VAR "num_nset_red_var" /**< number of nodeset variables */
|
|
#define VAR_NAME_NSET_RED_VAR "name_nset_red_var" /**< names of nodeset variables*/
|
|
/*! values of nodeset variable num in nodeset num */
|
|
-#define VAR_NS_RED_VAR(num) ex__catstr("vals_red_var_nset", num)
|
|
+#define VAR_NS_RED_VAR(num) exi_catstr("vals_red_var_nset", num)
|
|
|
|
#define DIM_NUM_ESET_RED_VAR "num_eset_red_var" /**< number of edgeset variables */
|
|
/*! values of edgeset variable num in edgeset num */
|
|
#define VAR_NAME_ESET_RED_VAR "name_eset_red_var" /**< names of edgeset variables*/
|
|
-#define VAR_ES_RED_VAR(num) ex__catstr("vals_red_var_eset", num)
|
|
+#define VAR_ES_RED_VAR(num) exi_catstr("vals_red_var_eset", num)
|
|
|
|
-#define DIM_NUM_FSET_RED_VAR "num_fset_red_var" /**< number of faceset variables */
|
|
+#define DIM_NUM_FSET_RED_VAR "num_fset_red_var" /**< number of faceset variables */
|
|
#define VAR_NAME_FSET_RED_VAR "name_fset_red_var" /**< names of faceset variables*/
|
|
/*! values of faceset variable num in faceset num */
|
|
-#define VAR_FS_RED_VAR(num) ex__catstr("vals_red_var_fset", num)
|
|
+#define VAR_FS_RED_VAR(num) exi_catstr("vals_red_var_fset", num)
|
|
|
|
-#define DIM_NUM_SSET_RED_VAR "num_sset_red_var" /**< number of sideset variables */
|
|
+#define DIM_NUM_SSET_RED_VAR "num_sset_red_var" /**< number of sideset variables */
|
|
#define VAR_NAME_SSET_RED_VAR "name_sset_red_var" /**< names of sideset variables*/
|
|
/*! values of sideset variable num in sideset num */
|
|
-#define VAR_SS_RED_VAR(num) ex__catstr("vals_red_var_sset", num)
|
|
+#define VAR_SS_RED_VAR(num) exi_catstr("vals_red_var_sset", num)
|
|
|
|
-#define DIM_NUM_ELSET_RED_VAR "num_elset_red_var" /**< number of element set variables*/
|
|
+#define DIM_NUM_ELSET_RED_VAR "num_elset_red_var" /**< number of element set variables*/
|
|
#define VAR_NAME_ELSET_RED_VAR "name_elset_red_var" /**< names of elemset variables*/
|
|
/*! values of elemset variable num in elemset num */
|
|
-#define VAR_ELS_RED_VAR(num) ex__catstr("vals_red_var_elset", num)
|
|
+#define VAR_ELS_RED_VAR(num) exi_catstr("vals_red_var_elset", num)
|
|
/** @}*/
|
|
|
|
/*! general dimension of length MAX_STR_LENGTH used for some string lengths */
|
|
@@ -566,101 +583,101 @@ EXODUS_EXPORT int indent;
|
|
#define DIM_STR_NAME "len_name"
|
|
/*! general dimension of length MAX_LINE_LENGTH used for long strings */
|
|
#define DIM_LIN "len_line"
|
|
-#define DIM_N4 "four"
|
|
-#define DIM_N1 "blob_entity"
|
|
+#define DIM_N4 "four"
|
|
+#define DIM_N1 "blob_entity"
|
|
/*! unlimited (expandable) dimension for time steps*/
|
|
-#define DIM_TIME "time_step"
|
|
-#define VAR_ELEM_NUM_MAP "elem_num_map" /**< element numbering map */
|
|
-#define VAR_FACE_NUM_MAP "face_num_map" /**< face numbering map */
|
|
-#define VAR_EDGE_NUM_MAP "edge_num_map" /**< edge numbering map */
|
|
-#define VAR_NODE_NUM_MAP "node_num_map" /**< node numbering map */
|
|
-#define DIM_NUM_EM "num_elem_maps" /**< number of element maps */
|
|
+#define DIM_TIME "time_step"
|
|
+#define VAR_ELEM_NUM_MAP "elem_num_map" /**< element numbering map */
|
|
+#define VAR_FACE_NUM_MAP "face_num_map" /**< face numbering map */
|
|
+#define VAR_EDGE_NUM_MAP "edge_num_map" /**< edge numbering map */
|
|
+#define VAR_NODE_NUM_MAP "node_num_map" /**< node numbering map */
|
|
+#define DIM_NUM_EM "num_elem_maps" /**< number of element maps */
|
|
/*! the numth element map */
|
|
-#define VAR_ELEM_MAP(num) ex__catstr("elem_map", num)
|
|
+#define VAR_ELEM_MAP(num) exi_catstr("elem_map", num)
|
|
/*! list of the numth property for all element maps */
|
|
-#define VAR_EM_PROP(num) ex__catstr("em_prop", num)
|
|
-#define DIM_NUM_EDM "num_edge_maps" /**< number of edge maps */
|
|
+#define VAR_EM_PROP(num) exi_catstr("em_prop", num)
|
|
+#define DIM_NUM_EDM "num_edge_maps" /**< number of edge maps */
|
|
/*! the numth edge map */
|
|
-#define VAR_EDGE_MAP(num) ex__catstr("edge_map", num)
|
|
+#define VAR_EDGE_MAP(num) exi_catstr("edge_map", num)
|
|
/* list of the numth property for all edge maps */
|
|
-#define VAR_EDM_PROP(num) ex__catstr("edm_prop", num)
|
|
-#define DIM_NUM_FAM "num_face_maps" /**< number of face maps */
|
|
+#define VAR_EDM_PROP(num) exi_catstr("edm_prop", num)
|
|
+#define DIM_NUM_FAM "num_face_maps" /**< number of face maps */
|
|
/*! the numth face map */
|
|
-#define VAR_FACE_MAP(num) ex__catstr("face_map", num)
|
|
+#define VAR_FACE_MAP(num) exi_catstr("face_map", num)
|
|
/*! list of the numth property for all face maps */
|
|
-#define VAR_FAM_PROP(num) ex__catstr("fam_prop", num)
|
|
-#define DIM_NUM_NM "num_node_maps" /**< number of node maps */
|
|
+#define VAR_FAM_PROP(num) exi_catstr("fam_prop", num)
|
|
+#define DIM_NUM_NM "num_node_maps" /**< number of node maps */
|
|
/*! the numth node map */
|
|
-#define VAR_NODE_MAP(num) ex__catstr("node_map", num)
|
|
+#define VAR_NODE_MAP(num) exi_catstr("node_map", num)
|
|
/*! list of the numth property for all node maps */
|
|
-#define VAR_NM_PROP(num) ex__catstr("nm_prop", num)
|
|
+#define VAR_NM_PROP(num) exi_catstr("nm_prop", num)
|
|
/*! list of the numth property for all assemblies */
|
|
-#define VAR_ASSEMBLY_PROP(num) ex__catstr("assembly_prop", num)
|
|
-#define VAR_BLOB_PROP(num) ex__catstr("blob_prop", num)
|
|
+#define VAR_ASSEMBLY_PROP(num) exi_catstr("assembly_prop", num)
|
|
+#define VAR_BLOB_PROP(num) exi_catstr("blob_prop", num)
|
|
|
|
-#define DIM_NUM_CFRAMES "num_cframes"
|
|
-#define DIM_NUM_CFRAME9 "num_cframes_9"
|
|
+#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_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_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_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 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_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"
|
|
+#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 {
|
|
+enum exi_element_type {
|
|
EX_EL_UNK = -1, /**< unknown entity */
|
|
EX_EL_NULL_ELEMENT = 0,
|
|
EX_EL_TRIANGLE = 1, /**< Triangle entity */
|
|
@@ -676,39 +693,45 @@ enum ex__element_type {
|
|
EX_EL_TRISHELL = 11, /**< Triangular Shell entity */
|
|
EX_EL_PYRAMID = 12 /**< Pyramid entity */
|
|
};
|
|
-typedef enum ex__element_type ex__element_type;
|
|
+typedef enum exi_element_type exi_element_type;
|
|
|
|
/* Internal structure declarations */
|
|
|
|
-struct ex__file_item
|
|
+struct exi_file_item
|
|
{
|
|
- int file_id;
|
|
- nc_type netcdf_type_code;
|
|
- int int64_status;
|
|
- int maximum_name_length;
|
|
- int time_varid; /* Store to avoid lookup each timestep */
|
|
+ int file_id;
|
|
+ nc_type netcdf_type_code;
|
|
+ int int64_status;
|
|
+ int maximum_name_length;
|
|
+ int time_varid; /* Store to avoid lookup each timestep */
|
|
+ int compression_level; /**< 0 (disabled) to 9 (maximum) compression level for
|
|
+ gzip, 4..32 and even for szip; -131072..22 for zstd, NetCDF-4 only */
|
|
unsigned int assembly_count;
|
|
unsigned int blob_count;
|
|
+
|
|
+ unsigned int persist_define_mode : 10; /**< Stay in define mode until exi_persist_leavedef is
|
|
+ called. Set by exi_persist_redef... */
|
|
unsigned int
|
|
- compression_algorithm : 2; /**< GZIP/ZLIB, SZIP, more may be supported by NetCDF soon */
|
|
- unsigned int compression_level : 6; /**< 0 (disabled) to 9 (maximum) compression level for
|
|
- gzip, 4..32 and even for szip; NetCDF-4 only */
|
|
+ compression_algorithm : 4; /**< GZIP/ZLIB, SZIP, more may be supported by NetCDF soon */
|
|
+ unsigned int quantize_nsd : 4; /**< 0 (disabled) to 15 (maximum) number of significant digits
|
|
+ retained for lossy quanitzation compression */
|
|
+ unsigned int shuffle : 1; /**< 1 true, 0 false */
|
|
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_write : 1; /**< for output or append */
|
|
- unsigned int is_parallel : 1; /**< 1 true, 0 false */
|
|
- unsigned int is_hdf5 : 1; /**< 1 true, 0 false */
|
|
- unsigned int is_pnetcdf : 1; /**< 1 true, 0 false */
|
|
- unsigned int has_nodes : 1; /**< for input only at this time */
|
|
- unsigned int has_edges : 1; /**< for input only at this time */
|
|
- unsigned int has_faces : 1; /**< for input only at this time */
|
|
- unsigned int has_elems : 1; /**< for input only at this time */
|
|
- struct ex__file_item *next;
|
|
+ unsigned int is_write : 1; /**< for output or append */
|
|
+ unsigned int is_parallel : 1; /**< 1 true, 0 false */
|
|
+ unsigned int is_hdf5 : 1; /**< 1 true, 0 false */
|
|
+ unsigned int is_pnetcdf : 1; /**< 1 true, 0 false */
|
|
+ unsigned int has_nodes : 1; /**< for input only at this time */
|
|
+ unsigned int has_edges : 1; /**< for input only at this time */
|
|
+ unsigned int has_faces : 1; /**< for input only at this time */
|
|
+ unsigned int has_elems : 1; /**< for input only at this time */
|
|
+ unsigned int in_define_mode : 1; /**< Is the file in nc define mode... */
|
|
+ struct exi_file_item *next;
|
|
};
|
|
|
|
-struct ex__elem_blk_parm
|
|
+struct exi_elem_blk_parm
|
|
{
|
|
char elem_type[33];
|
|
int64_t elem_blk_id;
|
|
@@ -718,153 +741,168 @@ struct ex__elem_blk_parm
|
|
int num_nodes_per_side[6];
|
|
int num_attr;
|
|
int64_t elem_ctr;
|
|
- ex__element_type elem_type_val;
|
|
+ exi_element_type elem_type_val;
|
|
};
|
|
|
|
/* Used in exo_jack.c for fortran interface */
|
|
-enum ex__coordinate_frame_type {
|
|
+enum exi_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;
|
|
+typedef enum exi_coordinate_frame_type exi_coordinate_frame_type;
|
|
|
|
-struct ex__list_item
|
|
+struct exi_list_item
|
|
{ /* for use with ex_get_file_item */
|
|
int exo_id;
|
|
int value;
|
|
- struct ex__list_item *next;
|
|
+ struct exi_list_item *next;
|
|
};
|
|
|
|
-struct ex__obj_stats
|
|
+struct exi_obj_stats
|
|
{
|
|
- int64_t * id_vals;
|
|
- int * stat_vals;
|
|
+ int64_t *id_vals;
|
|
+ int *stat_vals;
|
|
size_t num;
|
|
int exoid;
|
|
char valid_ids;
|
|
char valid_stat;
|
|
char sequential;
|
|
- struct ex__obj_stats *next;
|
|
+ struct exi_obj_stats *next;
|
|
};
|
|
|
|
#ifndef EXODUS_EXPORT
|
|
#define EXODUS_EXPORT extern
|
|
#endif /* EXODUS_EXPORT */
|
|
|
|
-EXODUS_EXPORT void ex__iqsort(int v[], int iv[], int N);
|
|
-EXODUS_EXPORT void ex__iqsort64(int64_t v[], int64_t iv[], int64_t N);
|
|
+EXODUS_EXPORT void exi_iqsort(int v[], int iv[], size_t N);
|
|
+EXODUS_EXPORT void exi_iqsort64(int64_t v[], int64_t iv[], int64_t N);
|
|
|
|
-EXODUS_EXPORT char *ex__catstr(const char * /*string*/, int /*num*/);
|
|
-EXODUS_EXPORT char *ex__catstr2(const char * /*string1*/, int /*num1*/, const char * /*string2*/,
|
|
+EXODUS_EXPORT char *exi_catstr(const char * /*string*/, int /*num*/);
|
|
+EXODUS_EXPORT char *exi_catstr2(const char * /*string1*/, int /*num1*/, const char * /*string2*/,
|
|
int /*num2*/);
|
|
-EXODUS_EXPORT char *ex__dim_num_entries_in_object(ex_entity_type /*obj_type*/, int /*idx*/);
|
|
-EXODUS_EXPORT char *ex__dim_num_objects(ex_entity_type obj_type);
|
|
-EXODUS_EXPORT char *ex__name_var_of_object(ex_entity_type /*obj_type*/, int /*i*/, int /*j*/);
|
|
-EXODUS_EXPORT char *ex__name_red_var_of_object(ex_entity_type /*obj_type*/, int /*indx*/);
|
|
-EXODUS_EXPORT char *ex__name_of_map(ex_entity_type /*map_type*/, int /*map_index*/);
|
|
+EXODUS_EXPORT char *exi_dim_num_entries_in_object(ex_entity_type /*obj_type*/, int /*idx*/);
|
|
+EXODUS_EXPORT char *exi_dim_num_objects(ex_entity_type obj_type);
|
|
+EXODUS_EXPORT char *exi_name_var_of_object(ex_entity_type /*obj_type*/, int /*i*/, int /*j*/);
|
|
+EXODUS_EXPORT char *exi_name_red_var_of_object(ex_entity_type /*obj_type*/, int /*indx*/);
|
|
+EXODUS_EXPORT char *exi_name_of_map(ex_entity_type /*map_type*/, int /*map_index*/);
|
|
|
|
-EXODUS_EXPORT int ex__conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_wordsize,
|
|
+EXODUS_EXPORT int exi_conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_wordsize,
|
|
int int64_status, bool is_parallel, bool is_hdf5, bool is_pnetcdf,
|
|
bool is_write);
|
|
|
|
-EXODUS_EXPORT void ex__conv_exit(int exoid);
|
|
+EXODUS_EXPORT void exi_conv_exit(int exoid);
|
|
|
|
EXODUS_EXPORT nc_type nc_flt_code(int exoid);
|
|
-EXODUS_EXPORT int ex__comp_ws(int exoid);
|
|
-EXODUS_EXPORT int ex__get_cpu_ws(void);
|
|
-EXODUS_EXPORT int ex__is_parallel(int exoid);
|
|
-
|
|
-EXODUS_EXPORT struct ex__list_item **ex__get_counter_list(ex_entity_type obj_type);
|
|
-EXODUS_EXPORT int ex__get_file_item(int /*exoid*/, struct ex__list_item ** /*list_ptr*/);
|
|
-EXODUS_EXPORT int ex__inc_file_item(int /*exoid*/, struct ex__list_item ** /*list_ptr*/);
|
|
-EXODUS_EXPORT void ex__rm_file_item(int /*exoid*/, struct ex__list_item ** /*list_ptr*/);
|
|
-
|
|
-extern struct ex__obj_stats *exoII_eb;
|
|
-extern struct ex__obj_stats *exoII_ed;
|
|
-extern struct ex__obj_stats *exoII_fa;
|
|
-extern struct ex__obj_stats *exoII_ns;
|
|
-extern struct ex__obj_stats *exoII_es;
|
|
-extern struct ex__obj_stats *exoII_fs;
|
|
-extern struct ex__obj_stats *exoII_ss;
|
|
-extern struct ex__obj_stats *exoII_els;
|
|
-extern struct ex__obj_stats *exoII_em;
|
|
-extern struct ex__obj_stats *exoII_edm;
|
|
-extern struct ex__obj_stats *exoII_fam;
|
|
-extern struct ex__obj_stats *exoII_nm;
|
|
-
|
|
-EXODUS_EXPORT struct ex__file_item *ex__find_file_item(int exoid);
|
|
-struct ex__file_item *ex__add_file_item(int exoid);
|
|
-struct ex__obj_stats *ex__get_stat_ptr(int exoid, struct ex__obj_stats **obj_ptr);
|
|
-
|
|
-EXODUS_EXPORT void ex__rm_stat_ptr(int exoid, struct ex__obj_stats **obj_ptr);
|
|
-
|
|
-EXODUS_EXPORT void ex__set_compact_storage(int exoid, int varid);
|
|
-EXODUS_EXPORT void ex__compress_variable(int exoid, int varid, int type);
|
|
-EXODUS_EXPORT int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num);
|
|
-EXODUS_EXPORT int ex__check_valid_file_id(
|
|
+EXODUS_EXPORT int exi_comp_ws(int exoid);
|
|
+EXODUS_EXPORT int exi_get_cpu_ws(void);
|
|
+EXODUS_EXPORT int exi_is_parallel(int exoid);
|
|
+
|
|
+EXODUS_EXPORT struct exi_list_item **exi_get_counter_list(ex_entity_type obj_type);
|
|
+EXODUS_EXPORT int exi_get_file_item(int /*exoid*/, struct exi_list_item **/*list_ptr*/);
|
|
+EXODUS_EXPORT int exi_inc_file_item(int /*exoid*/, struct exi_list_item **/*list_ptr*/);
|
|
+EXODUS_EXPORT void exi_rm_file_item(int /*exoid*/, struct exi_list_item ** /*list_ptr*/);
|
|
+
|
|
+extern struct exi_obj_stats *exoII_eb;
|
|
+extern struct exi_obj_stats *exoII_ed;
|
|
+extern struct exi_obj_stats *exoII_fa;
|
|
+extern struct exi_obj_stats *exoII_ns;
|
|
+extern struct exi_obj_stats *exoII_es;
|
|
+extern struct exi_obj_stats *exoII_fs;
|
|
+extern struct exi_obj_stats *exoII_ss;
|
|
+extern struct exi_obj_stats *exoII_els;
|
|
+extern struct exi_obj_stats *exoII_em;
|
|
+extern struct exi_obj_stats *exoII_edm;
|
|
+extern struct exi_obj_stats *exoII_fam;
|
|
+extern struct exi_obj_stats *exoII_nm;
|
|
+
|
|
+EXODUS_EXPORT struct exi_file_item *exi_find_file_item(int exoid);
|
|
+struct exi_file_item *exi_add_file_item(int exoid);
|
|
+struct exi_obj_stats *exi_get_stat_ptr(int exoid, struct exi_obj_stats **obj_ptr);
|
|
+
|
|
+EXODUS_EXPORT void exi_rm_stat_ptr(int exoid, struct exi_obj_stats **obj_ptr);
|
|
+
|
|
+EXODUS_EXPORT void exi_set_compact_storage(int exoid, int varid);
|
|
+EXODUS_EXPORT void exi_compress_variable(int exoid, int varid, int type);
|
|
+EXODUS_EXPORT int exi_id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num);
|
|
+EXODUS_EXPORT int exi_check_valid_file_id(
|
|
int exoid, const char *func); /** Return fatal error if exoid does not refer to valid file */
|
|
-EXODUS_EXPORT int ex__check_multiple_open(const char *path, int mode, const char *func);
|
|
-EXODUS_EXPORT int ex__check_file_type(const char *path, int *type);
|
|
-EXODUS_EXPORT int ex__get_dimension(int exoid, const char *DIMENSION, const char *label,
|
|
- size_t *count, int *dimid, const char *routine);
|
|
+EXODUS_EXPORT int exi_check_multiple_open(const char *path, int mode, const char *func);
|
|
+EXODUS_EXPORT int exi_check_file_type(const char *path, int *type);
|
|
+EXODUS_EXPORT char *exi_canonicalize_filename(const char *path);
|
|
+EXODUS_EXPORT int exi_get_dimension(int exoid, const char *DIMENSION, const char *label,
|
|
+ size_t *count, int *dimid, const char *routine);
|
|
+
|
|
+EXODUS_EXPORT int exi_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);
|
|
|
|
-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 exi_put_nodal_var_multi_time(int exoid, int nodal_var_index, int64_t num_nodes,
|
|
+ int beg_time_step, int end_time_step,
|
|
+ const void *nodal_var_vals);
|
|
|
|
-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 exi_get_nodal_var_multi_time(int exoid, int nodal_var_index, int64_t node_number,
|
|
+ int beg_time_step, int end_time_step,
|
|
+ void *nodal_var_vals);
|
|
|
|
-EXODUS_EXPORT int ex__get_nodal_var_time(int exoid, int nodal_var_index, int64_t node_number,
|
|
+EXODUS_EXPORT int exi_put_nodal_var_time(int exoid, int nodal_var_index, int64_t num_nodes,
|
|
int beg_time_step, int end_time_step,
|
|
- void *nodal_var_vals);
|
|
+ const void *nodal_var_vals);
|
|
|
|
-EXODUS_EXPORT int ex__get_partial_nodal_var(int exoid, int time_step, int nodal_var_index,
|
|
+EXODUS_EXPORT int exi_get_partial_nodal_var(int exoid, int time_step, int nodal_var_index,
|
|
int64_t start_node, int64_t num_nodes, void *var_vals);
|
|
|
|
-EXODUS_EXPORT int ex__put_partial_nodal_var(int exoid, int time_step, int nodal_var_index,
|
|
+EXODUS_EXPORT int exi_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_glob_vars(int exoid, int time_step, int num_glob_vars,
|
|
+EXODUS_EXPORT int exi_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,
|
|
+EXODUS_EXPORT int exi_get_glob_vars_multi_time(int exoid, int num_glob_vars, int beg_time_step,
|
|
+ int end_time_step, void *glob_var_vals);
|
|
+
|
|
+EXODUS_EXPORT int exi_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_name(int exoid, int varid, size_t index, char *name, int name_size,
|
|
+EXODUS_EXPORT int exi_get_name(int exoid, int varid, size_t index, char *name, int name_size,
|
|
ex_entity_type obj_type, const char *routine);
|
|
-EXODUS_EXPORT int ex__get_names(int exoid, int varid, size_t num_entity, char **names,
|
|
+EXODUS_EXPORT int exi_get_names(int exoid, int varid, size_t num_entity, char **names,
|
|
ex_entity_type obj_type, const char *routine);
|
|
-EXODUS_EXPORT int ex__put_name(int exoid, int varid, size_t index, const char *name,
|
|
+EXODUS_EXPORT int exi_put_name(int exoid, int varid, size_t index, const char *name,
|
|
ex_entity_type obj_type, const char *subtype, const char *routine);
|
|
-EXODUS_EXPORT int ex__put_names(int exoid, int varid, size_t num_entity, char **names,
|
|
+EXODUS_EXPORT int exi_put_names(int exoid, int varid, size_t num_entity, char *const *names,
|
|
ex_entity_type obj_type, const char *subtype, const char *routine);
|
|
-EXODUS_EXPORT void ex__trim(char *name);
|
|
-EXODUS_EXPORT void ex__update_max_name_length(int exoid, int length);
|
|
-EXODUS_EXPORT int ex__leavedef(int exoid, /* NemesisI file ID */
|
|
+EXODUS_EXPORT void exi_trim(char *name);
|
|
+EXODUS_EXPORT void exi_update_max_name_length(int exoid, int length);
|
|
+EXODUS_EXPORT int exi_redef(int exoid, const char *call_func);
|
|
+EXODUS_EXPORT int exi_persist_redef(int exoid, const char *call_func);
|
|
+EXODUS_EXPORT int exi_leavedef(int exoid, /* NemesisI file ID */
|
|
const char *call_rout /* Name of calling function */
|
|
);
|
|
+EXODUS_EXPORT int exi_persist_leavedef(int exoid, /* NemesisI file ID */
|
|
+ const char *call_rout /* Name of calling function */
|
|
+ );
|
|
|
|
-EXODUS_EXPORT int ex__check_version(int run_version);
|
|
-EXODUS_EXPORT int ex__handle_mode(unsigned int my_mode, int is_parallel, int run_version);
|
|
-EXODUS_EXPORT int ex__populate_header(int exoid, const char *path, int my_mode, int is_parallel,
|
|
+EXODUS_EXPORT int exi_check_version(int run_version);
|
|
+EXODUS_EXPORT int exi_handle_mode(unsigned int my_mode, int is_parallel, int run_version);
|
|
+EXODUS_EXPORT int exi_populate_header(int exoid, const char *path, int my_mode, int is_parallel,
|
|
int *comp_ws, int *io_ws);
|
|
|
|
-EXODUS_EXPORT int ex__get_block_param(int exoid, ex_entity_id id, int ndim,
|
|
- struct ex__elem_blk_parm *elem_blk_parm);
|
|
+EXODUS_EXPORT int exi_get_block_param(int exoid, ex_entity_id id, int ndim,
|
|
+ struct exi_elem_blk_parm *elem_blk_parm);
|
|
|
|
-EXODUS_EXPORT int ex__get_file_type(int exoid, char *ftype);
|
|
+EXODUS_EXPORT int exi_get_file_type(int exoid, char *ftype);
|
|
|
|
-EXODUS_EXPORT int ex__put_nemesis_version(int exoid);
|
|
+EXODUS_EXPORT int exi_put_nemesis_version(int exoid);
|
|
|
|
-EXODUS_EXPORT int ex__put_homogenous_block_params(int exoid, size_t block_count,
|
|
+EXODUS_EXPORT int exi_put_homogenous_block_params(int exoid, size_t block_count,
|
|
const struct ex_block *blocks);
|
|
|
|
-EXODUS_EXPORT int ne__check_file_version(int exoid);
|
|
+EXODUS_EXPORT int nei_check_file_version(int exoid);
|
|
|
|
-EXODUS_EXPORT int ne__id_lkup(int exoid, /* NetCDF/Exodus file ID */
|
|
- const char * ne_var_name, /* Nemesis variable name */
|
|
- int64_t * idx, /* index variable for variable, length 2 */
|
|
+EXODUS_EXPORT int nei_id_lkup(int exoid, /* NetCDF/Exodus file ID */
|
|
+ const char *ne_var_name, /* Nemesis variable name */
|
|
+ int64_t *idx, /* index variable for variable, length 2 */
|
|
ex_entity_id ne_var_id /* NetCDF variable ID */
|
|
);
|
|
|
|
@@ -887,11 +925,9 @@ EXODUS_EXPORT int ne__id_lkup(int exoid, /* NetCDF/Exodus file ID
|
|
* Note that this is a global setting for all databases. If you are
|
|
* accessing multiple databases, they will all use the same value.
|
|
*/
|
|
-EXODUS_EXPORT int ex__default_max_name_length;
|
|
+EXODUS_EXPORT int exi_default_max_name_length;
|
|
/*! @} */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
-
|
|
-#endif
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/include/vtk_exodusII_mangle.h b/ThirdParty/exodusII/vtkexodusII/include/vtk_exodusII_mangle.h
|
|
index f6d90dfa3e..6ebba4dcce 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/include/vtk_exodusII_mangle.h
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/include/vtk_exodusII_mangle.h
|
|
@@ -4,39 +4,30 @@
|
|
/**
|
|
* Generated using:
|
|
*
|
|
- * nm -g lib/libvtkexodusII-9.0.so | grep -e ' [TDRSB] ' |\
|
|
+ * nm -g lib/libvtkexodusII-9.4.so | grep -e ' [TDRSB] ' |\
|
|
* cut -d' ' -f3 | grep -v -e '^_init$' -e '^_fini$' -e '^_edata$' -e '^__bss_start$' -e 'vtkexodusII_' | \
|
|
* sort | sed -e 's/\(.*\)/#define \1 vtkexodusII_\1/' > /tmp/vtk_exodusII_mangle.h
|
|
*/
|
|
|
|
#define ex_add_attr vtkexodusII_ex_add_attr
|
|
-#define ex__catstr vtkexodusII_ex__catstr
|
|
-#define ex__catstr2 vtkexodusII_ex__catstr2
|
|
-#define ex__check_file_type vtkexodusII_ex__check_file_type
|
|
-#define ex__check_multiple_open vtkexodusII_ex__check_multiple_open
|
|
-#define ex__check_valid_file_id vtkexodusII_ex__check_valid_file_id
|
|
-#define ex__check_version vtkexodusII_ex__check_version
|
|
#define ex_close vtkexodusII_ex_close
|
|
-#define ex__compress_variable vtkexodusII_ex__compress_variable
|
|
-#define ex__comp_ws vtkexodusII_ex__comp_ws
|
|
+#define ex_component_field_name vtkexodusII_ex_component_field_name
|
|
#define ex_config vtkexodusII_ex_config
|
|
-#define ex__conv_exit vtkexodusII_ex__conv_exit
|
|
-#define ex__conv_init vtkexodusII_ex__conv_init
|
|
#define ex_copy vtkexodusII_ex_copy
|
|
#define ex_copy_string vtkexodusII_ex_copy_string
|
|
#define ex_copy_transient vtkexodusII_ex_copy_transient
|
|
#define ex_create_group vtkexodusII_ex_create_group
|
|
#define ex_create_int vtkexodusII_ex_create_int
|
|
#define ex_cvt_nodes_to_sides vtkexodusII_ex_cvt_nodes_to_sides
|
|
-#define ex__default_max_name_length vtkexodusII_ex__default_max_name_length
|
|
-#define ex__dim_num_entries_in_object vtkexodusII_ex__dim_num_entries_in_object
|
|
-#define ex__dim_num_objects vtkexodusII_ex__dim_num_objects
|
|
#define ex_err vtkexodusII_ex_err
|
|
#define ex_err_fn vtkexodusII_ex_err_fn
|
|
#define ex_errval vtkexodusII_ex_errval
|
|
#define exerrval_get vtkexodusII_exerrval_get
|
|
#define EX_errval_key_g vtkexodusII_EX_errval_key_g
|
|
-#define ex__find_file_item vtkexodusII_ex__find_file_item
|
|
+#define ex_field_cardinality vtkexodusII_ex_field_cardinality
|
|
+#define ex_field_component_suffix vtkexodusII_ex_field_component_suffix
|
|
+#define ex_field_type_enum_to_string vtkexodusII_ex_field_type_enum_to_string
|
|
+#define ex_field_type_name vtkexodusII_ex_field_type_name
|
|
#define EX_first_init_g vtkexodusII_EX_first_init_g
|
|
#define EX_g vtkexodusII_EX_g
|
|
#define ex_get_all_times vtkexodusII_ex_get_all_times
|
|
@@ -49,10 +40,12 @@
|
|
#define ex_get_attributes vtkexodusII_ex_get_attributes
|
|
#define ex_get_attr_names vtkexodusII_ex_get_attr_names
|
|
#define ex_get_attr_param vtkexodusII_ex_get_attr_param
|
|
+#define ex_get_basis vtkexodusII_ex_get_basis
|
|
+#define ex_get_basis_count vtkexodusII_ex_get_basis_count
|
|
#define ex_get_blob vtkexodusII_ex_get_blob
|
|
#define ex_get_blobs vtkexodusII_ex_get_blobs
|
|
#define ex_get_block vtkexodusII_ex_get_block
|
|
-#define ex__get_block_param vtkexodusII_ex__get_block_param
|
|
+#define ex_get_block_id_map vtkexodusII_ex_get_block_id_map
|
|
#define ex_get_block_param vtkexodusII_ex_get_block_param
|
|
#define ex_get_block_params vtkexodusII_ex_get_block_params
|
|
#define ex_get_cmap_params vtkexodusII_ex_get_cmap_params
|
|
@@ -64,9 +57,6 @@
|
|
#define ex_get_coord vtkexodusII_ex_get_coord
|
|
#define ex_get_coordinate_frames vtkexodusII_ex_get_coordinate_frames
|
|
#define ex_get_coord_names vtkexodusII_ex_get_coord_names
|
|
-#define ex__get_counter_list vtkexodusII_ex__get_counter_list
|
|
-#define ex__get_cpu_ws vtkexodusII_ex__get_cpu_ws
|
|
-#define ex__get_dimension vtkexodusII_ex__get_dimension
|
|
#define ex_get_eb_info_global vtkexodusII_ex_get_eb_info_global
|
|
#define ex_get_elem_attr vtkexodusII_ex_get_elem_attr
|
|
#define ex_get_elem_attr_names vtkexodusII_ex_get_elem_attr_names
|
|
@@ -82,11 +72,9 @@
|
|
#define ex_get_elem_var_time vtkexodusII_ex_get_elem_var_time
|
|
#define ex_get_entity_count_per_polyhedra vtkexodusII_ex_get_entity_count_per_polyhedra
|
|
#define ex_get_err vtkexodusII_ex_get_err
|
|
-#define ex__get_file_item vtkexodusII_ex__get_file_item
|
|
-#define ex__get_file_type vtkexodusII_ex__get_file_type
|
|
-#define ex__get_glob_vars vtkexodusII_ex__get_glob_vars
|
|
+#define ex_get_field_metadata vtkexodusII_ex_get_field_metadata
|
|
+#define ex_get_field_metadata_count vtkexodusII_ex_get_field_metadata_count
|
|
#define ex_get_glob_vars vtkexodusII_ex_get_glob_vars
|
|
-#define ex__get_glob_var_time vtkexodusII_ex__get_glob_var_time
|
|
#define ex_get_glob_var_time vtkexodusII_ex_get_glob_var_time
|
|
#define ex_get_group_id vtkexodusII_ex_get_group_id
|
|
#define ex_get_group_ids vtkexodusII_ex_get_group_ids
|
|
@@ -101,9 +89,7 @@
|
|
#define ex_get_loadbal_param vtkexodusII_ex_get_loadbal_param
|
|
#define ex_get_map vtkexodusII_ex_get_map
|
|
#define ex_get_map_param vtkexodusII_ex_get_map_param
|
|
-#define ex__get_name vtkexodusII_ex__get_name
|
|
#define ex_get_name vtkexodusII_ex_get_name
|
|
-#define ex__get_names vtkexodusII_ex__get_names
|
|
#define ex_get_names vtkexodusII_ex_get_names
|
|
#define ex_get_n_attr vtkexodusII_ex_get_n_attr
|
|
#define ex_get_n_conn vtkexodusII_ex_get_n_conn
|
|
@@ -116,9 +102,7 @@
|
|
#define ex_get_n_node_num_map vtkexodusII_ex_get_n_node_num_map
|
|
#define ex_get_n_node_set vtkexodusII_ex_get_n_node_set
|
|
#define ex_get_n_node_set_df vtkexodusII_ex_get_n_node_set_df
|
|
-#define ex__get_nodal_var vtkexodusII_ex__get_nodal_var
|
|
#define ex_get_nodal_var vtkexodusII_ex_get_nodal_var
|
|
-#define ex__get_nodal_var_time vtkexodusII_ex__get_nodal_var_time
|
|
#define ex_get_nodal_var_time vtkexodusII_ex_get_nodal_var_time
|
|
#define ex_get_node_cmap vtkexodusII_ex_get_node_cmap
|
|
#define ex_get_node_map vtkexodusII_ex_get_node_map
|
|
@@ -149,7 +133,6 @@
|
|
#define ex_get_partial_elem_num_map vtkexodusII_ex_get_partial_elem_num_map
|
|
#define ex_get_partial_elem_var vtkexodusII_ex_get_partial_elem_var
|
|
#define ex_get_partial_id_map vtkexodusII_ex_get_partial_id_map
|
|
-#define ex__get_partial_nodal_var vtkexodusII_ex__get_partial_nodal_var
|
|
#define ex_get_partial_nodal_var vtkexodusII_ex_get_partial_nodal_var
|
|
#define ex_get_partial_node_num_map vtkexodusII_ex_get_partial_node_num_map
|
|
#define ex_get_partial_node_set vtkexodusII_ex_get_partial_node_set
|
|
@@ -167,6 +150,8 @@
|
|
#define ex_get_prop_array vtkexodusII_ex_get_prop_array
|
|
#define ex_get_prop_names vtkexodusII_ex_get_prop_names
|
|
#define ex_get_qa vtkexodusII_ex_get_qa
|
|
+#define ex_get_quadrature vtkexodusII_ex_get_quadrature
|
|
+#define ex_get_quadrature_count vtkexodusII_ex_get_quadrature_count
|
|
#define ex_get_reduction_variable_names vtkexodusII_ex_get_reduction_variable_names
|
|
#define ex_get_reduction_variable_param vtkexodusII_ex_get_reduction_variable_param
|
|
#define ex_get_reduction_vars vtkexodusII_ex_get_reduction_vars
|
|
@@ -184,39 +169,92 @@
|
|
#define ex_get_sset_var vtkexodusII_ex_get_sset_var
|
|
#define ex_get_sset_var_tab vtkexodusII_ex_get_sset_var_tab
|
|
#define ex_get_ss_param_global vtkexodusII_ex_get_ss_param_global
|
|
-#define ex__get_stat_ptr vtkexodusII_ex__get_stat_ptr
|
|
#define ex_get_time vtkexodusII_ex_get_time
|
|
#define ex_get_truth_table vtkexodusII_ex_get_truth_table
|
|
#define ex_get_var vtkexodusII_ex_get_var
|
|
#define ex_get_variable_name vtkexodusII_ex_get_variable_name
|
|
#define ex_get_variable_names vtkexodusII_ex_get_variable_names
|
|
#define ex_get_variable_param vtkexodusII_ex_get_variable_param
|
|
+#define ex_get_var_multi_time vtkexodusII_ex_get_var_multi_time
|
|
#define ex_get_var_name vtkexodusII_ex_get_var_name
|
|
#define ex_get_var_names vtkexodusII_ex_get_var_names
|
|
#define ex_get_var_param vtkexodusII_ex_get_var_param
|
|
#define ex_get_var_tab vtkexodusII_ex_get_var_tab
|
|
#define ex_get_var_time vtkexodusII_ex_get_var_time
|
|
-#define ex__handle_mode vtkexodusII_ex__handle_mode
|
|
#define ex_header_size vtkexodusII_ex_header_size
|
|
-#define ex__id_lkup vtkexodusII_ex__id_lkup
|
|
-#define ex__inc_file_item vtkexodusII_ex__inc_file_item
|
|
+#define exi_canonicalize_filename vtkexodusII_exi_canonicalize_filename
|
|
+#define exi_catstr vtkexodusII_exi_catstr
|
|
+#define exi_catstr2 vtkexodusII_exi_catstr2
|
|
+#define exi_check_file_type vtkexodusII_exi_check_file_type
|
|
+#define exi_check_multiple_open vtkexodusII_exi_check_multiple_open
|
|
+#define exi_check_valid_file_id vtkexodusII_exi_check_valid_file_id
|
|
+#define exi_check_version vtkexodusII_exi_check_version
|
|
+#define exi_compress_variable vtkexodusII_exi_compress_variable
|
|
+#define exi_comp_ws vtkexodusII_exi_comp_ws
|
|
+#define exi_conv_exit vtkexodusII_exi_conv_exit
|
|
+#define exi_conv_init vtkexodusII_exi_conv_init
|
|
+#define exi_default_max_name_length vtkexodusII_exi_default_max_name_length
|
|
+#define exi_dim_num_entries_in_object vtkexodusII_exi_dim_num_entries_in_object
|
|
+#define exi_dim_num_objects vtkexodusII_exi_dim_num_objects
|
|
+#define exi_find_file_item vtkexodusII_exi_find_file_item
|
|
+#define exi_get_block_param vtkexodusII_exi_get_block_param
|
|
+#define exi_get_counter_list vtkexodusII_exi_get_counter_list
|
|
+#define exi_get_cpu_ws vtkexodusII_exi_get_cpu_ws
|
|
+#define exi_get_dimension vtkexodusII_exi_get_dimension
|
|
+#define exi_get_file_item vtkexodusII_exi_get_file_item
|
|
+#define exi_get_file_type vtkexodusII_exi_get_file_type
|
|
+#define exi_get_glob_vars vtkexodusII_exi_get_glob_vars
|
|
+#define exi_get_glob_vars_multi_time vtkexodusII_exi_get_glob_vars_multi_time
|
|
+#define exi_get_glob_var_time vtkexodusII_exi_get_glob_var_time
|
|
+#define exi_get_metadata_count vtkexodusII_exi_get_metadata_count
|
|
+#define exi_get_name vtkexodusII_exi_get_name
|
|
+#define exi_get_names vtkexodusII_exi_get_names
|
|
+#define exi_get_nodal_var_multi_time vtkexodusII_exi_get_nodal_var_multi_time
|
|
+#define exi_get_nodal_var_time vtkexodusII_exi_get_nodal_var_time
|
|
+#define exi_get_partial_nodal_var vtkexodusII_exi_get_partial_nodal_var
|
|
+#define exi_get_stat_ptr vtkexodusII_exi_get_stat_ptr
|
|
+#define exi_get_varid vtkexodusII_exi_get_varid
|
|
+#define exi_handle_mode vtkexodusII_exi_handle_mode
|
|
+#define exi_id_lkup vtkexodusII_exi_id_lkup
|
|
+#define exi_inc_file_item vtkexodusII_exi_inc_file_item
|
|
+#define exi_iqsort vtkexodusII_exi_iqsort
|
|
+#define exi_iqsort64 vtkexodusII_exi_iqsort64
|
|
+#define exi_is_parallel vtkexodusII_exi_is_parallel
|
|
+#define exi_leavedef vtkexodusII_exi_leavedef
|
|
+#define exi_mutex_lock vtkexodusII_exi_mutex_lock
|
|
+#define exi_mutex_unlock vtkexodusII_exi_mutex_unlock
|
|
+#define exi_name_of_map vtkexodusII_exi_name_of_map
|
|
+#define exi_name_red_var_of_object vtkexodusII_exi_name_red_var_of_object
|
|
+#define exi_name_var_of_object vtkexodusII_exi_name_var_of_object
|
|
+#define ex_initialize_basis_struct vtkexodusII_ex_initialize_basis_struct
|
|
+#define ex_initialize_quadrature_struct vtkexodusII_ex_initialize_quadrature_struct
|
|
#define ex_inquire vtkexodusII_ex_inquire
|
|
#define ex_inquire_int vtkexodusII_ex_inquire_int
|
|
#define ex_int64_status vtkexodusII_ex_int64_status
|
|
#define ex_int_write_conn vtkexodusII_ex_int_write_conn
|
|
-#define ex__iqsort vtkexodusII_ex__iqsort
|
|
-#define ex__iqsort64 vtkexodusII_ex__iqsort64
|
|
-#define ex__is_parallel vtkexodusII_ex__is_parallel
|
|
+#define exi_persist_leavedef vtkexodusII_exi_persist_leavedef
|
|
+#define exi_persist_redef vtkexodusII_exi_persist_redef
|
|
+#define exi_populate_header vtkexodusII_exi_populate_header
|
|
+#define exi_pthread_first_thread_init vtkexodusII_exi_pthread_first_thread_init
|
|
+#define exi_put_assembly_name vtkexodusII_exi_put_assembly_name
|
|
+#define exi_put_basis_attribute vtkexodusII_exi_put_basis_attribute
|
|
+#define exi_put_homogenous_block_params vtkexodusII_exi_put_homogenous_block_params
|
|
+#define exi_put_name vtkexodusII_exi_put_name
|
|
+#define exi_put_names vtkexodusII_exi_put_names
|
|
+#define exi_put_nemesis_version vtkexodusII_exi_put_nemesis_version
|
|
+#define exi_put_nodal_var_time vtkexodusII_exi_put_nodal_var_time
|
|
+#define exi_put_partial_nodal_var vtkexodusII_exi_put_partial_nodal_var
|
|
+#define exi_put_quad_attribute vtkexodusII_exi_put_quad_attribute
|
|
+#define exi_put_type_attribute vtkexodusII_exi_put_type_attribute
|
|
+#define exi_redef vtkexodusII_exi_redef
|
|
+#define exi_reset_error_status vtkexodusII_exi_reset_error_status
|
|
+#define exi_rm_file_item vtkexodusII_exi_rm_file_item
|
|
+#define exi_rm_stat_ptr vtkexodusII_exi_rm_stat_ptr
|
|
+#define exi_set_compact_storage vtkexodusII_exi_set_compact_storage
|
|
+#define exi_trim vtkexodusII_exi_trim
|
|
+#define exi_update_max_name_length vtkexodusII_exi_update_max_name_length
|
|
#define ex_large_model vtkexodusII_ex_large_model
|
|
-#define ex__leavedef vtkexodusII_ex__leavedef
|
|
-#define ex__mutex_lock vtkexodusII_ex__mutex_lock
|
|
-#define ex__mutex_unlock vtkexodusII_ex__mutex_unlock
|
|
-#define ex__name_of_map vtkexodusII_ex__name_of_map
|
|
#define ex_name_of_object vtkexodusII_ex_name_of_object
|
|
-#define ex__name_red_var_of_object vtkexodusII_ex__name_red_var_of_object
|
|
-#define ex__name_var_of_object vtkexodusII_ex__name_var_of_object
|
|
-#define exodus_unused_symbol_dummy_ex_create_par vtkexodusII_exodus_unused_symbol_dummy_ex_create_par
|
|
-#define exodus_unused_symbol_dummy_ex_open_par vtkexodusII_exodus_unused_symbol_dummy_ex_open_par
|
|
#define exoII_ass vtkexodusII_exoII_ass
|
|
#define exoII_eb vtkexodusII_exoII_eb
|
|
#define exoII_ed vtkexodusII_exoII_ed
|
|
@@ -233,9 +271,7 @@
|
|
#define ex_open_int vtkexodusII_ex_open_int
|
|
#define ex_opts vtkexodusII_ex_opts
|
|
#define exoptval vtkexodusII_exoptval
|
|
-#define ex__populate_header vtkexodusII_ex__populate_header
|
|
#define ex_print_config vtkexodusII_ex_print_config
|
|
-#define ex__pthread_first_thread_init vtkexodusII_ex__pthread_first_thread_init
|
|
#define ex_put_all_var_param vtkexodusII_ex_put_all_var_param
|
|
#define ex_put_all_var_param_ext vtkexodusII_ex_put_all_var_param_ext
|
|
#define ex_put_assemblies vtkexodusII_ex_put_assemblies
|
|
@@ -244,6 +280,7 @@
|
|
#define ex_put_attributes vtkexodusII_ex_put_attributes
|
|
#define ex_put_attr_names vtkexodusII_ex_put_attr_names
|
|
#define ex_put_attr_param vtkexodusII_ex_put_attr_param
|
|
+#define ex_put_basis vtkexodusII_ex_put_basis
|
|
#define ex_put_blobs vtkexodusII_ex_put_blobs
|
|
#define ex_put_block vtkexodusII_ex_put_block
|
|
#define ex_put_block_param vtkexodusII_ex_put_block_param
|
|
@@ -273,8 +310,9 @@
|
|
#define ex_put_elem_var_slab vtkexodusII_ex_put_elem_var_slab
|
|
#define ex_put_elem_var_tab vtkexodusII_ex_put_elem_var_tab
|
|
#define ex_put_entity_count_per_polyhedra vtkexodusII_ex_put_entity_count_per_polyhedra
|
|
+#define ex_put_field_metadata vtkexodusII_ex_put_field_metadata
|
|
+#define ex_put_field_suffices vtkexodusII_ex_put_field_suffices
|
|
#define ex_put_glob_vars vtkexodusII_ex_put_glob_vars
|
|
-#define ex__put_homogenous_block_params vtkexodusII_ex__put_homogenous_block_params
|
|
#define ex_put_id_map vtkexodusII_ex_put_id_map
|
|
#define ex_put_info vtkexodusII_ex_put_info
|
|
#define ex_put_init vtkexodusII_ex_put_init
|
|
@@ -286,21 +324,18 @@
|
|
#define ex_put_loadbal_param_cc vtkexodusII_ex_put_loadbal_param_cc
|
|
#define ex_put_map vtkexodusII_ex_put_map
|
|
#define ex_put_map_param vtkexodusII_ex_put_map_param
|
|
-#define ex__put_name vtkexodusII_ex__put_name
|
|
+#define ex_put_multi_field_metadata vtkexodusII_ex_put_multi_field_metadata
|
|
#define ex_put_name vtkexodusII_ex_put_name
|
|
-#define ex__put_names vtkexodusII_ex__put_names
|
|
#define ex_put_names vtkexodusII_ex_put_names
|
|
#define ex_put_n_attr vtkexodusII_ex_put_n_attr
|
|
#define ex_put_n_coord vtkexodusII_ex_put_n_coord
|
|
#define ex_put_n_elem_attr vtkexodusII_ex_put_n_elem_attr
|
|
#define ex_put_n_elem_conn vtkexodusII_ex_put_n_elem_conn
|
|
#define ex_put_n_elem_num_map vtkexodusII_ex_put_n_elem_num_map
|
|
-#define ex__put_nemesis_version vtkexodusII_ex__put_nemesis_version
|
|
#define ex_put_n_nodal_var vtkexodusII_ex_put_n_nodal_var
|
|
#define ex_put_n_node_num_map vtkexodusII_ex_put_n_node_num_map
|
|
#define ex_put_n_node_set vtkexodusII_ex_put_n_node_set
|
|
#define ex_put_n_node_set_df vtkexodusII_ex_put_n_node_set_df
|
|
-#define ex__put_nodal_var vtkexodusII_ex__put_nodal_var
|
|
#define ex_put_nodal_var vtkexodusII_ex_put_nodal_var
|
|
#define ex_put_nodal_var_slab vtkexodusII_ex_put_nodal_var_slab
|
|
#define ex_put_node_cmap vtkexodusII_ex_put_node_cmap
|
|
@@ -328,7 +363,6 @@
|
|
#define ex_put_partial_elem_map vtkexodusII_ex_put_partial_elem_map
|
|
#define ex_put_partial_elem_num_map vtkexodusII_ex_put_partial_elem_num_map
|
|
#define ex_put_partial_id_map vtkexodusII_ex_put_partial_id_map
|
|
-#define ex__put_partial_nodal_var vtkexodusII_ex__put_partial_nodal_var
|
|
#define ex_put_partial_nodal_var vtkexodusII_ex_put_partial_nodal_var
|
|
#define ex_put_partial_node_num_map vtkexodusII_ex_put_partial_node_num_map
|
|
#define ex_put_partial_node_set vtkexodusII_ex_put_partial_node_set
|
|
@@ -346,6 +380,7 @@
|
|
#define ex_put_prop_array vtkexodusII_ex_put_prop_array
|
|
#define ex_put_prop_names vtkexodusII_ex_put_prop_names
|
|
#define ex_put_qa vtkexodusII_ex_put_qa
|
|
+#define ex_put_quadrature vtkexodusII_ex_put_quadrature
|
|
#define ex_put_reduction_variable_names vtkexodusII_ex_put_reduction_variable_names
|
|
#define ex_put_reduction_variable_param vtkexodusII_ex_put_reduction_variable_param
|
|
#define ex_put_reduction_vars vtkexodusII_ex_put_reduction_vars
|
|
@@ -366,27 +401,23 @@
|
|
#define ex_put_variable_name vtkexodusII_ex_put_variable_name
|
|
#define ex_put_variable_names vtkexodusII_ex_put_variable_names
|
|
#define ex_put_variable_param vtkexodusII_ex_put_variable_param
|
|
+#define ex_put_var_multi_time vtkexodusII_ex_put_var_multi_time
|
|
#define ex_put_var_name vtkexodusII_ex_put_var_name
|
|
#define ex_put_var_names vtkexodusII_ex_put_var_names
|
|
#define ex_put_var_param vtkexodusII_ex_put_var_param
|
|
#define ex_put_var_tab vtkexodusII_ex_put_var_tab
|
|
-#define ex__reset_error_status vtkexodusII_ex__reset_error_status
|
|
-#define ex__rm_file_item vtkexodusII_ex__rm_file_item
|
|
-#define ex__rm_stat_ptr vtkexodusII_ex__rm_stat_ptr
|
|
-#define ex__set_compact_storage vtkexodusII_ex__set_compact_storage
|
|
#define ex_set_err vtkexodusII_ex_set_err
|
|
#define ex_set_int64_status vtkexodusII_ex_set_int64_status
|
|
#define ex_set_max_name_length vtkexodusII_ex_set_max_name_length
|
|
#define ex_set_option vtkexodusII_ex_set_option
|
|
#define ex_set_parallel vtkexodusII_ex_set_parallel
|
|
#define ex_strerror vtkexodusII_ex_strerror
|
|
-#define ex__trim vtkexodusII_ex__trim
|
|
+#define ex_string_to_field_type_enum vtkexodusII_ex_string_to_field_type_enum
|
|
#define ex_update vtkexodusII_ex_update
|
|
-#define ex__update_max_name_length vtkexodusII_ex__update_max_name_length
|
|
#define ex_var_type_to_ex_entity_type vtkexodusII_ex_var_type_to_ex_entity_type
|
|
#define nc_flt_code vtkexodusII_nc_flt_code
|
|
-#define ne__check_file_version vtkexodusII_ne__check_file_version
|
|
-#define ne__id_lkup vtkexodusII_ne__id_lkup
|
|
+#define nei_check_file_version vtkexodusII_nei_check_file_version
|
|
+#define nei_id_lkup vtkexodusII_nei_id_lkup
|
|
#define ne_ret_string vtkexodusII_ne_ret_string
|
|
|
|
#endif
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/deprecated/ex_get_var_param.c b/ThirdParty/exodusII/vtkexodusII/src/deprecated/ex_get_var_param.c
|
|
index e53efc947f..43f5e8e6bd 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/deprecated/ex_get_var_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/deprecated/ex_get_var_param.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -36,5 +36,5 @@ int ex_get_var_param(int exoid, const char *var_type, int *num_vars)
|
|
{
|
|
ex_entity_type obj_type;
|
|
obj_type = ex_var_type_to_ex_entity_type(*var_type);
|
|
- return (ex_get_variable_param(exoid, obj_type, num_vars));
|
|
+ return ex_get_variable_param(exoid, obj_type, num_vars);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/deprecated/ex_put_var_param.c b/ThirdParty/exodusII/vtkexodusII/src/deprecated/ex_put_var_param.c
|
|
index d503fc9f4a..a942db88c2 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/deprecated/ex_put_var_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/deprecated/ex_put_var_param.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -39,5 +39,5 @@ int ex_put_var_param(int exoid, const char *var_type, int num_vars)
|
|
{
|
|
ex_entity_type obj_type;
|
|
obj_type = ex_var_type_to_ex_entity_type(*var_type);
|
|
- return (ex_put_variable_param(exoid, obj_type, num_vars));
|
|
+ return ex_put_variable_param(exoid, obj_type, num_vars);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex__get_glob_vars_multi_time.c b/ThirdParty/exodusII/vtkexodusII/src/ex__get_glob_vars_multi_time.c
|
|
new file mode 100644
|
|
index 0000000000..1a1886985e
|
|
--- /dev/null
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex__get_glob_vars_multi_time.c
|
|
@@ -0,0 +1,71 @@
|
|
+/*
|
|
+ * Copyright(C) 2023 National Technology & Engineering Solutions
|
|
+ * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
+ * NTESS, the U.S. Government retains certain rights in this software.
|
|
+ *
|
|
+ * See packages/seacas/LICENSE for details
|
|
+ */
|
|
+/*****************************************************************************
|
|
+ *
|
|
+ * exggv - ex_get_glob_vars
|
|
+ *
|
|
+ * entry conditions -
|
|
+ * input parameters:
|
|
+ * int exoid exodus file id
|
|
+ * int time_step time step number
|
|
+ * int num_glob_vars number of global vars in file
|
|
+ *
|
|
+ * exit conditions -
|
|
+ * float* glob_var_vals array of global variable values
|
|
+ *
|
|
+ * revision history -
|
|
+ *
|
|
+ *
|
|
+ *****************************************************************************/
|
|
+
|
|
+#include "exodusII.h" // for ex_err, etc
|
|
+#include "exodusII_int.h" // for exi_comp_ws, EX_FATAL, etc
|
|
+
|
|
+/*!
|
|
+ Internal function. Do not use in client code.
|
|
+ */
|
|
+
|
|
+int exi_get_glob_vars_multi_time(int exoid, int num_glob_vars, int beg_time_step, int end_time_step,
|
|
+ void *glob_var_vals)
|
|
+{
|
|
+ EX_FUNC_ENTER();
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ /* inquire previously defined variable */
|
|
+ int varid;
|
|
+ int status;
|
|
+ if ((status = nc_inq_varid(exoid, VAR_GLO_VAR, &varid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "Warning: failed to locate global variables in file id %d",
|
|
+ exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_WARN);
|
|
+ }
|
|
+
|
|
+ /* read values of global variables */
|
|
+ size_t start[] = {--beg_time_step, 0};
|
|
+ size_t count[] = {end_time_step - beg_time_step, num_glob_vars};
|
|
+
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
+ status = nc_get_vara_float(exoid, varid, start, count, glob_var_vals);
|
|
+ }
|
|
+ else {
|
|
+ status = nc_get_vara_double(exoid, varid, start, count, glob_var_vals);
|
|
+ }
|
|
+
|
|
+ if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get global variable values from file id %d",
|
|
+ exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ EX_FUNC_LEAVE(EX_NOERR);
|
|
+}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_nodal_var_int.c b/ThirdParty/exodusII/vtkexodusII/src/ex__get_nodal_var_multi_time.c
|
|
similarity index 66%
|
|
rename from ThirdParty/exodusII/vtkexodusII/src/ex_get_nodal_var_int.c
|
|
rename to ThirdParty/exodusII/vtkexodusII/src/ex__get_nodal_var_multi_time.c
|
|
index adaf133f99..9bb94d1fe2 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_nodal_var_int.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex__get_nodal_var_multi_time.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2023 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -12,11 +12,11 @@
|
|
/*!
|
|
\internal
|
|
\ingroup ResultsData
|
|
-\note This function is called internally by ex_get_var() to handle
|
|
+\note This function is called internally by ex_get_var_multi_time() to handle
|
|
the reading of nodal variable values.
|
|
|
|
-The function ex__get_nodal_var() reads the values of a single nodal
|
|
-variable for a single time step. Memory must be allocated for the
|
|
+The function exi_get_nodal_var_multi_time() reads the values of a single nodal
|
|
+variable for a one or more time steps. Memory must be allocated for the
|
|
nodal variable values array before this function is invoked.
|
|
|
|
Because nodal variables are floating point values, the application
|
|
@@ -24,7 +24,7 @@ code must declare the array passed to be the appropriate type
|
|
(float or double) to match the compute word size passed in
|
|
ex_create() or ex_open().
|
|
|
|
-\return In case of an error, ex__get_nodal_var() returns a negative
|
|
+\return In case of an error, exi_get_nodal_var_multi_time() 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()
|
|
@@ -35,24 +35,16 @@ errors include:
|
|
ex_create()
|
|
or ex_open().
|
|
|
|
-\param[in] time_step The time step, as described under ex_put_time(),
|
|
-at which the
|
|
-nodal variable values are desired. This is
|
|
-essentially an index (in
|
|
-the time dimension) into the nodal variable
|
|
-values array stored in
|
|
-the database. The first time step is 1.
|
|
-
|
|
\param[in] nodal_var_index The index of the desired nodal variable. The
|
|
-first variable
|
|
-has an index of 1.
|
|
+ first variable has an index of 1.
|
|
|
|
\param[in] num_nodes The number of nodal points.
|
|
|
|
+\param[in] beg_time_step The first time step to get values for.
|
|
+\param[in] end_time_step The last time step to get values for.
|
|
\param[out] nodal_var_vals Returned array of num_nodes values of the
|
|
-nodal_var_index-th
|
|
-nodal variable for the time_step-th time
|
|
-step.
|
|
+ nodal_var_index-th nodal variable for the
|
|
+ desired timesteps.
|
|
|
|
For example, the following demonstrates how this function would be
|
|
used:
|
|
@@ -66,45 +58,44 @@ time_step = 1;
|
|
var_index = 2;
|
|
|
|
var_values = (float *) calloc (num_nodes, sizeof(float));
|
|
-error = ex_get_nodal_var(exoid, time_step, var_index, num_nodes,
|
|
-var_values);
|
|
+error = exi_get_nodal_var_multi_time(exoid, var_index, num_nodes,
|
|
+ time_step, time_step, var_values);
|
|
~~~
|
|
|
|
*/
|
|
|
|
-int ex__get_nodal_var(int exoid, int time_step, int nodal_var_index, int64_t num_nodes,
|
|
- void *nodal_var_vals)
|
|
+int exi_get_nodal_var_multi_time(int exoid, int nodal_var_index, int64_t num_nodes,
|
|
+ int beg_time_step, int end_time_step, void *nodal_var_vals)
|
|
{
|
|
- int varid;
|
|
- int status;
|
|
- size_t start[3], count[3];
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* inquire previously defined variable */
|
|
-
|
|
/* Need to see how this works in the parallel-aware exodus... */
|
|
if (num_nodes == 0) {
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
+ size_t start[3];
|
|
+ size_t count[3];
|
|
+ int status;
|
|
+ int varid;
|
|
if (ex_large_model(exoid) == 0) {
|
|
/* read values of the nodal variable */
|
|
if ((status = nc_inq_varid(exoid, VAR_NOD_VAR, &varid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: could not find nodal variables in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_WARN);
|
|
+ return EX_WARN;
|
|
}
|
|
|
|
- start[0] = --time_step;
|
|
+ start[0] = --beg_time_step;
|
|
start[1] = --nodal_var_index;
|
|
start[2] = 0;
|
|
|
|
- count[0] = 1;
|
|
+ count[0] = end_time_step - beg_time_step;
|
|
count[1] = 1;
|
|
count[2] = num_nodes;
|
|
}
|
|
@@ -112,20 +103,21 @@ int ex__get_nodal_var(int exoid, int time_step, int nodal_var_index, int64_t num
|
|
/* read values of the nodal variable -- stored as separate variables... */
|
|
/* Get the varid.... */
|
|
if ((status = nc_inq_varid(exoid, VAR_NOD_VAR_NEW(nodal_var_index), &varid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: could not find nodal variable %d in file id %d",
|
|
nodal_var_index, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_WARN);
|
|
+ return EX_WARN;
|
|
}
|
|
|
|
- start[0] = --time_step;
|
|
+ start[0] = --beg_time_step;
|
|
start[1] = 0;
|
|
|
|
- count[0] = 1;
|
|
+ count[0] = end_time_step - beg_time_step;
|
|
count[1] = num_nodes;
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, varid, start, count, nodal_var_vals);
|
|
}
|
|
else {
|
|
@@ -133,9 +125,10 @@ int ex__get_nodal_var(int exoid, int time_step, int nodal_var_index, int64_t num
|
|
}
|
|
|
|
if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get nodal variables in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex__put_homogenous_block_params.c b/ThirdParty/exodusII/vtkexodusII/src/ex__put_homogenous_block_params.c
|
|
index bae09a8b63..7fad13f258 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex__put_homogenous_block_params.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex__put_homogenous_block_params.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -15,14 +15,14 @@
|
|
* Permits some optimizations and safer for N->1 parallel.
|
|
* Arbitrary polyhedra are handled in more general routine; not here.
|
|
*/
|
|
-int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct ex_block *blocks)
|
|
+int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct ex_block *blocks)
|
|
{
|
|
|
|
int status;
|
|
int varid, dims[2];
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -47,7 +47,7 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
"ERROR: Bad block type (%d) specified for all blocks file id %d", blocks[0].type,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
{ /* Output ids for this block */
|
|
@@ -58,7 +58,7 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
"array in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
for (size_t i = 0; i < block_count; i++) {
|
|
@@ -70,7 +70,7 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
ex_name_of_object(blocks[0].type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(ids);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if ((status = nc_put_var_longlong(exoid, varid, ids)) != NC_NOERR) {
|
|
@@ -78,7 +78,7 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
ex_name_of_object(blocks[0].type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(ids);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
free(ids);
|
|
}
|
|
@@ -91,7 +91,7 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
"array in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
for (size_t i = 0; i < block_count; i++) {
|
|
@@ -103,7 +103,7 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
ex_name_of_object(blocks[0].type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(stat);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if ((status = nc_put_var_int(exoid, varid, stat)) != NC_NOERR) {
|
|
@@ -111,17 +111,17 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
ex_name_of_object(blocks[0].type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(stat);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
free(stat);
|
|
}
|
|
|
|
/* ======================================================================== */
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* inquire previously defined dimensions */
|
|
@@ -133,7 +133,7 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
}
|
|
|
|
for (size_t i = 0; i < block_count; i++) {
|
|
- int blk_id_ndx = 1 + ex__inc_file_item(exoid, ex__get_counter_list(blocks[i].type));
|
|
+ int blk_id_ndx = 1 + exi_inc_file_item(exoid, exi_get_counter_list(blocks[i].type));
|
|
|
|
if (blocks[i].num_entry == 0) { /* Is this a NULL element block? */
|
|
continue;
|
|
@@ -154,26 +154,26 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
case EX_EDGE_BLOCK:
|
|
dneblk = DIM_NUM_ED_IN_EBLK(blk_id_ndx);
|
|
dnnpe = DIM_NUM_NOD_PER_ED(blk_id_ndx);
|
|
- dnepe = 0;
|
|
- dnfpe = 0;
|
|
+ dnepe = NULL;
|
|
+ dnfpe = NULL;
|
|
dnape = DIM_NUM_ATT_IN_EBLK(blk_id_ndx);
|
|
vblkatt = VAR_EATTRIB(blk_id_ndx);
|
|
vattnam = VAR_NAME_EATTRIB(blk_id_ndx);
|
|
vnodcon = VAR_EBCONN(blk_id_ndx);
|
|
- vedgcon = 0;
|
|
- vfaccon = 0;
|
|
+ vedgcon = NULL;
|
|
+ vfaccon = NULL;
|
|
break;
|
|
case EX_FACE_BLOCK:
|
|
dneblk = DIM_NUM_FA_IN_FBLK(blk_id_ndx);
|
|
dnnpe = DIM_NUM_NOD_PER_FA(blk_id_ndx);
|
|
- dnepe = 0;
|
|
- dnfpe = 0;
|
|
+ dnepe = NULL;
|
|
+ dnfpe = NULL;
|
|
dnape = DIM_NUM_ATT_IN_FBLK(blk_id_ndx);
|
|
vblkatt = VAR_FATTRIB(blk_id_ndx);
|
|
vattnam = VAR_NAME_FATTRIB(blk_id_ndx);
|
|
vnodcon = VAR_FBCONN(blk_id_ndx);
|
|
- vedgcon = 0;
|
|
- vfaccon = 0;
|
|
+ vedgcon = NULL;
|
|
+ vfaccon = NULL;
|
|
break;
|
|
case EX_ELEM_BLOCK:
|
|
dneblk = DIM_NUM_EL_IN_BLK(blk_id_ndx);
|
|
@@ -266,22 +266,7 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 2);
|
|
-
|
|
-#if defined(PARALLEL_AWARE_EXODUS)
|
|
- /*
|
|
- * There is currently a bug in netcdf-4.5.1-devel and earlier
|
|
- * for partial parallel output of strided arrays in collective
|
|
- * mode for netcdf-4-based output. If the number of attributes >
|
|
- * 1 and in parallel mode, set the mode to independent.
|
|
- */
|
|
- if (blocks[i].num_attribute > 1) {
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
- if (file->is_parallel && file->is_hdf5) {
|
|
- nc_var_par_access(exoid, varid, NC_INDEPENDENT);
|
|
- }
|
|
- }
|
|
-#endif
|
|
+ exi_compress_variable(exoid, varid, 2);
|
|
|
|
/* Attribute names... */
|
|
dims[0] = numattrdim;
|
|
@@ -295,7 +280,7 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
-#if NC_HAS_HDF5
|
|
+#if defined(EX_CAN_USE_NC_DEF_VAR_FILL)
|
|
int fill = NC_FILL_CHAR;
|
|
nc_def_var_fill(exoid, att_name_varid, 0, &fill);
|
|
#endif
|
|
@@ -320,7 +305,7 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, connid, 1);
|
|
+ exi_compress_variable(exoid, connid, 1);
|
|
|
|
/* store element type as attribute of connectivity variable */
|
|
if ((status = nc_put_att_text(exoid, connid, ATT_NAME_ELB, strlen(blocks[i].topology) + 1,
|
|
@@ -360,8 +345,10 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode in file id %d", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* ======================================================================== */
|
|
@@ -370,7 +357,7 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
case EX_EDGE_BLOCK: vblkids = VAR_ID_ED_BLK; break;
|
|
case EX_FACE_BLOCK: vblkids = VAR_ID_FA_BLK; break;
|
|
case EX_ELEM_BLOCK: vblkids = VAR_ID_EL_BLK; break;
|
|
- default: return (EX_FATAL); /* should have been handled earlier; quiet compiler here */
|
|
+ default: return EX_FATAL; /* should have been handled earlier; quiet compiler here */
|
|
}
|
|
|
|
int att_name_varid = -1;
|
|
@@ -382,23 +369,23 @@ int ex__put_homogenous_block_params(int exoid, size_t block_count, const struct
|
|
*/
|
|
size_t count[2];
|
|
size_t start[2];
|
|
- char * text = "";
|
|
+ char *text = "";
|
|
|
|
count[0] = 1;
|
|
start[1] = 0;
|
|
count[1] = strlen(text) + 1;
|
|
|
|
- for (size_t j = 0; j < blocks[i].num_attribute; j++) {
|
|
+ for (int64_t j = 0; j < blocks[i].num_attribute; j++) {
|
|
start[0] = j;
|
|
nc_put_vara_text(exoid, att_name_varid, start, count, text);
|
|
}
|
|
}
|
|
}
|
|
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
- return (EX_FATAL);
|
|
+ exi_leavedef(exoid, __func__);
|
|
+ return EX_FATAL;
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_nodal_var_int.c b/ThirdParty/exodusII/vtkexodusII/src/ex__put_nodal_var_multi_time.c
|
|
similarity index 67%
|
|
rename from ThirdParty/exodusII/vtkexodusII/src/ex_put_nodal_var_int.c
|
|
rename to ThirdParty/exodusII/vtkexodusII/src/ex__put_nodal_var_multi_time.c
|
|
index 12bbde56d2..c2d2500954 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_nodal_var_int.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex__put_nodal_var_multi_time.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2023, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -7,16 +7,16 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_WARN, ex__comp_ws, etc
|
|
+#include "exodusII_int.h" // for EX_WARN, exi_comp_ws, etc
|
|
|
|
/*!
|
|
\internal
|
|
\ingroup ResultsData
|
|
-\note This function is called internally by ex_put_var() to handle
|
|
+\note This function is called internally by ex_put_var_time() to handle
|
|
the writing of nodal variable values.
|
|
|
|
-The function ex__put_nodal_var() writes the values of a single nodal
|
|
-variable for a single time step. The function ex_put_variable_param()
|
|
+The function exi_put_nodal_var_time() writes the values of a single nodal
|
|
+variable for multiple time steps. The function ex_put_variable_param()
|
|
must be invoked before this call is made.
|
|
|
|
Because nodal variables are floating point values, the application
|
|
@@ -24,7 +24,7 @@ code must declare the array passed to be the appropriate type
|
|
(float or double) to match the compute word size passed in
|
|
ex_create() or ex_open().
|
|
|
|
-\return In case of an error, ex__put_nodal_var() returns a negative number; a
|
|
+\return In case of an error, exi_put_nodal_var() 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()
|
|
@@ -37,17 +37,19 @@ nodal variables.
|
|
ex_create() or
|
|
ex_open().
|
|
|
|
-\param[in] time_step The time step number, as described under
|
|
-ex_put_time(). This
|
|
- is essentially a counter that is incremented when
|
|
-results variables
|
|
- are output. The first time step is 1.
|
|
-
|
|
\param[in] nodal_var_index The index of the nodal variable. The first
|
|
variable has an index of 1.
|
|
|
|
\param[in] num_nodes The number of nodal points.
|
|
|
|
+\param[in] beg_time_step The beginning time step number, as described under ex_put_time().
|
|
+ This is counter that is incremented when results variables
|
|
+ are output. The first time step is 1.
|
|
+
|
|
+\param[in] end_time_step The ending time step number, as described under ex_put_time().
|
|
+ This is counter that is incremented when results variables
|
|
+ are output. The first time step is 1.
|
|
+
|
|
\param[in] nodal_var_vals Array of num_nodes values of the
|
|
nodal_var_index-th nodal
|
|
variable for the time_step-th time step.
|
|
@@ -66,37 +68,35 @@ for (k=1; k <= num_nod_vars; k++) {
|
|
\comment{application code fills in this array}
|
|
nodal_var_vals[j] = 10.0;
|
|
}
|
|
- error = ex_put_nodal_var(exoid, time_step, k, num_nodes,
|
|
+ error = ex_put_var_time(exoid, EX_NODAL, k, 0, num_nodes, beg_time_step, end_time_step
|
|
nodal_var_vals);
|
|
}
|
|
~~~
|
|
|
|
*/
|
|
|
|
-int ex__put_nodal_var(int exoid, int time_step, int nodal_var_index, int64_t num_nodes,
|
|
- const void *nodal_var_vals)
|
|
+int exi_put_nodal_var_time(int exoid, int nodal_var_index, int64_t num_nodes, int beg_time_step,
|
|
+ int end_time_step, const void *nodal_var_vals)
|
|
|
|
{
|
|
int status;
|
|
int varid;
|
|
- size_t start[3], count[3];
|
|
+ size_t start[2], count[2];
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
if ((status = nc_inq_varid(exoid, VAR_NOD_VAR_NEW(nodal_var_index), &varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: could not find nodal variable %d in file id %d",
|
|
nodal_var_index, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_WARN);
|
|
+ return EX_WARN;
|
|
}
|
|
- start[0] = --time_step;
|
|
+ start[0] = --beg_time_step;
|
|
start[1] = 0;
|
|
- start[2] = 0;
|
|
|
|
- count[0] = 1;
|
|
+ count[0] = end_time_step - beg_time_step;
|
|
count[1] = num_nodes;
|
|
- count[2] = 0;
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_vara_float(exoid, varid, start, count, nodal_var_vals);
|
|
}
|
|
else {
|
|
@@ -106,7 +106,7 @@ int ex__put_nodal_var(int exoid, int time_step, int nodal_var_index, int64_t num
|
|
if (status != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to store nodal variables in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_add_attr.c b/ThirdParty/exodusII/vtkexodusII/src/ex_add_attr.c
|
|
index b2d1388e3f..a0f0e94776 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_add_attr.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_add_attr.c
|
|
@@ -25,7 +25,7 @@ int ex_add_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int64_t
|
|
int numattrdim;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -38,7 +38,7 @@ int ex_add_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int64_t
|
|
obj_id_ndx = 0;
|
|
}
|
|
else {
|
|
- obj_id_ndx = ex__id_lkup(exoid, obj_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, obj_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -123,7 +123,7 @@ int ex_add_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int64_t
|
|
|
|
/* element attribute array */
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -137,7 +137,7 @@ int ex_add_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int64_t
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
|
|
- ex__get_dimension(exoid, dnumobjent, ex_name_of_object(obj_type), &num_obj, &numobjentdim,
|
|
+ exi_get_dimension(exoid, dnumobjent, ex_name_of_object(obj_type), &num_obj, &numobjentdim,
|
|
__func__);
|
|
dims[0] = numobjentdim;
|
|
dims[1] = numattrdim;
|
|
@@ -149,7 +149,7 @@ int ex_add_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int64_t
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 2);
|
|
+ exi_compress_variable(exoid, varid, 2);
|
|
|
|
/* inquire previously defined dimensions */
|
|
if ((status = nc_inq_dimid(exoid, DIM_STR_NAME, &strdim)) != NC_NOERR) {
|
|
@@ -172,7 +172,7 @@ int ex_add_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int64_t
|
|
|
|
/* leave define mode */
|
|
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -182,7 +182,7 @@ int ex_add_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int64_t
|
|
if (att_name_varid >= 0) {
|
|
size_t count[2];
|
|
size_t start[2];
|
|
- char * text = "";
|
|
+ char *text = "";
|
|
size_t i;
|
|
|
|
count[0] = 1;
|
|
@@ -199,6 +199,6 @@ int ex_add_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int64_t
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_close.c b/ThirdParty/exodusII/vtkexodusII/src/ex_close.c
|
|
index 1e1de7f313..27716f27dd 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_close.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_close.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2023, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -21,7 +21,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for ex__get_counter_list, etc
|
|
+#include "exodusII_int.h" // for exi_get_counter_list, etc
|
|
|
|
/*!
|
|
\ingroup Utilities
|
|
@@ -50,76 +50,72 @@ int ex_close(int exoid)
|
|
int status;
|
|
int status1;
|
|
int status2;
|
|
-#if NC_HAS_HDF5
|
|
- int parent_id = 0;
|
|
-#endif
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+#ifndef NDEBUG
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
+ assert(!file->in_define_mode && file->persist_define_mode == 0);
|
|
+#endif
|
|
+
|
|
/*
|
|
* 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.
|
|
+ * call exi_rm_file_item and exi_rm_stat_ptr on each group.
|
|
*/
|
|
|
|
-#if NC_HAS_HDF5
|
|
- /* nc_inq_grp_parent() will return NC_ENOGRP error if exoid
|
|
- * refers to the root group (which is what we want)
|
|
+ /*
|
|
+ * Get exoid of root group
|
|
*/
|
|
- if ((status = nc_inq_grp_parent(exoid, &parent_id)) != NC_ENOGRP) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: file id %d does not refer to root group.", exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_NOTROOTID);
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
- }
|
|
-#endif
|
|
|
|
if ((status1 = nc_sync(exoid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to update file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status1);
|
|
}
|
|
|
|
- if ((status2 = nc_close(exoid)) != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to close file id %d", exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status2);
|
|
+ int root_id = exoid & EX_FILE_ID_MASK;
|
|
+ if ((status2 = nc_close(root_id)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to close file id %d", root_id);
|
|
+ ex_err_fn(root_id, __func__, errmsg, status2);
|
|
}
|
|
|
|
/* Even if we have failures above due to nc_sync() or nc_close(), we still need to clean up our
|
|
* internal datastructures.
|
|
*/
|
|
|
|
- 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_file_item(exoid, ex__get_counter_list(EX_ASSEMBLY));
|
|
- ex__rm_file_item(exoid, ex__get_counter_list(EX_BLOB));
|
|
-
|
|
- 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);
|
|
-
|
|
- ex__conv_exit(exoid);
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_ELEM_BLOCK));
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_FACE_BLOCK));
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_EDGE_BLOCK));
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_NODE_SET));
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_EDGE_SET));
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_FACE_SET));
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_SIDE_SET));
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_ELEM_SET));
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_NODE_MAP));
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_EDGE_MAP));
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_FACE_MAP));
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_ELEM_MAP));
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_ASSEMBLY));
|
|
+ exi_rm_file_item(exoid, exi_get_counter_list(EX_BLOB));
|
|
+
|
|
+ exi_rm_stat_ptr(exoid, &exoII_ed);
|
|
+ exi_rm_stat_ptr(exoid, &exoII_fa);
|
|
+ exi_rm_stat_ptr(exoid, &exoII_eb);
|
|
+ exi_rm_stat_ptr(exoid, &exoII_ns);
|
|
+ exi_rm_stat_ptr(exoid, &exoII_es);
|
|
+ exi_rm_stat_ptr(exoid, &exoII_fs);
|
|
+ exi_rm_stat_ptr(exoid, &exoII_ss);
|
|
+ exi_rm_stat_ptr(exoid, &exoII_els);
|
|
+ exi_rm_stat_ptr(exoid, &exoII_nm);
|
|
+ exi_rm_stat_ptr(exoid, &exoII_edm);
|
|
+ exi_rm_stat_ptr(exoid, &exoII_fam);
|
|
+ exi_rm_stat_ptr(exoid, &exoII_em);
|
|
+
|
|
+ exi_conv_exit(exoid);
|
|
|
|
status = EX_NOERR;
|
|
if (status1 != NC_NOERR || status2 != NC_NOERR) {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_conv.c b/ThirdParty/exodusII/vtkexodusII/src/ex_conv.c
|
|
index 596172c17e..d2e21b4ae6 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_conv.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_conv.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for ex__file_item, EX_FATAL, etc
|
|
+#include "exodusII_int.h" // for exi_file_item, EX_FATAL, etc
|
|
#include "stdbool.h"
|
|
|
|
/*! \file
|
|
@@ -24,30 +24,30 @@
|
|
|
|
#define NC_FLOAT_WORDSIZE 4
|
|
|
|
-static struct ex__file_item *file_list = NULL;
|
|
+static struct exi_file_item *file_list = NULL;
|
|
|
|
-struct ex__file_item *ex__find_file_item(int exoid)
|
|
+struct exi_file_item *exi_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;
|
|
+ struct exi_file_item *ptr = file_list;
|
|
while (ptr) {
|
|
if (ptr->file_id == base_exoid) {
|
|
break;
|
|
}
|
|
ptr = ptr->next;
|
|
}
|
|
- return (ptr);
|
|
+ return ptr;
|
|
}
|
|
|
|
#define EX__MAX_PATHLEN 8192
|
|
-int ex__check_multiple_open(const char *path, int mode, const char *func)
|
|
+int exi_check_multiple_open(const char *path, int mode, const char *func)
|
|
{
|
|
EX_FUNC_ENTER();
|
|
bool is_write = mode & EX_WRITE;
|
|
char tmp[EX__MAX_PATHLEN];
|
|
size_t pathlen;
|
|
- struct ex__file_item *ptr = file_list;
|
|
+ struct exi_file_item *ptr = file_list;
|
|
while (ptr) {
|
|
nc_inq_path(ptr->file_id, &pathlen, tmp);
|
|
/* If path is too long, assume it is ok... */
|
|
@@ -72,7 +72,7 @@ int ex__check_multiple_open(const char *path, int mode, const char *func)
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
}
|
|
|
|
-int ex__check_valid_file_id(int exoid, const char *func)
|
|
+int exi_check_valid_file_id(int exoid, const char *func)
|
|
{
|
|
bool error = false;
|
|
if (exoid <= 0) {
|
|
@@ -80,7 +80,8 @@ int ex__check_valid_file_id(int exoid, const char *func)
|
|
}
|
|
#if !defined BUILT_IN_SIERRA
|
|
else {
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ int rootid = exoid & EX_FILE_ID_MASK;
|
|
+ struct exi_file_item *file = exi_find_file_item(rootid);
|
|
|
|
if (!file) {
|
|
error = true;
|
|
@@ -93,13 +94,14 @@ int ex__check_valid_file_id(int exoid, const char *func)
|
|
if (old_opt & EX_ABORT) {
|
|
ex_opts(EX_VERBOSE | EX_ABORT);
|
|
}
|
|
+ int rootid = exoid & EX_FILE_ID_MASK;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: In \"%s\", the file id %d was not obtained via a call "
|
|
"to \"ex_open\" or \"ex_create\".\n\t\tIt does not refer to a "
|
|
"valid open exodus file.\n\t\tAborting to avoid file "
|
|
"corruption or data loss or other potential problems.",
|
|
- func, exoid);
|
|
+ func, rootid);
|
|
ex_err(__func__, errmsg, EX_BADFILEID);
|
|
ex_opts(old_opt);
|
|
return EX_FATAL;
|
|
@@ -107,14 +109,13 @@ int ex__check_valid_file_id(int exoid, const char *func)
|
|
return EX_NOERR;
|
|
}
|
|
|
|
-int ex__conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_wordsize,
|
|
+int exi_conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_wordsize,
|
|
int int64_status, bool is_parallel, bool is_hdf5, bool is_pnetcdf, bool is_write)
|
|
{
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- struct ex__file_item *new_file;
|
|
- int filetype = 0;
|
|
+ struct exi_file_item *new_file = NULL;
|
|
|
|
- /*! ex__conv_init() initializes the floating point conversion process.
|
|
+ /*! exi_conv_init() initializes the floating point conversion process.
|
|
*
|
|
* \param exoid an integer uniquely identifying the file of interest.
|
|
*
|
|
@@ -161,7 +162,7 @@ int ex__conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_word
|
|
/* If the following line causes a compile-time error, then there is a problem
|
|
* which will cause exodus to not work correctly on this platform.
|
|
*
|
|
- * Contact Greg Sjaardema, gdsjaar@sandia.gov for asisstance.
|
|
+ * Contact Greg Sjaardema, gdsjaar@sandia.gov for assistance.
|
|
*/
|
|
#define CT_ASSERT(e) extern char(*ct_assert(void))[sizeof(char[1 - 2 * !(e)])]
|
|
CT_ASSERT((sizeof(float) == 4 || sizeof(float) == 8) &&
|
|
@@ -220,9 +221,10 @@ int ex__conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_word
|
|
* 3 -- netcdf4 classic (NC_FORMAT_NETCDF4_CLASSIC -1)
|
|
*/
|
|
|
|
+ int filetype = 0;
|
|
nc_inq_format(exoid, &filetype);
|
|
|
|
- if (!(new_file = malloc(sizeof(struct ex__file_item)))) {
|
|
+ if (!(new_file = malloc(sizeof(struct exi_file_item)))) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate memory for internal file "
|
|
"structure storage file id %d",
|
|
@@ -231,15 +233,16 @@ int ex__conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_word
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- new_file->file_id = exoid;
|
|
+ new_file->file_id = (unsigned)exoid & EX_FILE_ID_MASK;
|
|
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->maximum_name_length = exi_default_max_name_length;
|
|
new_file->time_varid = -1;
|
|
new_file->compression_algorithm = EX_COMPRESS_GZIP;
|
|
new_file->assembly_count = 0;
|
|
new_file->blob_count = 0;
|
|
new_file->compression_level = 0;
|
|
+ new_file->quantize_nsd = 0;
|
|
new_file->shuffle = 0;
|
|
new_file->file_type = filetype - 1;
|
|
new_file->is_parallel = is_parallel;
|
|
@@ -249,6 +252,8 @@ int ex__conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_word
|
|
new_file->has_edges = 1;
|
|
new_file->has_faces = 1;
|
|
new_file->has_elems = 1;
|
|
+ new_file->in_define_mode = 0;
|
|
+ new_file->persist_define_mode = 0;
|
|
new_file->is_write = is_write;
|
|
|
|
new_file->next = file_list;
|
|
@@ -267,26 +272,26 @@ int ex__conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_word
|
|
/*............................................................................*/
|
|
/*............................................................................*/
|
|
|
|
-/*! ex__conv_exit() takes the structure identified by "exoid" out of the linked
|
|
+/*! exi_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
|
|
+ * \note it is absolutely necessary for exi_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.
|
|
*/
|
|
-void ex__conv_exit(int exoid)
|
|
+void exi_conv_exit(int exoid)
|
|
{
|
|
+ struct exi_file_item *file = file_list;
|
|
+ struct exi_file_item *prev = NULL;
|
|
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- struct ex__file_item *file = file_list;
|
|
- struct ex__file_item *prev = NULL;
|
|
+ int root_id = (unsigned)exoid & EX_FILE_ID_MASK;
|
|
|
|
EX_FUNC_ENTER();
|
|
while (file) {
|
|
- if (file->file_id == exoid) {
|
|
+ if (file->file_id == root_id) {
|
|
break;
|
|
}
|
|
|
|
@@ -295,6 +300,7 @@ void ex__conv_exit(int exoid)
|
|
}
|
|
|
|
if (!file) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: failure to clear file id %d - not in list.", exoid);
|
|
ex_err(__func__, errmsg, -EX_BADFILEID);
|
|
EX_FUNC_VOID();
|
|
@@ -319,13 +325,13 @@ nc_type nc_flt_code(int exoid)
|
|
/*!
|
|
* \ingroup Utilities
|
|
* nc_flt_code() returns either NC_FLOAT or NC_DOUBLE, based on the parameters
|
|
- * with which ex__conv_init() was called. nc_flt_code() is used as the nc_type
|
|
+ * with which exi_conv_init() 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.
|
|
*/
|
|
EX_FUNC_ENTER();
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
|
|
if (!file) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
@@ -336,7 +342,7 @@ nc_type nc_flt_code(int exoid)
|
|
EX_FUNC_LEAVE(file->netcdf_type_code);
|
|
}
|
|
|
|
-int ex_int64_status(int exoid)
|
|
+unsigned ex_int64_status(int exoid)
|
|
{
|
|
/*!
|
|
* \ingroup Utilities
|
|
@@ -359,7 +365,7 @@ int ex_int64_status(int exoid)
|
|
#EX_INQ_INT64_API) |
|
|
*/
|
|
EX_FUNC_ENTER();
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
|
|
if (!file) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
@@ -389,12 +395,8 @@ int ex_set_int64_status(int exoid, int mode)
|
|
| #EX_ALL_INT64_API | (#EX_MAPS_INT64_API \| #EX_IDS_INT64_API \| #EX_BULK_INT64_API \|
|
|
#EX_INQ_INT64_API) |
|
|
*/
|
|
-
|
|
- int api_mode = 0;
|
|
- int db_mode = 0;
|
|
-
|
|
EX_FUNC_ENTER();
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
|
|
if (!file) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
@@ -404,8 +406,8 @@ int ex_set_int64_status(int exoid, int mode)
|
|
}
|
|
|
|
/* Strip of all non-INT64_API values */
|
|
- api_mode = mode & EX_ALL_INT64_API;
|
|
- db_mode = file->int64_status & EX_ALL_INT64_DB;
|
|
+ int api_mode = mode & EX_ALL_INT64_API;
|
|
+ int db_mode = file->int64_status & EX_ALL_INT64_DB;
|
|
|
|
file->int64_status = api_mode | db_mode;
|
|
EX_FUNC_LEAVE(file->int64_status);
|
|
@@ -418,7 +420,7 @@ int ex_set_int64_status(int exoid, int mode)
|
|
int ex_set_option(int exoid, ex_option_type option, int option_value)
|
|
{
|
|
EX_FUNC_ENTER();
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
if (!file) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d for ex_set_option().", exoid);
|
|
@@ -446,19 +448,76 @@ int ex_set_option(int exoid, ex_option_type option, int option_value)
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: invalid value %d for SZIP Compression. Must be even and 4 <= value <= "
|
|
- "32. Ignoring.",
|
|
+ "32. Setting value to 4.",
|
|
+ value);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ value = 4;
|
|
+ }
|
|
+ }
|
|
+ else if (file->compression_algorithm == EX_COMPRESS_ZSTD) {
|
|
+#if NC_HAS_ZSTD == 1
|
|
+ if (value < -131072 || value > 22) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: invalid value %d for ZSTD Compression. Must be between -131072 and 22. "
|
|
+ "Setting value to 4",
|
|
+ value);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ value = 4;
|
|
+ }
|
|
+#else
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(
|
|
+ errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: Zstandard compression is not supported in this version of netCDF library.");
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+#endif
|
|
+ }
|
|
+ else if (file->compression_algorithm == EX_COMPRESS_BZ2) {
|
|
+#if NC_HAS_BZ2 == 1
|
|
+ if (value < 0 || value > 9) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: invalid value %d for BZIP2 Compression. Must be between 0 and 9 "
|
|
+ "inclusive. Setting value to 1.",
|
|
value);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
+ value = 1;
|
|
}
|
|
+#else
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: Bzip2 compression is not supported in this version of netCDF library.");
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+#endif
|
|
}
|
|
file->compression_level = value;
|
|
- assert(value == file->compression_level);
|
|
}
|
|
else {
|
|
file->compression_level = 0;
|
|
}
|
|
break;
|
|
+ case EX_OPT_QUANTIZE_NSD:
|
|
+#if NC_HAS_QUANTIZE == 1
|
|
+ if (option_value > 15) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: invalid value %d for Quantize NSD. Must be less than or equal to 15. "
|
|
+ "Setting value to 15.",
|
|
+ option_value);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ option_value = 15;
|
|
+ }
|
|
+ file->quantize_nsd = option_value;
|
|
+#else
|
|
+ {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: Quanitzation is not supported in this version of netCDF library.");
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ }
|
|
+#endif
|
|
+ break;
|
|
case EX_OPT_COMPRESSION_SHUFFLE: /* 0 (disabled); 1 (enabled) */
|
|
file->shuffle = option_value != 0 ? 1 : 0;
|
|
break;
|
|
@@ -478,37 +537,37 @@ int ex_set_option(int exoid, ex_option_type option, int option_value)
|
|
|
|
/*!
|
|
* \ingroup Utilities
|
|
- * ex__comp_ws() returns 4 (i.e. sizeof(float)) or 8 (i.e. sizeof(double)),
|
|
+ * exi_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.
|
|
*/
|
|
-int ex__comp_ws(int exoid)
|
|
+int exi_comp_ws(int exoid)
|
|
{
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
|
|
if (!file) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d", exoid);
|
|
ex_err(__func__, errmsg, EX_BADFILEID);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
/* Stored as 0 for 4-byte; 1 for 8-byte */
|
|
- return ((file->user_compute_wordsize + 1) * 4);
|
|
+ return (file->user_compute_wordsize + 1) * 4;
|
|
}
|
|
|
|
/*!
|
|
* \ingroup Utilities
|
|
- * ex__is_parallel() returns 1 (true) or 0 (false) depending on whether
|
|
+ * exi_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.
|
|
* \param exoid integer which uniquely identifies the file of interest.
|
|
*/
|
|
-int ex__is_parallel(int exoid)
|
|
+int exi_is_parallel(int exoid)
|
|
{
|
|
EX_FUNC_ENTER();
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
|
|
if (!file) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
@@ -537,8 +596,7 @@ int ex__is_parallel(int exoid)
|
|
int ex_set_parallel(int exoid, int is_parallel)
|
|
{
|
|
EX_FUNC_ENTER();
|
|
- int old_value = 0;
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
|
|
if (!file) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
@@ -547,7 +605,7 @@ int ex_set_parallel(int exoid, int is_parallel)
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- old_value = file->is_parallel;
|
|
+ int old_value = file->is_parallel;
|
|
file->is_parallel = is_parallel;
|
|
/* Stored as 1 for parallel, 0 for serial or file-per-processor */
|
|
EX_FUNC_LEAVE(old_value);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_copy.c b/ThirdParty/exodusII/vtkexodusII/src/ex_copy.c
|
|
index 9b691962dc..97ea864869 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_copy.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_copy.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -7,10 +7,10 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for EX_FATAL, exerrval, ex_err, etc
|
|
-#include "exodusII_int.h" // for ex__get_counter_list, etc
|
|
+#include "exodusII_int.h" // for exi_get_counter_list, etc
|
|
|
|
#define STRINGIFY(x) #x
|
|
-#define TOSTRING(x) STRINGIFY(x)
|
|
+#define TOSTRING(x) STRINGIFY(x)
|
|
|
|
#define EXCHECK(funcall) \
|
|
if ((funcall) != NC_NOERR) { \
|
|
@@ -21,7 +21,7 @@
|
|
#define EXCHECKI(funcall) \
|
|
if ((funcall) != NC_NOERR) { \
|
|
fprintf(stderr, "Error calling %s\n", TOSTRING(funcall)); \
|
|
- return (EX_FATAL); \
|
|
+ return EX_FATAL; \
|
|
}
|
|
|
|
#define EXCHECKF(funcall) \
|
|
@@ -31,12 +31,6 @@
|
|
}
|
|
|
|
/*! \cond INTERNAL */
|
|
-struct ncdim
|
|
-{ /* dimension */
|
|
- char name[MAX_VAR_NAME_LENGTH];
|
|
- size_t size;
|
|
-};
|
|
-
|
|
struct ncvar
|
|
{ /* variable */
|
|
char name[MAX_VAR_NAME_LENGTH];
|
|
@@ -48,11 +42,9 @@ struct ncvar
|
|
|
|
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);
|
|
@@ -67,14 +59,14 @@ static int cpy_coord_def(int in_id, int out_id, int rec_dim_id, char *var_nm,
|
|
static int cpy_coord_val(int in_id, int out_id, char *var_nm, int in_large);
|
|
static void update_structs(int out_exoid);
|
|
static void update_internal_structs(int out_exoid, ex_inquiry inqcode,
|
|
- struct ex__list_item **ctr_list);
|
|
+ struct exi_list_item **ctr_list);
|
|
|
|
static int is_truth_table_variable(const char *var_name)
|
|
{
|
|
/* If copying just the "mesh" or "non-transient" portion of the
|
|
* input DB, these are the variables that won't be copied:
|
|
*/
|
|
- return (strstr(var_name, "_var_tab") != NULL);
|
|
+ return strstr(var_name, "_var_tab") != NULL;
|
|
}
|
|
|
|
static int is_non_mesh_variable(const char *var_name)
|
|
@@ -89,15 +81,11 @@ static int is_non_mesh_variable(const char *var_name)
|
|
/*! \cond INTERNAL */
|
|
static int ex_copy_internal(int in_exoid, int out_exoid, int mesh_only)
|
|
{
|
|
- int status;
|
|
- int in_large;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(in_exoid, __func__) != EX_NOERR) {
|
|
+ if (exi_check_valid_file_id(in_exoid, __func__) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- if (ex__check_valid_file_id(out_exoid, __func__) != EX_NOERR) {
|
|
+ if (exi_check_valid_file_id(out_exoid, __func__) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -105,13 +93,14 @@ static int ex_copy_internal(int in_exoid, int out_exoid, int mesh_only)
|
|
* Get exodus_large_model setting on both input and output
|
|
* databases so know how to handle coordinates.
|
|
*/
|
|
- in_large = ex_large_model(in_exoid);
|
|
+ int in_large = ex_large_model(in_exoid);
|
|
|
|
/*
|
|
* Get integer sizes for both input and output databases.
|
|
* Currently they should both match or there will be an error.
|
|
*/
|
|
if (ex_int64_status(in_exoid) != ex_int64_status(out_exoid)) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf_nowarn(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: integer sizes do not match for input and output databases.");
|
|
ex_err_fn(in_exoid, __func__, errmsg, EX_WRONGFILETYPE);
|
|
@@ -119,7 +108,7 @@ static int ex_copy_internal(int in_exoid, int out_exoid, int mesh_only)
|
|
}
|
|
|
|
/* put output file into define mode */
|
|
- EXCHECK(nc_redef(out_exoid));
|
|
+ EXCHECK(exi_redef(out_exoid, __func__));
|
|
|
|
/* copy global attributes */
|
|
EXCHECK(cpy_global_att(in_exoid, out_exoid));
|
|
@@ -131,7 +120,7 @@ static int ex_copy_internal(int in_exoid, int out_exoid, int mesh_only)
|
|
EXCHECK(cpy_variables(in_exoid, out_exoid, in_large, mesh_only));
|
|
|
|
/* take the output file out of define mode */
|
|
- if ((status = ex__leavedef(out_exoid, __func__)) != NC_NOERR) {
|
|
+ if (exi_leavedef(out_exoid, __func__) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -145,6 +134,7 @@ static int ex_copy_internal(int in_exoid, int out_exoid, int mesh_only)
|
|
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
}
|
|
+/*! \endcond */
|
|
|
|
/*!
|
|
\ingroup Utilities
|
|
@@ -183,32 +173,31 @@ int ex_copy_transient(int in_exoid, int out_exoid)
|
|
}
|
|
|
|
/*! \cond INTERNAL */
|
|
-int cpy_variable_data(int in_exoid, int out_exoid, int in_large, int mesh_only)
|
|
+static int cpy_variable_data(int in_exoid, int out_exoid, int in_large, int mesh_only)
|
|
{
|
|
- int nvars; /* number of variables */
|
|
- int varid; /* variable id */
|
|
- int is_filtered = 0;
|
|
- struct ncvar var; /* variable */
|
|
-
|
|
+ int nvars; /* number of variables */
|
|
+ /* NOTE: This is incorrect for files containing groups */
|
|
EXCHECKI(nc_inq(in_exoid, NULL, &nvars, NULL, NULL));
|
|
- for (varid = 0; varid < nvars; varid++) {
|
|
+ for (int varid = 0; varid < nvars; varid++) {
|
|
+ bool is_filtered;
|
|
+ struct ncvar var; /* variable */
|
|
EXCHECKI(nc_inq_var(in_exoid, varid, var.name, &var.type, &var.ndims, var.dims, &var.natts));
|
|
if ((strcmp(var.name, VAR_QA_TITLE) == 0) || (strcmp(var.name, VAR_INFO) == 0)) {
|
|
- is_filtered = 1;
|
|
+ is_filtered = true;
|
|
}
|
|
else if (is_truth_table_variable(var.name)) {
|
|
- is_filtered = 1;
|
|
+ is_filtered = true;
|
|
}
|
|
else if (mesh_only == 1 &&
|
|
(is_non_mesh_variable(var.name) || (strcmp(var.name, VAR_WHOLE_TIME) == 0))) {
|
|
- is_filtered = 1;
|
|
+ is_filtered = true;
|
|
}
|
|
else if (mesh_only == 0 &&
|
|
(!is_non_mesh_variable(var.name) && strcmp(var.name, VAR_WHOLE_TIME) != 0)) {
|
|
- is_filtered = 1;
|
|
+ is_filtered = true;
|
|
}
|
|
else {
|
|
- is_filtered = 0;
|
|
+ is_filtered = false;
|
|
}
|
|
|
|
if (!is_filtered) {
|
|
@@ -224,34 +213,32 @@ int cpy_variable_data(int in_exoid, int out_exoid, int in_large, int mesh_only)
|
|
}
|
|
|
|
/*! \cond INTERNAL */
|
|
-int cpy_variables(int in_exoid, int out_exoid, int in_large, int mesh_only)
|
|
+static int cpy_variables(int in_exoid, int out_exoid, int in_large, int mesh_only)
|
|
{
|
|
- int nvars; /* number of variables */
|
|
- int recdimid; /* id of unlimited dimension */
|
|
- int varid; /* variable id */
|
|
- int var_out_id; /* variable id */
|
|
- int is_filtered = 0;
|
|
- struct ncvar var; /* variable */
|
|
-
|
|
+ int recdimid; /* id of unlimited dimension */
|
|
+ int nvars; /* number of variables */
|
|
+ /* NOTE: This is incorrect for files containing groups */
|
|
EXCHECKI(nc_inq(in_exoid, NULL, &nvars, NULL, &recdimid));
|
|
- for (varid = 0; varid < nvars; varid++) {
|
|
-
|
|
+ for (int varid = 0; varid < nvars; varid++) {
|
|
+ struct ncvar var; /* variable */
|
|
EXCHECKI(nc_inq_var(in_exoid, varid, var.name, &var.type, &var.ndims, var.dims, &var.natts));
|
|
|
|
+ bool is_filtered;
|
|
if ((strcmp(var.name, VAR_QA_TITLE) == 0) || (strcmp(var.name, VAR_INFO) == 0)) {
|
|
- is_filtered = 1;
|
|
+ is_filtered = true;
|
|
}
|
|
else if (is_truth_table_variable(var.name)) {
|
|
- is_filtered = 1;
|
|
+ is_filtered = true;
|
|
}
|
|
else if (mesh_only == 1 && is_non_mesh_variable(var.name)) {
|
|
- is_filtered = 1;
|
|
+ is_filtered = true;
|
|
}
|
|
else {
|
|
- is_filtered = 0;
|
|
+ is_filtered = false;
|
|
}
|
|
|
|
if (!is_filtered) {
|
|
+ int var_out_id; /* variable id */
|
|
if (strncmp(var.name, VAR_COORD, 5) == 0) {
|
|
var_out_id = cpy_coord_def(in_exoid, out_exoid, recdimid, var.name, in_large);
|
|
}
|
|
@@ -265,32 +252,31 @@ int cpy_variables(int in_exoid, int out_exoid, int in_large, int mesh_only)
|
|
}
|
|
return EX_NOERR;
|
|
}
|
|
+/*! \endcond */
|
|
|
|
/*! \cond INTERNAL */
|
|
-int cpy_dimension(int in_exoid, int out_exoid, int mesh_only)
|
|
+static int cpy_dimension(int in_exoid, int out_exoid, int mesh_only)
|
|
{
|
|
- int status;
|
|
- int ndims; /* number of dimensions */
|
|
- int recdimid; /* id of unlimited dimension */
|
|
- int dimid; /* dimension id */
|
|
- int dim_out_id; /* dimension id */
|
|
- int is_filtered = 0;
|
|
- char dim_nm[NC_MAX_NAME];
|
|
- size_t dim_sz;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
+ int dim_out_id; /* dimension id */
|
|
|
|
+ int ndims; /* number of dimensions */
|
|
+ int recdimid; /* id of unlimited dimension */
|
|
+ /* NOTE: This is incorrect for files containing groups */
|
|
EXCHECKI(nc_inq(in_exoid, &ndims, NULL, NULL, &recdimid));
|
|
- for (dimid = 0; dimid < ndims; dimid++) {
|
|
+ for (int dimid = 0; dimid < ndims; dimid++) {
|
|
|
|
+ char dim_nm[EX_MAX_NAME + 1];
|
|
+ size_t dim_sz;
|
|
EXCHECK(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 */
|
|
+ bool is_filtered;
|
|
if (strcmp(dim_nm, DIM_NUM_QA) == 0 || strcmp(dim_nm, DIM_NUM_INFO) == 0 ||
|
|
strcmp(dim_nm, DIM_N4) == 0 || strcmp(dim_nm, DIM_STR) == 0 ||
|
|
strcmp(dim_nm, DIM_LIN) == 0) {
|
|
- is_filtered = 1;
|
|
+ is_filtered = true;
|
|
}
|
|
else if (mesh_only == 1 &&
|
|
((strcmp(dim_nm, DIM_NUM_NOD_VAR) == 0) || (strcmp(dim_nm, DIM_NUM_EDG_VAR) == 0) ||
|
|
@@ -300,15 +286,15 @@ int cpy_dimension(int in_exoid, int out_exoid, int mesh_only)
|
|
(strcmp(dim_nm, DIM_NUM_ELSET_VAR) == 0) || (strcmp(dim_nm, DIM_NUM_GLO_VAR) == 0) ||
|
|
(strcmp(dim_nm, DIM_NUM_ASSEMBLY_VAR) == 0) ||
|
|
(strcmp(dim_nm, DIM_NUM_BLOB_VAR) == 0) || (strstr(dim_nm, "_red_var") != NULL))) {
|
|
- is_filtered = 1;
|
|
+ is_filtered = true;
|
|
}
|
|
else {
|
|
- is_filtered = 0;
|
|
+ is_filtered = false;
|
|
}
|
|
|
|
if (!is_filtered) {
|
|
/* See if the dimension has already been defined */
|
|
- status = nc_inq_dimid(out_exoid, dim_nm, &dim_out_id);
|
|
+ int status = nc_inq_dimid(out_exoid, dim_nm, &dim_out_id);
|
|
|
|
if (status != NC_NOERR) {
|
|
if (dimid != recdimid) {
|
|
@@ -318,6 +304,7 @@ int cpy_dimension(int in_exoid, int out_exoid, int mesh_only)
|
|
status = nc_def_dim(out_exoid, dim_nm, NC_UNLIMITED, &dim_out_id);
|
|
}
|
|
if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf_nowarn(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to define %s dimension in file id %d", dim_nm, out_exoid);
|
|
ex_err_fn(out_exoid, __func__, errmsg, status);
|
|
@@ -331,7 +318,7 @@ int cpy_dimension(int in_exoid, int out_exoid, int mesh_only)
|
|
* 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);
|
|
+ int status = nc_inq_dimid(in_exoid, DIM_STR_NAME, &dim_out_id);
|
|
if (status != NC_NOERR) {
|
|
/*
|
|
* See if it already exists in the output file
|
|
@@ -343,6 +330,7 @@ int cpy_dimension(int in_exoid, int out_exoid, int mesh_only)
|
|
/* Not found; set to default value of 32+1. */
|
|
|
|
if ((status = nc_def_dim(out_exoid, DIM_STR_NAME, 33, &dim_out_id)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf_nowarn(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to define string name dimension in file id %d", out_exoid);
|
|
ex_err_fn(out_exoid, __func__, errmsg, status);
|
|
@@ -354,17 +342,16 @@ int cpy_dimension(int in_exoid, int out_exoid, int mesh_only)
|
|
}
|
|
|
|
/*! \cond INTERNAL */
|
|
-int cpy_global_att(int in_exoid, int out_exoid)
|
|
+static int cpy_global_att(int in_exoid, int out_exoid)
|
|
{
|
|
- int status;
|
|
- int ngatts;
|
|
- size_t i;
|
|
struct ncatt att; /* attribute */
|
|
|
|
+ int ngatts;
|
|
+ /* NOTE: This is incorrect for files containing groups */
|
|
EXCHECKI(nc_inq(in_exoid, NULL, NULL, &ngatts, NULL));
|
|
|
|
/* copy global attributes */
|
|
- for (i = 0; i < (size_t)ngatts; i++) {
|
|
+ for (int i = 0; i < ngatts; i++) {
|
|
|
|
EXCHECKI(nc_inq_attname(in_exoid, NC_GLOBAL, i, att.name));
|
|
|
|
@@ -372,7 +359,7 @@ int cpy_global_att(int in_exoid, int out_exoid)
|
|
* 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) {
|
|
+ if (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 IOSS library to determine whether a timestep has been
|
|
@@ -395,7 +382,7 @@ int cpy_global_att(int in_exoid, int out_exoid)
|
|
{
|
|
nc_type att_type = NC_NAT;
|
|
size_t att_len = 0;
|
|
- status = nc_inq_att(in_exoid, NC_GLOBAL, ATT_MAX_NAME_LENGTH, &att_type, &att_len);
|
|
+ int status = nc_inq_att(in_exoid, NC_GLOBAL, ATT_MAX_NAME_LENGTH, &att_type, &att_len);
|
|
if (status == NC_NOERR) {
|
|
EXCHECKI(nc_copy_att(in_exoid, NC_GLOBAL, ATT_MAX_NAME_LENGTH, out_exoid, NC_GLOBAL));
|
|
}
|
|
@@ -403,16 +390,16 @@ int cpy_global_att(int in_exoid, int out_exoid)
|
|
|
|
return EX_NOERR;
|
|
}
|
|
+/*! \endcond */
|
|
|
|
/*! \cond INTERNAL */
|
|
-int cpy_att(int in_id, int out_id, int var_in_id, int var_out_id)
|
|
+static int cpy_att(int in_id, int out_id, int var_in_id, int var_out_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) {
|
|
@@ -423,27 +410,20 @@ int cpy_att(int in_id, int out_id, int var_in_id, int var_out_id)
|
|
}
|
|
|
|
/* Get the attributes names, types, lengths, and values */
|
|
- for (idx = 0; idx < nbr_att; idx++) {
|
|
+ for (int idx = 0; idx < nbr_att; idx++) {
|
|
char att_nm[MAX_VAR_NAME_LENGTH];
|
|
|
|
EXCHECKI(nc_inq_attname(in_id, var_in_id, idx, att_nm));
|
|
nc_copy_att(in_id, var_in_id, att_nm, out_id, var_out_id);
|
|
}
|
|
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
+/*! \endcond */
|
|
|
|
/*! \internal */
|
|
-int cpy_coord_def(int in_id, int out_id, int rec_dim_id, char *var_nm, int in_large)
|
|
+static int cpy_coord_def(int in_id, int out_id, int rec_dim_id, char *var_nm, int in_large)
|
|
{
|
|
- const char *routine = NULL;
|
|
- size_t spatial_dim;
|
|
- int nbr_dim;
|
|
- int temp;
|
|
-
|
|
- int dim_out_id[2];
|
|
- int var_out_id = -1;
|
|
-
|
|
/* Handle easiest situation first: in_large matches out_large (1) */
|
|
if (in_large == 1) {
|
|
return cpy_var_def(in_id, out_id, rec_dim_id, var_nm); /* OK */
|
|
@@ -453,7 +433,10 @@ int cpy_coord_def(int in_id, int out_id, int rec_dim_id, char *var_nm, int in_la
|
|
option is that in_large == 0 and out_large == 1. Also will need
|
|
the spatial dimension, so get that now.
|
|
*/
|
|
- ex__get_dimension(in_id, DIM_NUM_DIM, "dimension", &spatial_dim, &temp, routine);
|
|
+ int temp;
|
|
+ size_t spatial_dim;
|
|
+ const char *routine = NULL;
|
|
+ exi_get_dimension(in_id, DIM_NUM_DIM, "dimension", &spatial_dim, &temp, routine);
|
|
|
|
/* output file will have coordx, coordy, coordz (if 3d). See if
|
|
they are already defined in output file. Assume either all or
|
|
@@ -471,56 +454,53 @@ int cpy_coord_def(int in_id, int out_id, int rec_dim_id, char *var_nm, int in_la
|
|
}
|
|
|
|
/* Get dimid of the num_nodes dimension in output file... */
|
|
+ int dim_out_id[2];
|
|
EXCHECKI(nc_inq_dimid(out_id, DIM_NUM_NODES, &dim_out_id[0]));
|
|
|
|
/* Define the variables in the output file */
|
|
|
|
/* Define according to the EXODUS file's IO_word_size */
|
|
- nbr_dim = 1;
|
|
+ int nbr_dim = 1;
|
|
+ int var_out_id = -1;
|
|
EXCHECKI(nc_def_var(out_id, VAR_COORD_X, nc_flt_code(out_id), nbr_dim, dim_out_id, &var_out_id));
|
|
- ex__compress_variable(out_id, var_out_id, 2);
|
|
+ exi_compress_variable(out_id, var_out_id, 2);
|
|
if (spatial_dim > 1) {
|
|
EXCHECKI(
|
|
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);
|
|
+ exi_compress_variable(out_id, var_out_id, 2);
|
|
}
|
|
if (spatial_dim > 2) {
|
|
EXCHECKI(
|
|
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);
|
|
+ exi_compress_variable(out_id, var_out_id, 2);
|
|
}
|
|
|
|
return var_out_id; /* OK */
|
|
}
|
|
+/*! \endcond */
|
|
|
|
/*! \internal */
|
|
-int cpy_var_def(int in_id, int out_id, int rec_dim_id, char *var_nm)
|
|
+static int cpy_var_def(int in_id, int out_id, int rec_dim_id, char *var_nm)
|
|
{
|
|
/* Routine to copy the variable metadata from an input netCDF file
|
|
* to an output netCDF file.
|
|
*/
|
|
|
|
- int status;
|
|
- int dim_in_id[NC_MAX_VAR_DIMS];
|
|
- int dim_out_id[NC_MAX_VAR_DIMS];
|
|
- 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);
|
|
+ int var_out_id;
|
|
+ int status = nc_inq_varid(out_id, var_nm, &var_out_id);
|
|
if (status == NC_NOERR) {
|
|
return var_out_id; /* OK */
|
|
}
|
|
|
|
/* See if the requested variable is in the input file. */
|
|
+ int var_in_id;
|
|
EXCHECKI(nc_inq_varid(in_id, var_nm, &var_in_id));
|
|
|
|
/* Get the type of the variable and the number of dimensions. */
|
|
+ nc_type var_type;
|
|
EXCHECKI(nc_inq_vartype(in_id, var_in_id, &var_type));
|
|
+ int nbr_dim;
|
|
EXCHECKI(nc_inq_varndims(in_id, var_in_id, &nbr_dim));
|
|
|
|
/* Recall:
|
|
@@ -528,11 +508,13 @@ int cpy_var_def(int in_id, int out_id, int rec_dim_id, char *var_nm)
|
|
2. The variable must be defined before the attributes. */
|
|
|
|
/* Get the dimension IDs */
|
|
+ int dim_in_id[NC_MAX_VAR_DIMS];
|
|
EXCHECKI(nc_inq_vardimid(in_id, var_in_id, dim_in_id));
|
|
|
|
/* Get the dimension sizes and names */
|
|
- for (idx = 0; idx < nbr_dim; idx++) {
|
|
- char dim_nm[NC_MAX_NAME];
|
|
+ int dim_out_id[NC_MAX_VAR_DIMS];
|
|
+ for (int idx = 0; idx < nbr_dim; idx++) {
|
|
+ char dim_nm[EX_MAX_NAME + 1];
|
|
size_t dim_sz;
|
|
|
|
EXCHECKI(nc_inq_dim(in_id, dim_in_id[idx], dim_nm, &dim_sz));
|
|
@@ -558,53 +540,52 @@ int cpy_var_def(int in_id, int out_id, int rec_dim_id, char *var_nm)
|
|
|
|
if ((var_type == NC_FLOAT) || (var_type == NC_DOUBLE)) {
|
|
EXCHECKI(nc_def_var(out_id, var_nm, nc_flt_code(out_id), nbr_dim, dim_out_id, &var_out_id));
|
|
- ex__compress_variable(out_id, var_out_id, 2);
|
|
+ exi_compress_variable(out_id, var_out_id, 2);
|
|
}
|
|
else {
|
|
EXCHECKI(nc_def_var(out_id, var_nm, var_type, nbr_dim, dim_out_id, &var_out_id));
|
|
- ex__compress_variable(out_id, var_out_id, 1);
|
|
+ exi_compress_variable(out_id, var_out_id, 1);
|
|
}
|
|
return var_out_id; /* OK */
|
|
|
|
} /* end cpy_var_def() */
|
|
|
|
/*! \internal */
|
|
-int cpy_var_val(int in_id, int out_id, char *var_nm)
|
|
+static int cpy_var_val(int in_id, int out_id, char *var_nm)
|
|
{
|
|
+ void *void_ptr = NULL;
|
|
/* Routine to copy the variable data from an input netCDF file
|
|
* to an output netCDF file.
|
|
*/
|
|
|
|
- int dim_id_in[NC_MAX_VAR_DIMS];
|
|
- int dim_id_out[NC_MAX_VAR_DIMS];
|
|
- int idx;
|
|
- int nbr_dim;
|
|
- int var_in_id;
|
|
- int var_out_id;
|
|
- size_t dim_max;
|
|
- size_t dim_str[NC_MAX_VAR_DIMS];
|
|
- size_t dim_cnt[NC_MAX_VAR_DIMS];
|
|
- size_t var_sz = 1L;
|
|
- nc_type var_type_in, var_type_out;
|
|
-
|
|
- void *void_ptr = NULL;
|
|
-
|
|
/* Get the var_id for the requested variable from both files. */
|
|
+ int var_in_id;
|
|
EXCHECKI(nc_inq_varid(in_id, var_nm, &var_in_id));
|
|
+ int var_out_id;
|
|
EXCHECKI(nc_inq_varid(out_id, var_nm, &var_out_id));
|
|
|
|
/* Get the number of dimensions for the variable. */
|
|
+ nc_type var_type_out;
|
|
EXCHECKI(nc_inq_vartype(out_id, var_out_id, &var_type_out));
|
|
|
|
+ nc_type var_type_in;
|
|
EXCHECKI(nc_inq_vartype(in_id, var_in_id, &var_type_in));
|
|
+ int nbr_dim;
|
|
EXCHECKI(nc_inq_varndims(in_id, var_in_id, &nbr_dim));
|
|
|
|
/* Get the dimension IDs from the input file */
|
|
+ int dim_id_in[NC_MAX_VAR_DIMS];
|
|
EXCHECKF(nc_inq_vardimid(in_id, var_in_id, dim_id_in));
|
|
+ int dim_id_out[NC_MAX_VAR_DIMS];
|
|
EXCHECKF(nc_inq_vardimid(out_id, var_out_id, dim_id_out));
|
|
|
|
/* Get the dimension sizes and names from the input file */
|
|
- for (idx = 0; idx < nbr_dim; idx++) {
|
|
+ size_t dim_str[NC_MAX_VAR_DIMS];
|
|
+ size_t dim_cnt[NC_MAX_VAR_DIMS];
|
|
+ size_t var_sz = 1L;
|
|
+ bool string_len_same = true;
|
|
+
|
|
+ for (int idx = 0; idx < nbr_dim; idx++) {
|
|
/* NB: For the unlimited dimension, ncdiminq() returns the maximum
|
|
value used so far in writing data for that dimension.
|
|
Thus if you read the dimension sizes from the output file, then
|
|
@@ -621,7 +602,12 @@ int cpy_var_val(int in_id, int out_id, char *var_nm)
|
|
EXCHECKF(nc_inq_dimlen(out_id, dim_id_out[idx], &dim_out));
|
|
|
|
/* Initialize the indicial offset and stride arrays */
|
|
- dim_max = dim_in > dim_out ? dim_in : dim_out;
|
|
+ size_t dim_max = dim_in > dim_out ? dim_in : dim_out;
|
|
+
|
|
+ /* Need to know if input and output have different size strings. */
|
|
+ if (var_type_in == NC_CHAR && idx == 1 && dim_in != dim_out) {
|
|
+ string_len_same = false;
|
|
+ }
|
|
var_sz *= dim_max;
|
|
|
|
/* Handle case where output variable is smaller than input (rare, but happens) */
|
|
@@ -693,8 +679,39 @@ int cpy_var_val(int in_id, int out_id, char *var_nm)
|
|
}
|
|
|
|
else if (var_type_in == NC_CHAR) {
|
|
- EXCHECKF(nc_get_var_text(in_id, var_in_id, void_ptr));
|
|
- EXCHECKF(nc_put_vara_text(out_id, var_out_id, dim_str, dim_cnt, void_ptr));
|
|
+
|
|
+ if (string_len_same) {
|
|
+ EXCHECKF(nc_get_var_text(in_id, var_in_id, void_ptr));
|
|
+ EXCHECKF(nc_put_vara_text(out_id, var_out_id, dim_str, dim_cnt, void_ptr));
|
|
+ }
|
|
+ else {
|
|
+ /* Use void_ptr for the input read; alloc new space for output... */
|
|
+ EXCHECKF(nc_get_var_text(in_id, var_in_id, void_ptr));
|
|
+
|
|
+ if (void_ptr != NULL) {
|
|
+ size_t num_string = 0;
|
|
+ size_t in_size = 0;
|
|
+ size_t out_size = 0;
|
|
+ EXCHECKF(nc_inq_dimlen(in_id, dim_id_in[0], &num_string));
|
|
+ EXCHECKF(nc_inq_dimlen(in_id, dim_id_in[1], &in_size));
|
|
+ EXCHECKF(nc_inq_dimlen(out_id, dim_id_out[1], &out_size));
|
|
+ size_t min_size = in_size < out_size ? in_size : out_size;
|
|
+ char *out_strings = calloc(num_string * out_size, 1);
|
|
+ /* Read the input strings...*/
|
|
+
|
|
+ /* Copy to the output strings...*/
|
|
+ const char *in_strings = void_ptr;
|
|
+ for (size_t i = 0; i < num_string; i++) {
|
|
+ size_t in_off = i * in_size;
|
|
+ size_t out_off = i * out_size;
|
|
+ ex_copy_string(&out_strings[out_off], &in_strings[in_off], min_size);
|
|
+ out_strings[out_off + out_size - 1] = '\0';
|
|
+ }
|
|
+ dim_cnt[1] = out_size;
|
|
+ EXCHECKF(nc_put_vara_text(out_id, var_out_id, dim_str, dim_cnt, out_strings));
|
|
+ free(out_strings);
|
|
+ }
|
|
+ }
|
|
}
|
|
|
|
else {
|
|
@@ -705,30 +722,21 @@ int cpy_var_val(int in_id, int out_id, char *var_nm)
|
|
/* Free the space that held the variable */
|
|
free(void_ptr);
|
|
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
|
|
err_ret:
|
|
free(void_ptr);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
|
|
} /* end cpy_var_val() */
|
|
|
|
/*! \internal */
|
|
-int cpy_coord_val(int in_id, int out_id, char *var_nm, int in_large)
|
|
+static int cpy_coord_val(int in_id, int out_id, char *var_nm, int in_large)
|
|
{
|
|
/* Routine to copy the coordinate data from an input netCDF file
|
|
* to an output netCDF file.
|
|
*/
|
|
|
|
- const char *routine = NULL;
|
|
- int temp;
|
|
- size_t i;
|
|
- size_t spatial_dim, num_nodes;
|
|
- size_t start[2], count[2];
|
|
- nc_type var_type_in, var_type_out;
|
|
-
|
|
- void *void_ptr = NULL;
|
|
-
|
|
/* Handle easiest situation first: in_large matches out_large (1) */
|
|
if (in_large == 1) {
|
|
return cpy_var_val(in_id, out_id, var_nm); /* OK */
|
|
@@ -737,8 +745,11 @@ int cpy_coord_val(int in_id, int out_id, char *var_nm, int in_large)
|
|
/* At this point, know that in_large == 0, so will need to
|
|
copy a vector to multiple scalars. Also
|
|
will need a couple dimensions, so get them now.*/
|
|
- ex__get_dimension(in_id, DIM_NUM_DIM, "dimension", &spatial_dim, &temp, routine);
|
|
- ex__get_dimension(in_id, DIM_NUM_NODES, "nodes", &num_nodes, &temp, routine);
|
|
+ const char *routine = NULL;
|
|
+ int temp;
|
|
+ size_t spatial_dim, num_nodes;
|
|
+ exi_get_dimension(in_id, DIM_NUM_DIM, "dimension", &spatial_dim, &temp, routine);
|
|
+ exi_get_dimension(in_id, DIM_NUM_NODES, "nodes", &num_nodes, &temp, routine);
|
|
|
|
/* output file will have coordx, coordy, coordz (if 3d). */
|
|
/* Get the var_id for the requested variable from both files. */
|
|
@@ -753,15 +764,18 @@ int cpy_coord_val(int in_id, int out_id, char *var_nm, int in_large)
|
|
EXCHECKI(nc_inq_varid(out_id, VAR_COORD_Z, &var_out_id[2]));
|
|
}
|
|
|
|
+ nc_type var_type_in, var_type_out;
|
|
EXCHECKI(nc_inq_vartype(in_id, var_in_id, &var_type_in));
|
|
EXCHECKI(nc_inq_vartype(out_id, var_out_id[0], &var_type_out));
|
|
|
|
+ void *void_ptr = NULL;
|
|
if (num_nodes > 0) {
|
|
void_ptr = malloc(num_nodes * type_size(var_type_in));
|
|
}
|
|
|
|
/* Copy each component of the variable... */
|
|
- for (i = 0; i < spatial_dim; i++) {
|
|
+ size_t start[2], count[2];
|
|
+ for (size_t i = 0; i < spatial_dim; i++) {
|
|
start[0] = i;
|
|
start[1] = 0;
|
|
count[0] = 1;
|
|
@@ -779,44 +793,44 @@ int cpy_coord_val(int in_id, int out_id, char *var_nm, int in_large)
|
|
|
|
/* Free the space that held the variable */
|
|
free(void_ptr);
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
|
|
} /* end cpy_coord_val() */
|
|
|
|
/*! \internal */
|
|
-void update_structs(int out_exoid)
|
|
+static void update_structs(int out_exoid)
|
|
{
|
|
- 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));
|
|
- update_internal_structs(out_exoid, EX_INQ_ASSEMBLY, ex__get_counter_list(EX_ASSEMBLY));
|
|
- update_internal_structs(out_exoid, EX_INQ_BLOB, ex__get_counter_list(EX_BLOB));
|
|
-
|
|
- 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));
|
|
-
|
|
- 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));
|
|
+ update_internal_structs(out_exoid, EX_INQ_EDGE_BLK, exi_get_counter_list(EX_EDGE_BLOCK));
|
|
+ update_internal_structs(out_exoid, EX_INQ_FACE_BLK, exi_get_counter_list(EX_FACE_BLOCK));
|
|
+ update_internal_structs(out_exoid, EX_INQ_ELEM_BLK, exi_get_counter_list(EX_ELEM_BLOCK));
|
|
+ update_internal_structs(out_exoid, EX_INQ_ASSEMBLY, exi_get_counter_list(EX_ASSEMBLY));
|
|
+ update_internal_structs(out_exoid, EX_INQ_BLOB, exi_get_counter_list(EX_BLOB));
|
|
+
|
|
+ update_internal_structs(out_exoid, EX_INQ_NODE_SETS, exi_get_counter_list(EX_NODE_SET));
|
|
+ update_internal_structs(out_exoid, EX_INQ_EDGE_SETS, exi_get_counter_list(EX_EDGE_SET));
|
|
+ update_internal_structs(out_exoid, EX_INQ_FACE_SETS, exi_get_counter_list(EX_FACE_SET));
|
|
+ update_internal_structs(out_exoid, EX_INQ_SIDE_SETS, exi_get_counter_list(EX_SIDE_SET));
|
|
+ update_internal_structs(out_exoid, EX_INQ_ELEM_SETS, exi_get_counter_list(EX_ELEM_SET));
|
|
+
|
|
+ update_internal_structs(out_exoid, EX_INQ_NODE_MAP, exi_get_counter_list(EX_NODE_MAP));
|
|
+ update_internal_structs(out_exoid, EX_INQ_EDGE_MAP, exi_get_counter_list(EX_EDGE_MAP));
|
|
+ update_internal_structs(out_exoid, EX_INQ_FACE_MAP, exi_get_counter_list(EX_FACE_MAP));
|
|
+ update_internal_structs(out_exoid, EX_INQ_ELEM_MAP, exi_get_counter_list(EX_ELEM_MAP));
|
|
}
|
|
|
|
/*! \internal */
|
|
-void update_internal_structs(int out_exoid, ex_inquiry inqcode, struct ex__list_item **ctr_list)
|
|
+static void update_internal_structs(int out_exoid, ex_inquiry inqcode,
|
|
+ struct exi_list_item **ctr_list)
|
|
{
|
|
- int64_t i;
|
|
int64_t number = ex_inquire_int(out_exoid, inqcode);
|
|
if (number > 0) {
|
|
- for (i = 0; i < number; i++) {
|
|
- ex__inc_file_item(out_exoid, ctr_list);
|
|
+ for (int64_t i = 0; i < number; i++) {
|
|
+ exi_inc_file_item(out_exoid, ctr_list);
|
|
}
|
|
}
|
|
}
|
|
|
|
-size_t type_size(nc_type type)
|
|
+static size_t type_size(nc_type type)
|
|
{
|
|
if (type == NC_CHAR) {
|
|
return sizeof(char); /* OK */
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_create.c b/ThirdParty/exodusII/vtkexodusII/src/ex_create.c
|
|
index 7589adc7a2..bca2d8b5b7 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_create.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_create.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021, 2023 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -123,6 +123,7 @@ exoid = ex_create ("test.exo" \comment{filename path}
|
|
*/
|
|
#include "exodusII.h"
|
|
#include "exodusII_int.h"
|
|
+#include <stdlib.h>
|
|
|
|
/* NOTE: Do *not* call `ex_create_int()` directly. The public API
|
|
* function name is `ex_create()` which is a wrapper that calls
|
|
@@ -141,39 +142,61 @@ int ex_create_int(const char *path, int cmode, int *comp_ws, int *io_ws, int run
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- nc_mode = ex__handle_mode(my_mode, is_parallel, run_version);
|
|
+ nc_mode = exi_handle_mode(my_mode, is_parallel, run_version);
|
|
+
|
|
+ if (!path || strlen(path) == 0) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Filename is not specified.");
|
|
+ ex_err(__func__, errmsg, EX_BADFILEMODE);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ char *canon_path = exi_canonicalize_filename(path);
|
|
|
|
/* Verify that this file is not already open for read or write...
|
|
In theory, should be ok for the file to be open multiple times
|
|
for read, but bad things can happen if being read and written
|
|
at the same time...
|
|
*/
|
|
- if (ex__check_multiple_open(path, EX_WRITE, __func__)) {
|
|
+ if (exi_check_multiple_open(canon_path, EX_WRITE, __func__)) {
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+#if defined NC_NOATTCREORD
|
|
+ /* Disable attribute creation order tracking if available... */
|
|
+ nc_mode |= NC_NOATTCREORD;
|
|
+#endif
|
|
+
|
|
+#if defined NC_NODIMSCALE_ATTACH
|
|
+ /* Disable attaching dimscales to variables (netcdf-c issue #2128) if available */
|
|
+ nc_mode |= NC_NODIMSCALE_ATTACH;
|
|
+#endif
|
|
+
|
|
if ((status = nc_create(path, nc_mode, &exoid)) != NC_NOERR) {
|
|
#if NC_HAS_HDF5
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: file create failed for %s", path);
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: file create failed for %s", canon_path);
|
|
#else
|
|
if (my_mode & EX_NETCDF4) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: file create failed for %s in NETCDF4 "
|
|
"mode.\n\tThis library does not support netcdf-4 files.",
|
|
- path);
|
|
+ canon_path);
|
|
}
|
|
else {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: file create failed for %s", path);
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: file create failed for %s", canon_path);
|
|
}
|
|
#endif
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- status = ex__populate_header(exoid, path, my_mode, is_parallel, comp_ws, io_ws);
|
|
+ status = exi_populate_header(exoid, canon_path, my_mode, is_parallel, comp_ws, io_ws);
|
|
if (status != EX_NOERR) {
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(exoid);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_create_group.c b/ThirdParty/exodusII/vtkexodusII/src/ex_create_group.c
|
|
index 953d2328f6..0adc0c3595 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_create_group.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_create_group.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -22,11 +22,11 @@ int ex_create_group(int parent_id, const char *group_name)
|
|
int status;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(parent_id, __func__) != EX_NOERR) {
|
|
+ if (exi_check_valid_file_id(parent_id, __func__) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if ((status = nc_redef(parent_id)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(parent_id, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", parent_id);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -39,7 +39,9 @@ int ex_create_group(int parent_id, const char *group_name)
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if ((status = ex__leavedef(parent_id, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(parent_id, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
EX_FUNC_LEAVE(exoid);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_create_par.c b/ThirdParty/exodusII/vtkexodusII/src/ex_create_par.c
|
|
index fadc832cc5..c39af763a4 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_create_par.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_create_par.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021, 2023, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -128,6 +128,7 @@ exoid = ex_create ("test.exo" \comment{filename path}
|
|
|
|
#include "exodusII_int.h"
|
|
#include <vtk_mpi.h>
|
|
+#include <stdlib.h>
|
|
|
|
/* NOTE: Do *not* call `ex_create_par_int()` directly. The public API
|
|
* function name is `ex_create_par()` which is a wrapper that calls
|
|
@@ -157,46 +158,97 @@ int ex_create_par_int(const char *path, int cmode, int *comp_ws, int *io_ws, MPI
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
#endif
|
|
|
|
+ if (!path || strlen(path) == 0) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Filename is not specified.");
|
|
+ ex_err(__func__, errmsg, EX_BADFILEMODE);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ char *canon_path = exi_canonicalize_filename(path);
|
|
+
|
|
/* Verify that this file is not already open for read or write...
|
|
In theory, should be ok for the file to be open multiple times
|
|
for read, but bad things can happen if being read and written
|
|
at the same time...
|
|
*/
|
|
- if (ex__check_multiple_open(path, EX_WRITE, __func__)) {
|
|
+ if (exi_check_multiple_open(canon_path, EX_WRITE, __func__)) {
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- nc_mode = ex__handle_mode(my_mode, is_parallel, run_version);
|
|
+ nc_mode = exi_handle_mode(my_mode, is_parallel, run_version);
|
|
+
|
|
+#if defined NC_NOATTCREORD
|
|
+ /* Disable attribute creation order tracking if available... */
|
|
+ if (my_mode & EX_NETCDF4) {
|
|
+ nc_mode |= NC_NOATTCREORD;
|
|
+ }
|
|
+#endif
|
|
+
|
|
+#if defined NC_NODIMSCALE_ATTACH
|
|
+ /* Disable attaching dimscales to variables (netcdf-c issue #2128) if available */
|
|
+ if (my_mode & EX_NETCDF4) {
|
|
+ nc_mode |= NC_NODIMSCALE_ATTACH;
|
|
+ }
|
|
+#endif
|
|
+
|
|
+#if NC_HAS_PNETCDF
|
|
+ bool i_created_info = false;
|
|
+ if (info == MPI_INFO_NULL) {
|
|
+ MPI_Info_create(&info);
|
|
+ i_created_info = true;
|
|
+ }
|
|
+ MPI_Info_set(info, "nc_header_align_size", "1048576");
|
|
+#endif
|
|
+ /* There is an issue on some versions of mpi that limit the length of the path to <250 characters
|
|
+ * Check for that here and use `path` if `canon_path` is >=250 characters...
|
|
+ */
|
|
+
|
|
+ if (strlen(canon_path) >= 250) {
|
|
+ status = nc_create_par(path, nc_mode, comm, info, &exoid);
|
|
+ }
|
|
+ else {
|
|
+ status = nc_create_par(canon_path, nc_mode, comm, info, &exoid);
|
|
+ }
|
|
+
|
|
+#if NC_HAS_PNETCDF
|
|
+ if (i_created_info) {
|
|
+ MPI_Info_free(&info);
|
|
+ }
|
|
+#endif
|
|
|
|
- if ((status = nc_create_par(path, nc_mode, comm, info, &exoid)) != NC_NOERR) {
|
|
+ if (status != NC_NOERR) {
|
|
if (my_mode & EX_NETCDF4) {
|
|
#if NC_HAS_PARALLEL4
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: file create failed for %s.", path);
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: file create failed for %s.", canon_path);
|
|
#else
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: file create failed for %s in NetCDF-4 "
|
|
"mode.\n\tThis library does not support parallel NetCDF-4 files (HDF5-based).",
|
|
- path);
|
|
+ canon_path);
|
|
#endif
|
|
}
|
|
else {
|
|
#if NC_HAS_PNETCDF
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: file create failed for %s", path);
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: file create failed for %s", canon_path);
|
|
#else
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: file create failed for %s in PnetCDF "
|
|
"mode.\n\tThis library does not provide PnetCDF support.",
|
|
- path);
|
|
+ canon_path);
|
|
#endif
|
|
}
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- status = ex__populate_header(exoid, path, my_mode, is_parallel, comp_ws, io_ws);
|
|
+ status = exi_populate_header(exoid, canon_path, my_mode, is_parallel, comp_ws, io_ws);
|
|
if (status != EX_NOERR) {
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(exoid);
|
|
}
|
|
#else
|
|
@@ -204,5 +256,5 @@ int ex_create_par_int(const char *path, int cmode, int *comp_ws, int *io_ws, MPI
|
|
* Prevent warning in some versions of ranlib(1) because the object
|
|
* file has no symbols.
|
|
*/
|
|
-const char exodus_unused_symbol_dummy_ex_create_par;
|
|
+extern const char exodus_unused_symbol_dummy_ex_create_par;
|
|
#endif
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_cvt_nodes_to_sides.c b/ThirdParty/exodusII/vtkexodusII/src/ex_cvt_nodes_to_sides.c
|
|
index 33692338f6..0d0a552c3e 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_cvt_nodes_to_sides.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_cvt_nodes_to_sides.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2023, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -8,6 +8,7 @@
|
|
|
|
#include "exodusII.h" // for ex_err, ex_block, etc
|
|
#include "exodusII_int.h" // for elem_blk_parm, EX_FATAL, etc
|
|
+#include <assert.h>
|
|
#include <stdbool.h>
|
|
|
|
static int64_t get_node(void_int *connect, size_t index, size_t int_size)
|
|
@@ -170,7 +171,6 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
void_int *side_sets_elem_list, void_int *side_sets_node_list,
|
|
void_int *side_sets_side_list)
|
|
{
|
|
- size_t i, j, k, n;
|
|
int num_side_sets, num_elem_blks;
|
|
int64_t tot_num_elem = 0, tot_num_ss_elem = 0, elem_num = 0, ndim;
|
|
void_int *elem_blk_ids = NULL;
|
|
@@ -178,7 +178,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
void_int *ss_elem_ndx = NULL;
|
|
void_int *ss_elem_node_ndx = NULL;
|
|
void_int *ss_parm_ndx = NULL;
|
|
- size_t elem_ctr, node_ctr, elem_num_pos;
|
|
+ int64_t elem_ctr, node_ctr, elem_num_pos;
|
|
int num_nodes_per_elem, num_node_per_side;
|
|
|
|
int *same_elem_type = NULL;
|
|
@@ -187,7 +187,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
int int_size;
|
|
int ids_size;
|
|
|
|
- struct ex__elem_blk_parm *elem_blk_parms = NULL;
|
|
+ struct exi_elem_blk_parm *elem_blk_parms = NULL;
|
|
|
|
int err_stat = EX_NOERR;
|
|
|
|
@@ -202,48 +202,10 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
is also the side number.
|
|
*/
|
|
|
|
- /* 1 2 3 4 node 1 */
|
|
- static int shell_table[2][8] = {
|
|
- {2, 4, 3, 1, 4, 2, 1, 3}, /* node 2 */
|
|
- {1, 2, 1, 2, 1, 2, 1, 2} /* side # */
|
|
- };
|
|
-
|
|
- /* 1 2 3 4 node 1 */
|
|
- static int shell_edge_table[2][8] = {
|
|
- {2, 4, 3, 1, 4, 2, 1, 3}, /* node 2 */
|
|
- {3, 6, 4, 3, 5, 4, 6, 5} /* side # */
|
|
- };
|
|
-
|
|
- /* 1 2 3 node 1 */
|
|
- static int trishell_table[2][6] = {
|
|
- {2, 3, 3, 1, 1, 2}, /* node 2 */
|
|
- {1, 2, 1, 2, 1, 2} /* side # */
|
|
- };
|
|
-
|
|
- /* 1 2 3 4 node 1 */
|
|
- static int tetra_table[2][12] = {
|
|
- {2, 3, 4, 1, 3, 4, 4, 1, 2, 1, 2, 3}, /* node 2 */
|
|
- {1, 4, 3, 4, 2, 1, 2, 3, 4, 1, 2, 3} /* side # */
|
|
- };
|
|
-
|
|
-#if 0
|
|
- static int wedge_table[2][18] = {
|
|
- /* 1 2 3 4 5 6 node 1 */
|
|
- {2,4,3, 5,1,3, 6,1,2, 1,6,5, 6,2,4, 4,3,5}, /* node 2 */
|
|
- {1,3,4, 1,4,2, 2,3,4, 1,3,5, 5,2,1, 5,3,2} /* side # */
|
|
- };
|
|
-#endif
|
|
-
|
|
- static int hex_table[2][24] = {
|
|
- /* 1 2 3 4 5 6 7 8 node 1 */
|
|
- {4, 2, 5, 1, 3, 6, 7, 4, 2, 3, 1, 8, 6, 8, 1, 5, 2, 7, 8, 6, 3, 7, 5, 4}, /* node 2 */
|
|
- {5, 1, 4, 5, 2, 1, 2, 3, 5, 5, 4, 3, 6, 4, 1, 1, 2, 6, 6, 2, 3, 3, 6, 4} /* side # */
|
|
- };
|
|
-
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -287,19 +249,17 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
distinguish between 2d TRIs and 3d TRIs */
|
|
ndim = ex_inquire_int(exoid, EX_INQ_DIM);
|
|
|
|
- int_size = sizeof(int);
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
- int_size = sizeof(int64_t);
|
|
- }
|
|
+ bool ints_64 = ex_int64_status(exoid) & EX_BULK_INT64_API;
|
|
+ int_size = ints_64 ? sizeof(int64_t) : sizeof(int);
|
|
|
|
/* First count up # of elements in the side sets*/
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
- for (i = 0; i < num_side_sets; i++) {
|
|
+ if (ints_64) {
|
|
+ for (int i = 0; i < num_side_sets; i++) {
|
|
tot_num_ss_elem += ((int64_t *)num_elem_per_set)[i];
|
|
}
|
|
}
|
|
else {
|
|
- for (i = 0; i < num_side_sets; i++) {
|
|
+ for (int i = 0; i < num_side_sets; i++) {
|
|
tot_num_ss_elem += ((int *)num_elem_per_set)[i];
|
|
}
|
|
}
|
|
@@ -318,23 +278,23 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
if (int_size == sizeof(int64_t)) {
|
|
/* Sort side set element list into index array - non-destructive */
|
|
int64_t *elems = (int64_t *)ss_elem_ndx;
|
|
- for (i = 0; i < tot_num_ss_elem; i++) {
|
|
+ for (int i = 0; i < tot_num_ss_elem; i++) {
|
|
elems[i] = i; /* init index array to current position */
|
|
}
|
|
- ex__iqsort64(side_sets_elem_list, elems, tot_num_ss_elem);
|
|
+ exi_iqsort64(side_sets_elem_list, elems, tot_num_ss_elem);
|
|
}
|
|
else {
|
|
/* Sort side set element list into index array - non-destructive */
|
|
int *elems = (int *)ss_elem_ndx;
|
|
- for (i = 0; i < tot_num_ss_elem; i++) {
|
|
+ for (int i = 0; i < tot_num_ss_elem; i++) {
|
|
elems[i] = i; /* init index array to current position */
|
|
}
|
|
- ex__iqsort(side_sets_elem_list, elems, tot_num_ss_elem);
|
|
+ exi_iqsort(side_sets_elem_list, elems, tot_num_ss_elem);
|
|
}
|
|
|
|
/* Allocate space for the element block ids */
|
|
ids_size = sizeof(int);
|
|
- if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
|
|
+ if (ints_64) {
|
|
ids_size = sizeof(int64_t);
|
|
}
|
|
|
|
@@ -354,7 +314,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
}
|
|
|
|
/* Allocate space for the element block params */
|
|
- if (!(elem_blk_parms = malloc(num_elem_blks * sizeof(struct ex__elem_blk_parm)))) {
|
|
+ if (!(elem_blk_parms = malloc(num_elem_blks * sizeof(struct exi_elem_blk_parm)))) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate space for element block params "
|
|
"for file id %d",
|
|
@@ -364,16 +324,16 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
goto cleanup;
|
|
}
|
|
elem_ctr = 0;
|
|
- for (i = 0; i < num_elem_blks; i++) {
|
|
+ for (int i = 0; i < num_elem_blks; i++) {
|
|
ex_entity_id id;
|
|
- if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
|
|
+ if (ints_64) {
|
|
id = ((int64_t *)elem_blk_ids)[i];
|
|
}
|
|
else {
|
|
id = ((int *)elem_blk_ids)[i];
|
|
}
|
|
|
|
- err_stat = ex__get_block_param(exoid, id, ndim, &elem_blk_parms[i]);
|
|
+ err_stat = exi_get_block_param(exoid, id, ndim, &elem_blk_parms[i]);
|
|
if (err_stat != EX_NOERR) {
|
|
goto cleanup;
|
|
}
|
|
@@ -420,11 +380,12 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
}
|
|
|
|
same_elem_type[0] = true;
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
+ if (ints_64) {
|
|
elem_ctr = ((int64_t *)num_elem_per_set)[0];
|
|
- for (i = 0, k = 0; i < tot_num_ss_elem; i++) {
|
|
+ for (int64_t i = 0, k = 0; i < tot_num_ss_elem; i++) {
|
|
int64_t elem = ((int64_t *)side_sets_elem_list)[i];
|
|
- for (j = 0; j < num_elem_blks; j++) {
|
|
+ int j = 0;
|
|
+ for (; j < num_elem_blks; j++) {
|
|
if (elem <= elem_blk_parms[j].elem_ctr) {
|
|
break;
|
|
}
|
|
@@ -459,10 +420,12 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
*/
|
|
node_ctr = 0;
|
|
elem_ctr = ((int64_t *)num_elem_per_set)[0];
|
|
- for (i = 0, k = 0; i < tot_num_ss_elem; i++) {
|
|
+ int i = 0;
|
|
+ for (int k = 0; i < tot_num_ss_elem; i++) {
|
|
int64_t elem = ((int64_t *)side_sets_elem_list)[i];
|
|
|
|
- for (j = 0; j < num_elem_blks; j++) {
|
|
+ int j = 0;
|
|
+ for (; j < num_elem_blks; j++) {
|
|
if (elem <= elem_blk_parms[j].elem_ctr) {
|
|
break;
|
|
}
|
|
@@ -499,10 +462,11 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
}
|
|
else {
|
|
elem_ctr = ((int *)num_elem_per_set)[0];
|
|
- for (i = 0, k = 0; i < tot_num_ss_elem; i++) {
|
|
+ for (int i = 0, k = 0; i < tot_num_ss_elem; i++) {
|
|
int elem = ((int *)side_sets_elem_list)[i];
|
|
|
|
- for (j = 0; j < num_elem_blks; j++) {
|
|
+ int j = 0;
|
|
+ for (; j < num_elem_blks; j++) {
|
|
if (elem <= elem_blk_parms[j].elem_ctr) {
|
|
break;
|
|
}
|
|
@@ -537,10 +501,12 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
*/
|
|
node_ctr = 0;
|
|
elem_ctr = ((int *)num_elem_per_set)[0];
|
|
- for (i = 0, k = 0; i < tot_num_ss_elem; i++) {
|
|
+ int i = 0;
|
|
+ for (int k = 0; i < tot_num_ss_elem; i++) {
|
|
int elem = ((int *)side_sets_elem_list)[i];
|
|
|
|
- for (j = 0; j < num_elem_blks; j++) {
|
|
+ int j = 0;
|
|
+ for (; j < num_elem_blks; j++) {
|
|
if (elem <= elem_blk_parms[j].elem_ctr) {
|
|
break;
|
|
}
|
|
@@ -580,7 +546,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
|
|
elem_ctr = 0;
|
|
|
|
- for (j = 0; j < tot_num_ss_elem; j++) {
|
|
+ for (int j = 0; j < tot_num_ss_elem; j++) {
|
|
int64_t elem;
|
|
int64_t idx;
|
|
int64_t ss_node0, ss_node1;
|
|
@@ -656,7 +622,8 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
|
|
num_nodes_per_elem = elem_blk_parms[p_ndx].num_nodes_per_elem;
|
|
|
|
- for (n = 0; n < num_nodes_per_elem; n++) {
|
|
+ int n = 0;
|
|
+ for (; n < num_nodes_per_elem; n++) {
|
|
/* find node in connectivity array that matches first node in side set */
|
|
if (((int_size == sizeof(int64_t)) &&
|
|
(ss_node0 == ((int64_t *)connect)[num_nodes_per_elem * (elem_num_pos) + n])) ||
|
|
@@ -679,6 +646,13 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
}
|
|
case EX_EL_TRISHELL: {
|
|
/* use table to find which node to compare to next */
|
|
+ /* 1 2 3 node 1 */
|
|
+ static const int trishell_table[2][6] = {
|
|
+ {2, 3, 3, 1, 1, 2}, /* node 2 */
|
|
+ {1, 2, 1, 2, 1, 2} /* side # */
|
|
+ };
|
|
+
|
|
+ assert(n < 3);
|
|
if (ss_node1 ==
|
|
get_node(connect,
|
|
num_nodes_per_elem * (elem_num_pos) + (trishell_table[0][2 * n] - 1),
|
|
@@ -693,13 +667,6 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
/* Assume only front or back, no edges... */
|
|
put_side(side_sets_side_list, idx, trishell_table[1][2 * n + 1], int_size);
|
|
}
|
|
- else if (ss_node1 == get_node(connect,
|
|
- num_nodes_per_elem * (elem_num_pos) +
|
|
- (trishell_table[0][2 * n + 2] - 1),
|
|
- int_size)) {
|
|
- /* Assume only front or back, no edges... */
|
|
- put_side(side_sets_side_list, idx, trishell_table[1][2 * n + 2], int_size);
|
|
- }
|
|
else {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to find TRIANGULAR SHELL element %" PRId64 ", node %" PRId64
|
|
@@ -713,8 +680,9 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
}
|
|
case EX_EL_SHELL: {
|
|
/* use table to find which node to compare to next */
|
|
+ assert(n < 4);
|
|
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
+ if (ints_64) {
|
|
num_node_per_side =
|
|
((int64_t *)ss_elem_node_ndx)[idx + 1] - ((int64_t *)ss_elem_node_ndx)[idx];
|
|
}
|
|
@@ -722,57 +690,81 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
num_node_per_side = ((int *)ss_elem_node_ndx)[idx + 1] - ((int *)ss_elem_node_ndx)[idx];
|
|
}
|
|
|
|
- if (ss_node1 ==
|
|
- get_node(connect, num_nodes_per_elem * (elem_num_pos) + (shell_table[0][2 * n] - 1),
|
|
- int_size)) {
|
|
- if (num_node_per_side >= 4) {
|
|
+ if (num_node_per_side >= 4) {
|
|
+ /* 1 2 3 4 node 1 */
|
|
+ static const int shell_table[2][8] = {
|
|
+ {2, 4, 3, 1, 4, 2, 1, 3}, /* node 2 */
|
|
+ {1, 2, 1, 2, 1, 2, 1, 2} /* side # */
|
|
+ };
|
|
+
|
|
+ /* Front or Back side of shell */
|
|
+ if (ss_node1 ==
|
|
+ get_node(connect, num_nodes_per_elem * (elem_num_pos) + (shell_table[0][2 * n] - 1),
|
|
+ int_size)) {
|
|
/* 4- or 8-node side (front or back face) */
|
|
put_side(side_sets_side_list, idx, shell_table[1][2 * n], int_size);
|
|
}
|
|
- else {
|
|
- /* 2- or 3-node side (edge of shell) */
|
|
- put_side(side_sets_side_list, idx, shell_edge_table[1][2 * n], int_size);
|
|
- }
|
|
- }
|
|
- else if (ss_node1 ==
|
|
- get_node(connect,
|
|
- num_nodes_per_elem * (elem_num_pos) + (shell_table[0][2 * n + 1] - 1),
|
|
- int_size)) {
|
|
- if (num_node_per_side >= 4) {
|
|
+ else if (ss_node1 ==
|
|
+ get_node(connect,
|
|
+ num_nodes_per_elem * (elem_num_pos) + (shell_table[0][2 * n + 1] - 1),
|
|
+ int_size)) {
|
|
/* 4- or 8-node side (front or back face) */
|
|
put_side(side_sets_side_list, idx, shell_table[1][2 * n + 1], int_size);
|
|
}
|
|
else {
|
|
- /* 2- or 3-node side (edge of shell) */
|
|
- put_side(side_sets_side_list, idx, shell_edge_table[1][2 * n + 1], int_size);
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to find SHELL element %" PRId64 ", node %" PRId64
|
|
+ " in connectivity array %" PRId64 " for file id %d",
|
|
+ elem_num + 1, ss_node1, elem_blk_parms[p_ndx].elem_blk_id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ err_stat = EX_FATAL;
|
|
+ goto cleanup;
|
|
}
|
|
}
|
|
- else if (ss_node1 ==
|
|
- get_node(connect,
|
|
- num_nodes_per_elem * (elem_num_pos) + (shell_table[0][2 * n + 2] - 1),
|
|
- int_size)) {
|
|
- if (num_node_per_side >= 4) {
|
|
- /* 4- or 8-node side (front or back face) */
|
|
- put_side(side_sets_side_list, idx, shell_table[1][2 * n + 2], int_size);
|
|
+ else {
|
|
+ /* Edge sides of shell */
|
|
+ /* 1 2 3 4 node 1 */
|
|
+ static const int shell_edge_table[2][8] = {
|
|
+ {2, 4, 3, 1, 4, 2, 1, 3}, /* node 2 */
|
|
+ {3, 6, 4, 3, 5, 4, 6, 5} /* side # */
|
|
+ };
|
|
+
|
|
+ if (ss_node1 ==
|
|
+ get_node(connect,
|
|
+ num_nodes_per_elem * (elem_num_pos) + (shell_edge_table[0][2 * n] - 1),
|
|
+ int_size)) {
|
|
+ /* 2- or 3-node side (edge of shell) */
|
|
+ put_side(side_sets_side_list, idx, shell_edge_table[1][2 * n], int_size);
|
|
}
|
|
- else {
|
|
+ else if (ss_node1 == get_node(connect,
|
|
+ num_nodes_per_elem * (elem_num_pos) +
|
|
+ (shell_edge_table[0][2 * n + 1] - 1),
|
|
+ int_size)) {
|
|
/* 2- or 3-node side (edge of shell) */
|
|
- put_side(side_sets_side_list, idx, shell_edge_table[1][2 * n + 2], int_size);
|
|
+ put_side(side_sets_side_list, idx, shell_edge_table[1][2 * n + 1], int_size);
|
|
+ }
|
|
+ else {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to find SHELL element %" PRId64 ", node %" PRId64
|
|
+ " in connectivity array %" PRId64 " for file id %d",
|
|
+ elem_num + 1, ss_node1, elem_blk_parms[p_ndx].elem_blk_id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ err_stat = EX_FATAL;
|
|
+ goto cleanup;
|
|
}
|
|
- }
|
|
- else {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to find SHELL element %" PRId64 ", node %" PRId64
|
|
- " in connectivity array %" PRId64 " for file id %d",
|
|
- elem_num + 1, ss_node1, elem_blk_parms[p_ndx].elem_blk_id, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- err_stat = EX_FATAL;
|
|
- goto cleanup;
|
|
}
|
|
break;
|
|
}
|
|
case EX_EL_HEX: {
|
|
/* use table to find which node to compare to next */
|
|
+ static const int hex_table[2][24] = {
|
|
+ /* 1 2 3 4 5 6 7 8 node 1
|
|
+ */
|
|
+ {4, 2, 5, 1, 3, 6, 7, 4, 2, 3, 1, 8, 6, 8, 1, 5, 2, 7, 8, 6, 3, 7, 5, 4}, /* node 2 */
|
|
+ {5, 1, 4, 5, 2, 1, 2, 3, 5, 5, 4, 3, 6, 4, 1, 1, 2, 6, 6, 2, 3, 3, 6, 4} /* side # */
|
|
+ };
|
|
+
|
|
+ assert(n < 8);
|
|
|
|
if (ss_node1 == get_node(connect,
|
|
num_nodes_per_elem * (elem_num_pos) + (hex_table[0][3 * n] - 1),
|
|
@@ -804,6 +796,13 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
}
|
|
case EX_EL_TETRA: {
|
|
/* use table to find which node to compare to next */
|
|
+ /* 1 2 3 4 node 1 */
|
|
+ static const int tetra_table[2][12] = {
|
|
+ {2, 3, 4, 1, 3, 4, 4, 1, 2, 1, 2, 3}, /* node 2 */
|
|
+ {1, 4, 3, 4, 2, 1, 2, 3, 4, 1, 2, 3} /* side # */
|
|
+ };
|
|
+
|
|
+ assert(n < 4);
|
|
|
|
if (ss_node1 ==
|
|
get_node(connect, num_nodes_per_elem * (elem_num_pos) + (tetra_table[0][3 * n] - 1),
|
|
@@ -847,6 +846,14 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
|
|
case EX_EL_WEDGE: {
|
|
/* NOTE: WEDGE elements in side set node lists are currently not
|
|
* supported */
|
|
+#if 0
|
|
+ static const int wedge_table[2][18] = {
|
|
+ /* 1 2 3 4 5 6 node 1 */
|
|
+ {2,4,3, 5,1,3, 6,1,2, 1,6,5, 6,2,4, 4,3,5}, /* node 2 */
|
|
+ {1,3,4, 1,4,2, 2,3,4, 1,3,5, 5,2,1, 5,3,2} /* side # */
|
|
+ };
|
|
+#endif
|
|
+
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: unsupported WEDGE element found in side set "
|
|
"node list in file id %d",
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_err.c b/ThirdParty/exodusII/vtkexodusII/src/ex_err.c
|
|
index f02083b162..ae8dd1d73c 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_err.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_err.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2025 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -9,42 +9,62 @@
|
|
#include "exodusII.h" // for exoptval, MAX_ERR_LENGTH, etc
|
|
#include "exodusII_int.h"
|
|
|
|
+#if defined(EXODUS_THREADSAFE)
|
|
+EX_errval_t *ex_errval = NULL;
|
|
+#define EX_PNAME ex_errval->last_pname
|
|
+#define EX_ERRMSG ex_errval->last_errmsg
|
|
+#define EX_ERR_NUM ex_errval->last_err_num
|
|
+#else
|
|
+int exerrval = 0; /* clear initial global error code value */
|
|
+
|
|
+static char last_pname[MAX_ERR_LENGTH + 1];
|
|
+static char last_errmsg[MAX_ERR_LENGTH + 1];
|
|
+static int last_err_num;
|
|
+
|
|
+#define EX_PNAME last_pname
|
|
+#define EX_ERRMSG last_errmsg
|
|
+#define EX_ERR_NUM last_err_num
|
|
+#endif
|
|
+
|
|
/*!
|
|
-\ingroup Utilities
|
|
-\fn{void ex_err_fn(exoid, const char *module_name, const char *message, int err_num)}
|
|
+ \ingroup Utilities
|
|
+ \undoc
|
|
+*/
|
|
+void exi_reset_error_status(void)
|
|
+{
|
|
+#if !defined(EXODUS_THREADSAFE)
|
|
+ exerrval = 0;
|
|
+ EX_ERR_NUM = 0;
|
|
+#endif
|
|
+}
|
|
|
|
-The function ex_err_fn(exoid, ) logs an error to stderr. It is intended
|
|
+/*!
|
|
+\ingroup Utilities
|
|
+The function ex_err(exoid, ...) logs an error to stderr. It is intended
|
|
to provide explanatory messages for error codes returned from other
|
|
exodus routines.
|
|
|
|
The passed in error codes and corresponding messages are listed in
|
|
-???. The programmer may supplement the error message printed
|
|
+\file{exodusII.h}. The programmer may supplement the error message printed
|
|
for standard errors by providing an error message. If the error code
|
|
is provided with no error message, the predefined message will be
|
|
-used. The error code EX_MSG is available to log application
|
|
+used. The error code \c EX_MSG is available to log application
|
|
specific messages.
|
|
|
|
-\param[in] module_name This is a string containing the name of the calling
|
|
-function.
|
|
-\param[in] message This is a string containing a message explaining the
|
|
-error
|
|
- or problem. If EX_VERBOSE (see ex_opts()) is true,
|
|
+\param[in] module_name This is a string containing the name of the calling function.
|
|
+\param[in] message This is a string containing a message explaining the error
|
|
+ or problem. If \c EX_VERBOSE (see ex_opts()) is true,
|
|
this message will be printed to stderr. Otherwise,
|
|
- nothing will be printed. Maximum length is \c
|
|
-MAX_ERR_LENGTH.
|
|
+ nothing will be printed. Maximum length is \c MAX_ERR_LENGTH.
|
|
|
|
\param[in] err_num This is an integer code identifying the error. exodus C
|
|
-functions
|
|
- place an error code value in exerrval, an external
|
|
-int. Negative
|
|
- values are considered fatal errors while positive
|
|
-values are
|
|
- warnings. There is a set of predefined values defined
|
|
-in
|
|
- \file{exodusII.h}. The predefined constant \c
|
|
-EX_PRTLASTMSG will
|
|
- cause the last error message to be output, regardless
|
|
-of the setting
|
|
+ functions place an error code value in exerrval,
|
|
+ an external integer. Negative values are considered
|
|
+ fatal errors while positive values are warnings.
|
|
+ There is a set of predefined values defined in
|
|
+ \file{exodusII.h}. The predefined constant
|
|
+ \c EX_PRTLASTMSG will cause the last error message
|
|
+ to be output, regardless of the setting
|
|
of the error reporting level (see ex_opts()).
|
|
|
|
The following is an example of the use of this function:
|
|
@@ -62,45 +82,11 @@ if (exoid = ex_open ("test.exo", EX_READ, &CPU_word_size,
|
|
&IO_word_size, &version)) {
|
|
errval = 999;
|
|
snprintf(errmsg, MAX_ERR_LENGTH,"ERROR: cannot open file test.exo");
|
|
- ex_err_fn(exoid, __func__, errmsg, errval);
|
|
+ ex_err(__func__, errmsg, errval);
|
|
}
|
|
~~~
|
|
|
|
*/
|
|
-
|
|
-#if defined(EXODUS_THREADSAFE)
|
|
-EX_errval_t *ex_errval = NULL;
|
|
-#define EX_PNAME ex_errval->last_pname
|
|
-#define EX_ERRMSG ex_errval->last_errmsg
|
|
-#define EX_ERR_NUM ex_errval->last_err_num
|
|
-#else
|
|
-int exerrval = 0; /* clear initial global error code value */
|
|
-
|
|
-static char last_pname[MAX_ERR_LENGTH + 1];
|
|
-static char last_errmsg[MAX_ERR_LENGTH + 1];
|
|
-static int last_err_num;
|
|
-
|
|
-#define EX_PNAME last_pname
|
|
-#define EX_ERRMSG last_errmsg
|
|
-#define EX_ERR_NUM last_err_num
|
|
-#endif
|
|
-
|
|
-/*!
|
|
- \ingroup Utilities
|
|
- \undoc
|
|
-*/
|
|
-void ex__reset_error_status()
|
|
-{
|
|
-#if !defined(EXODUS_THREADSAFE)
|
|
- exerrval = 0;
|
|
- EX_ERR_NUM = 0;
|
|
-#endif
|
|
-}
|
|
-
|
|
-/*!
|
|
- \ingroup Utilities
|
|
- \undoc
|
|
-*/
|
|
void ex_err(const char *module_name, const char *message, int err_num)
|
|
{
|
|
EX_FUNC_ENTER_INT();
|
|
@@ -120,9 +106,7 @@ void ex_err(const char *module_name, const char *message, int err_num)
|
|
if (err_num == EX_PRTLASTMSG) {
|
|
fprintf(stderr, "\n[%s] %s\n", EX_PNAME, EX_ERRMSG);
|
|
fprintf(stderr, " exerrval = %d\n", EX_ERR_NUM);
|
|
- if (EX_ERR_NUM < 0) {
|
|
- fprintf(stderr, "\t%s\n", ex_strerror(EX_ERR_NUM));
|
|
- }
|
|
+ fprintf(stderr, "\t%s\n", ex_strerror(EX_ERR_NUM));
|
|
EX_FUNC_VOID();
|
|
}
|
|
|
|
@@ -142,9 +126,7 @@ void ex_err(const char *module_name, const char *message, int err_num)
|
|
|
|
else if (exoptval & EX_VERBOSE) { /* check see if we really want to hear this */
|
|
fprintf(stderr, "\nExodus Library Warning/Error: [%s]\n\t%s\n", module_name, message);
|
|
- if (err_num < 0) {
|
|
- fprintf(stderr, "\t%s\n", ex_strerror(err_num));
|
|
- }
|
|
+ fprintf(stderr, "\t%s\n", ex_strerror(err_num));
|
|
}
|
|
fflush(stderr);
|
|
|
|
@@ -157,8 +139,55 @@ void ex_err(const char *module_name, const char *message, int err_num)
|
|
}
|
|
|
|
/*!
|
|
- \ingroup Utilities
|
|
- \undoc
|
|
+\ingroup Utilities
|
|
+The function ex_err_fn() logs an error to stderr. It is intended
|
|
+to provide explanatory messages for error codes returned from other
|
|
+exodus routines. The main difference between ex_err_fn() and ex_err() is
|
|
+that ex_err_fn() will print the name of the exodus file that the error occurred on.
|
|
+
|
|
+The passed in error codes and corresponding messages are listed in
|
|
+\file{exodusII.h}. The programmer may supplement the error message printed
|
|
+for standard errors by providing an error message. If the error code
|
|
+is provided with no error message, the predefined message will be
|
|
+used. The error code \c EX_MSG is available to log application
|
|
+specific messages.
|
|
+
|
|
+\param[in] exoid exodus file ID returned from a previous call to ex_create() or ex_open().
|
|
+\param[in] module_name This is a string containing the name of the calling function.
|
|
+\param[in] message This is a string containing a message explaining the error
|
|
+ or problem. If \c EX_VERBOSE (see ex_opts()) is true,
|
|
+ this message will be printed to stderr. Otherwise,
|
|
+ nothing will be printed. Maximum length is \c MAX_ERR_LENGTH.
|
|
+
|
|
+\param[in] err_num This is an integer code identifying the error. exodus C
|
|
+ functions place an error code value in exerrval,
|
|
+ an external integer. Negative values are considered
|
|
+ fatal errors while positive values are warnings.
|
|
+ There is a set of predefined values defined in
|
|
+ \file{exodusII.h}. The predefined constant
|
|
+ \c EX_PRTLASTMSG will cause the last error message
|
|
+ to be output, regardless of the setting
|
|
+ of the error reporting level (see ex_opts()).
|
|
+
|
|
+The following is an example of the use of this function:
|
|
+
|
|
+~~~{.c}
|
|
+int exoid, CPU_word_size, IO_word_size, errval;
|
|
+float version;
|
|
+char errmsg[MAX_ERR_LENGTH];
|
|
+
|
|
+CPU_word_size = sizeof(float);
|
|
+IO_word_size = 0;
|
|
+
|
|
+\comment{open exodus file}
|
|
+if (exoid = ex_open ("test.exo", EX_READ, &CPU_word_size,
|
|
+ &IO_word_size, &version)) {
|
|
+ errval = 999;
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,"ERROR: cannot open file test.exo");
|
|
+ ex_err_fn(exoid, __func__, errmsg, errval);
|
|
+}
|
|
+~~~
|
|
+
|
|
*/
|
|
void ex_err_fn(int exoid, const char *module_name, const char *message, int err_num)
|
|
{
|
|
@@ -179,7 +208,7 @@ void ex_err_fn(int exoid, const char *module_name, const char *message, int err_
|
|
if (err_num == EX_PRTLASTMSG) {
|
|
fprintf(stderr, "\n[%s] %s\n", EX_PNAME, EX_ERRMSG);
|
|
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
if (file) {
|
|
size_t pathlen = 0;
|
|
nc_inq_path(exoid, &pathlen, NULL);
|
|
@@ -195,10 +224,8 @@ void ex_err_fn(int exoid, const char *module_name, const char *message, int err_
|
|
}
|
|
|
|
fprintf(stderr, " exerrval = %d\n", EX_ERR_NUM);
|
|
-
|
|
- if (EX_ERR_NUM < 0) {
|
|
- fprintf(stderr, "\t%s\n", ex_strerror(EX_ERR_NUM));
|
|
- }
|
|
+ fprintf(stderr, "\t%s\n", ex_strerror(EX_ERR_NUM));
|
|
+ fflush(stderr);
|
|
EX_FUNC_VOID();
|
|
}
|
|
|
|
@@ -213,12 +240,13 @@ void ex_err_fn(int exoid, const char *module_name, const char *message, int err_
|
|
if (err_num == EX_NULLENTITY) {
|
|
if (exoptval & EX_NULLVERBOSE) {
|
|
fprintf(stderr, "\nExodus Library Warning: [%s]\n\t%s\n", module_name, message);
|
|
+ fflush(stderr);
|
|
}
|
|
}
|
|
|
|
else if (exoptval & EX_VERBOSE) { /* check see if we really want to hear this */
|
|
- char * path = NULL;
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ char *path = NULL;
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
if (file) {
|
|
size_t pathlen = 0;
|
|
nc_inq_path(exoid, &pathlen, NULL);
|
|
@@ -235,11 +263,9 @@ void ex_err_fn(int exoid, const char *module_name, const char *message, int err_
|
|
else {
|
|
fprintf(stderr, "\nExodus Library Warning/Error: [%s]\n\t%s\n", module_name, message);
|
|
}
|
|
- if (err_num < 0) {
|
|
- fprintf(stderr, "\t%s\n", ex_strerror(err_num));
|
|
- }
|
|
+ fprintf(stderr, "\t%s\n", ex_strerror(err_num));
|
|
+ fflush(stderr);
|
|
}
|
|
- fflush(stderr);
|
|
|
|
/* with netCDF 3.4, (fatal) system error codes are > 0;
|
|
so all EXODUS fatal error codes are > 0 */
|
|
@@ -309,16 +335,20 @@ const char *ex_strerror(int err_num)
|
|
case EX_MEMFAIL: return "Memory allocation failure";
|
|
case EX_BADFILEMODE: return "Bad file mode -- cannot specify both EX_READ and EX_WRITE";
|
|
case EX_BADFILEID: return "Bad file id. Could not find exodus file associated with file id.";
|
|
- case EX_WRONGFILETYPE: return "Integer sizes must match for input and output file in ex_copy.";
|
|
+ case EX_WRONGFILETYPE:
|
|
+ return "File does not exist or is not of a supported type (netcdf3, netcdf4, netcdf5).";
|
|
case EX_LOOKUPFAIL:
|
|
return "Id lookup failed for specified entity type. Could not find entity with specified id.";
|
|
+ case EX_BADFILENAME: return "Empty or null filename specified.";
|
|
+ case EX_DUPLICATEID: return "Duplicate entity id found.";
|
|
+ case EX_DUPLICATEOPEN: return "File is open multiple times for both read and write.";
|
|
case EX_BADPARAM: return "Bad parameter.";
|
|
case -EX_BADPARAM: return "Bad parameter.";
|
|
case EX_INTERNAL: return "Internal logic error in exodus library.";
|
|
case EX_NOTROOTID: return "File id is not the root id; it is a subgroup id.";
|
|
case EX_NULLENTITY: return "Null entity found.";
|
|
- case EX_DUPLICATEID: return "Duplicate entity id found.";
|
|
- case EX_DUPLICATEOPEN: return "File is open multiple times for both read and write.";
|
|
+ case EX_NOTFOUND: return "Could not find requested variable on database.";
|
|
+ case EX_INTSIZEMISMATCH: return "Integer sizes must match for input and output file in ex_copy.";
|
|
case EX_MSG: return "Message printed; no error implied.";
|
|
default: return nc_strerror(err_num);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_field_utils.c b/ThirdParty/exodusII/vtkexodusII/src/ex_field_utils.c
|
|
new file mode 100644
|
|
index 0000000000..2d6bb345d4
|
|
--- /dev/null
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_field_utils.c
|
|
@@ -0,0 +1,559 @@
|
|
+/*
|
|
+ * Copyright(C) 1999-2024 National Technology & Engineering Solutions
|
|
+ * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
+ * NTESS, the U.S. Government retains certain rights in this software.
|
|
+ *
|
|
+ * See packages/seacas/LICENSE for details
|
|
+ */
|
|
+
|
|
+#include "exodusII.h" // for ex_err, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, etc
|
|
+#include <assert.h>
|
|
+#define _GNU_SOURCE
|
|
+#include <string.h>
|
|
+
|
|
+#define SIZE(X) sizeof(X) / sizeof(X[0])
|
|
+
|
|
+static char *my_strsep(char **stringp, const char *delim)
|
|
+{
|
|
+ char *rv = *stringp;
|
|
+ if (rv) {
|
|
+ *stringp += strcspn(*stringp, delim);
|
|
+ if (**stringp)
|
|
+ *(*stringp)++ = '\0';
|
|
+ else
|
|
+ *stringp = NULL;
|
|
+ }
|
|
+ return rv;
|
|
+}
|
|
+static size_t my_strlcat(char *dst, const char *src, size_t maxlen)
|
|
+{
|
|
+ const size_t srclen = strlen(src);
|
|
+ const size_t dstlen = strlen(dst);
|
|
+ if (dstlen == maxlen)
|
|
+ return maxlen + srclen;
|
|
+ if (srclen < maxlen - dstlen) {
|
|
+ memcpy(dst + dstlen, src, srclen + 1);
|
|
+ }
|
|
+ else {
|
|
+ memcpy(dst + dstlen, src, maxlen - 1);
|
|
+ dst[dstlen + maxlen - 1] = '\0';
|
|
+ }
|
|
+ return dstlen + srclen;
|
|
+}
|
|
+
|
|
+static int number_width(size_t number)
|
|
+{
|
|
+ /* Could use `(int)floor(log10(number)) + 1`, but that requires math library... */
|
|
+ if (number == 0) {
|
|
+ return 1;
|
|
+ }
|
|
+ int count = 0;
|
|
+ // Iterate till n has digits remaining
|
|
+ while (number != 0) {
|
|
+ number /= 10;
|
|
+ ++count;
|
|
+ }
|
|
+ return count;
|
|
+}
|
|
+
|
|
+static void verify_valid_component(int component, size_t cardinality, size_t suffix_size)
|
|
+{
|
|
+ assert(cardinality == suffix_size);
|
|
+ assert(component - 1 < (int)suffix_size);
|
|
+}
|
|
+
|
|
+const char *ex_component_field_name(ex_field *field, int component[EX_MAX_FIELD_NESTING])
|
|
+{
|
|
+ // NOTE: This is not thread-safe. Return value is pointer to static `field_name`
|
|
+ // For thread-safety, it is up to calling code.
|
|
+
|
|
+ // Return the name of the field corresponding to the specified 1-based component(s)
|
|
+ static char field_name[EX_MAX_NAME + 1];
|
|
+ const char *suffices[EX_MAX_FIELD_NESTING] = {NULL};
|
|
+ for (int i = 0; i < field->nesting; i++) {
|
|
+ suffices[i] = ex_field_component_suffix(field, i, component[i]);
|
|
+ }
|
|
+
|
|
+ // Build up name incrementally which makes it easier to handle an empty component_separator...
|
|
+ snprintf(field_name, EX_MAX_NAME + 1, "%s", field->name);
|
|
+
|
|
+ for (int i = 0; i < field->nesting; i++) {
|
|
+ if (field->component_separator[i]) {
|
|
+ size_t fnl = strlen(field_name);
|
|
+ field_name[fnl] = field->component_separator[i];
|
|
+ field_name[fnl + 1] = '\0';
|
|
+ }
|
|
+ if (suffices[i] != NULL) {
|
|
+ my_strlcat(field_name, suffices[i], EX_MAX_NAME);
|
|
+ }
|
|
+ }
|
|
+ return field_name;
|
|
+}
|
|
+
|
|
+int ex_initialize_basis_struct(ex_basis *basis, size_t num_basis, int mode)
|
|
+{
|
|
+ // Mode - 0 -- initialize struct to empty
|
|
+ // Mode > 0 -- allocate memory for dynamically sized fields.
|
|
+ // Mode < 0 -- deallocate memory for dynamically sized fields.
|
|
+ if (mode > 0) {
|
|
+ for (size_t i = 0; i < num_basis; i++) {
|
|
+ basis[i].subc_dim = calloc(basis[i].cardinality, sizeof(int));
|
|
+ basis[i].subc_ordinal = calloc(basis[i].cardinality, sizeof(int));
|
|
+ basis[i].subc_dof_ordinal = calloc(basis[i].cardinality, sizeof(int));
|
|
+ basis[i].subc_num_dof = calloc(basis[i].cardinality, sizeof(int));
|
|
+ basis[i].xi = calloc(basis[i].cardinality, sizeof(double));
|
|
+ basis[i].eta = calloc(basis[i].cardinality, sizeof(double));
|
|
+ basis[i].zeta = calloc(basis[i].cardinality, sizeof(double));
|
|
+ if (basis[i].subc_dim == NULL || basis[i].subc_ordinal == NULL ||
|
|
+ basis[i].subc_dof_ordinal == NULL || basis[i].subc_num_dof == NULL ||
|
|
+ basis[i].xi == NULL || basis[i].eta == NULL || basis[i].zeta == NULL) {
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ if (mode < 0) {
|
|
+ for (size_t i = 0; i < num_basis; i++) {
|
|
+ free(basis[i].subc_dim);
|
|
+ free(basis[i].subc_ordinal);
|
|
+ free(basis[i].subc_dof_ordinal);
|
|
+ free(basis[i].subc_num_dof);
|
|
+ free(basis[i].xi);
|
|
+ free(basis[i].eta);
|
|
+ free(basis[i].zeta);
|
|
+ }
|
|
+ }
|
|
+ /* Fall through if `cardinality < 0` */
|
|
+ if (mode <= 0) {
|
|
+ for (size_t i = 0; i < num_basis; i++) {
|
|
+ basis[i].name[0] = '\0';
|
|
+ basis[i].cardinality = 0;
|
|
+ basis[i].subc_dim = NULL;
|
|
+ basis[i].subc_ordinal = NULL;
|
|
+ basis[i].subc_dof_ordinal = NULL;
|
|
+ basis[i].subc_num_dof = NULL;
|
|
+ basis[i].xi = NULL;
|
|
+ basis[i].eta = NULL;
|
|
+ basis[i].zeta = NULL;
|
|
+ }
|
|
+ }
|
|
+ return EX_NOERR;
|
|
+}
|
|
+
|
|
+int ex_initialize_quadrature_struct(ex_quadrature *quad, size_t num_quad, int mode)
|
|
+{
|
|
+ // Mode - 0 -- initialize struct to empty
|
|
+ // Mode > 0 -- allocate memory for dynamically sized fields.
|
|
+ // Mode < 0 -- deallocate memory for dynamically sized fields.
|
|
+ if (mode > 0) {
|
|
+ for (size_t i = 0; i < num_quad; i++) {
|
|
+ quad[i].xi = calloc(quad[i].cardinality, sizeof(double));
|
|
+ quad[i].eta = calloc(quad[i].cardinality, sizeof(double));
|
|
+ quad[i].zeta = calloc(quad[i].cardinality, sizeof(double));
|
|
+ quad[i].weight = calloc(quad[i].cardinality, sizeof(double));
|
|
+ if (quad[i].xi == NULL || quad[i].eta == NULL || quad[i].zeta == NULL ||
|
|
+ quad[i].weight == NULL) {
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ if (mode < 0) {
|
|
+ for (size_t i = 0; i < num_quad; i++) {
|
|
+ free(quad[i].xi);
|
|
+ free(quad[i].eta);
|
|
+ free(quad[i].zeta);
|
|
+ free(quad[i].weight);
|
|
+ }
|
|
+ }
|
|
+ if (mode <= 0) {
|
|
+ for (size_t i = 0; i < num_quad; i++) {
|
|
+ quad[i].name[0] = '\0';
|
|
+ quad[i].cardinality = 0;
|
|
+ quad[i].xi = NULL;
|
|
+ quad[i].eta = NULL;
|
|
+ quad[i].zeta = NULL;
|
|
+ quad[i].weight = NULL;
|
|
+ }
|
|
+ }
|
|
+ return EX_NOERR;
|
|
+}
|
|
+
|
|
+const char *ex_field_component_suffix(ex_field *field, int nest_level, int component)
|
|
+{
|
|
+#define X "X"
|
|
+#define Y "Y"
|
|
+#define Z "Z"
|
|
+#define Q "Q"
|
|
+#define S "S"
|
|
+
|
|
+#define XX "XX"
|
|
+#define YY "YY"
|
|
+#define ZZ "ZZ"
|
|
+#define XY "XY"
|
|
+#define YZ "YZ"
|
|
+#define ZX "ZC"
|
|
+#define YX "YX"
|
|
+#define ZY "ZY"
|
|
+#define XZ "XZ"
|
|
+
|
|
+ switch (field->type[nest_level]) {
|
|
+ case EX_VECTOR_1D: {
|
|
+ static const char *suffix[] = {X};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_VECTOR_2D: {
|
|
+ static const char *suffix[] = {X, Y};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_VECTOR_3D: {
|
|
+ static const char *suffix[] = {X, Y, Z};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+
|
|
+ case EX_QUATERNION_2D: {
|
|
+ static const char *suffix[] = {S, Q};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_QUATERNION_3D: {
|
|
+ static const char *suffix[] = {X, Y, Z, Q};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+
|
|
+ case EX_FULL_TENSOR_12: {
|
|
+ static const char *suffix[] = {XX, XY, YX};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_FULL_TENSOR_16: {
|
|
+ static const char *suffix[] = {XX, XY, YZ, ZX, YX, ZY, XZ};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_FULL_TENSOR_22: {
|
|
+ static const char *suffix[] = {XX, YY, XY, YX};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_FULL_TENSOR_32: {
|
|
+ static const char *suffix[] = {XX, YY, ZZ, XY, YX};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_FULL_TENSOR_36: {
|
|
+ static const char *suffix[] = {XX, YY, ZZ, XY, YZ, ZX, YX, ZY, XZ};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+
|
|
+ case EX_SYM_TENSOR_10: {
|
|
+ static const char *suffix[] = {XX};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_SYM_TENSOR_11: {
|
|
+ static const char *suffix[] = {XX, XY};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_SYM_TENSOR_13: {
|
|
+ static const char *suffix[] = {XX, XY, YZ, ZX};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_SYM_TENSOR_21: {
|
|
+ static const char *suffix[] = {XX, YY, XY};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_SYM_TENSOR_31: {
|
|
+ static const char *suffix[] = {XX, YY, ZZ, XY};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_SYM_TENSOR_33: {
|
|
+ static const char *suffix[] = {XX, YY, ZZ, XY, YZ, ZX};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+
|
|
+ case EX_ASYM_TENSOR_01: {
|
|
+ static const char *suffix[] = {XY};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_ASYM_TENSOR_02: {
|
|
+ static const char *suffix[] = {XY, YZ};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_ASYM_TENSOR_03: {
|
|
+ static const char *suffix[] = {XY, YZ, ZX};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+
|
|
+ case EX_MATRIX_2X2: {
|
|
+ static const char *suffix[] = {"11", "12", "21", "22"};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+ case EX_MATRIX_3X3: {
|
|
+ static const char *suffix[] = {"11", "12", "13", "21", "22", "23", "31", "32", "33"};
|
|
+ verify_valid_component(component, ex_field_cardinality(field->type[nest_level]), SIZE(suffix));
|
|
+ return suffix[component - 1];
|
|
+ }
|
|
+
|
|
+ case EX_FIELD_TYPE_USER_DEFINED: {
|
|
+ if (field->suffices[0] != '\0') {
|
|
+ // `user_suffices` is a comma-separated string. Assume component is valid.
|
|
+ char *string = strdup(field->suffices);
|
|
+ char *tofree = string;
|
|
+ char *token = my_strsep(&string, ",");
|
|
+ for (int i = 0; i < component - 1; i++) {
|
|
+ token = my_strsep(&string, ",");
|
|
+ }
|
|
+ if (token != NULL) {
|
|
+ static char user_suffix[32 + 1];
|
|
+ ex_copy_string(user_suffix, token, 32);
|
|
+ free(tofree);
|
|
+ return user_suffix;
|
|
+ }
|
|
+ free(tofree);
|
|
+ }
|
|
+ return "invalid";
|
|
+ }
|
|
+ case EX_FIELD_TYPE_SEQUENCE: {
|
|
+ // Suffices are just 1...#components.
|
|
+ static char user_suffix[32];
|
|
+ static char format[8];
|
|
+ int width = number_width(field->cardinality[nest_level]);
|
|
+ snprintf(format, 8, "%c%d%dd", '%', 0, width);
|
|
+ snprintf(user_suffix, 32, format, component);
|
|
+ return user_suffix;
|
|
+ }
|
|
+
|
|
+ case EX_BASIS:
|
|
+ case EX_QUADRATURE: {
|
|
+ // Suffices are just 0...#components-1.
|
|
+ static char user_suffix[32];
|
|
+ static char format[8];
|
|
+ int width = number_width(field->cardinality[nest_level]);
|
|
+ snprintf(format, 8, "%c%d%dd", '%', 0, width);
|
|
+ snprintf(user_suffix, 32, format, component - 1);
|
|
+ return user_suffix;
|
|
+ }
|
|
+
|
|
+ case EX_SCALAR:
|
|
+ case EX_FIELD_TYPE_INVALID:
|
|
+ default: return "invalid";
|
|
+ }
|
|
+}
|
|
+
|
|
+int ex_field_cardinality(const ex_field_type field_type)
|
|
+{
|
|
+ switch (field_type) {
|
|
+ case EX_FIELD_TYPE_USER_DEFINED: return -1;
|
|
+ case EX_FIELD_TYPE_SEQUENCE: return -1;
|
|
+ case EX_QUADRATURE: return -1;
|
|
+ case EX_BASIS: return -1;
|
|
+ case EX_SCALAR: return 1;
|
|
+
|
|
+ case EX_VECTOR_1D: return 1;
|
|
+ case EX_VECTOR_2D: return 2;
|
|
+ case EX_VECTOR_3D: return 3;
|
|
+
|
|
+ case EX_QUATERNION_2D: return 2;
|
|
+ case EX_QUATERNION_3D: return 4;
|
|
+
|
|
+ case EX_FULL_TENSOR_12: return 3;
|
|
+ case EX_FULL_TENSOR_16: return 7;
|
|
+ case EX_FULL_TENSOR_22: return 4;
|
|
+ case EX_FULL_TENSOR_32: return 5;
|
|
+ case EX_FULL_TENSOR_36: return 9;
|
|
+
|
|
+ case EX_SYM_TENSOR_10: return 1;
|
|
+ case EX_SYM_TENSOR_11: return 2;
|
|
+ case EX_SYM_TENSOR_13: return 4;
|
|
+ case EX_SYM_TENSOR_21: return 3;
|
|
+ case EX_SYM_TENSOR_31: return 4;
|
|
+ case EX_SYM_TENSOR_33: return 6;
|
|
+
|
|
+ case EX_ASYM_TENSOR_01: return 1;
|
|
+ case EX_ASYM_TENSOR_02: return 2;
|
|
+ case EX_ASYM_TENSOR_03: return 3;
|
|
+
|
|
+ case EX_MATRIX_2X2: return 4;
|
|
+ case EX_MATRIX_3X3: return 9;
|
|
+
|
|
+ case EX_FIELD_TYPE_INVALID: return -1;
|
|
+ }
|
|
+ return -1;
|
|
+}
|
|
+
|
|
+/** The reverse of `field_type_enum_to_string` Used to convert the
|
|
+ * string into a `field_type` enum. The string is parsed from the
|
|
+ * database as a user-readable attribute. For example, EX_VECTOR_2D
|
|
+ * is on the database instead of a raw number 2
|
|
+ */
|
|
+ex_field_type ex_string_to_field_type_enum(const char *field_name)
|
|
+{
|
|
+ if (strcmp(field_name, "EX_FIELD_TYPE_USER_DEFINED") == 0) {
|
|
+ return EX_FIELD_TYPE_USER_DEFINED;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_FIELD_TYPE_SEQUENCE") == 0) {
|
|
+ return EX_FIELD_TYPE_SEQUENCE;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_BASIS") == 0) {
|
|
+ return EX_BASIS;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_QUADRATURE") == 0) {
|
|
+ return EX_QUADRATURE;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_SCALAR") == 0) {
|
|
+ return EX_SCALAR;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_VECTOR_1D") == 0) {
|
|
+ return EX_VECTOR_1D;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_VECTOR_2D") == 0) {
|
|
+ return EX_VECTOR_2D;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_VECTOR_3D") == 0) {
|
|
+ return EX_VECTOR_3D;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_QUATERNION_2D") == 0) {
|
|
+ return EX_QUATERNION_2D;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_QUATERNION_3D") == 0) {
|
|
+ return EX_QUATERNION_3D;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_FULL_TENSOR_36") == 0) {
|
|
+ return EX_FULL_TENSOR_36;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_FULL_TENSOR_32") == 0) {
|
|
+ return EX_FULL_TENSOR_32;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_FULL_TENSOR_22") == 0) {
|
|
+ return EX_FULL_TENSOR_22;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_FULL_TENSOR_16") == 0) {
|
|
+ return EX_FULL_TENSOR_16;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_FULL_TENSOR_12") == 0) {
|
|
+ return EX_FULL_TENSOR_12;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_SYMMETRIC_TENSOR_33") == 0) {
|
|
+ return EX_SYM_TENSOR_33;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_SYMMETRIC_TENSOR_31") == 0) {
|
|
+ return EX_SYM_TENSOR_31;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_SYMMETRIC_TENSOR_21") == 0) {
|
|
+ return EX_SYM_TENSOR_21;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_SYMMETRIC_TENSOR_13") == 0) {
|
|
+ return EX_SYM_TENSOR_13;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_SYMMETRIC_TENSOR_11") == 0) {
|
|
+ return EX_SYM_TENSOR_11;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_SYMMETRIC_TENSOR_10") == 0) {
|
|
+ return EX_SYM_TENSOR_10;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_ASYMMETRIC_TENSOR_03") == 0) {
|
|
+ return EX_ASYM_TENSOR_03;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_ASYMMETRIC_TENSOR_02") == 0) {
|
|
+ return EX_ASYM_TENSOR_02;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_ASYMMETRIC_TENSOR_01") == 0) {
|
|
+ return EX_ASYM_TENSOR_01;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_MATRIX_2X2") == 0) {
|
|
+ return EX_MATRIX_2X2;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_MATRIX_3X3") == 0) {
|
|
+ return EX_MATRIX_3X3;
|
|
+ }
|
|
+ if (strcmp(field_name, "EX_FIELD_TYPE_INVALID") == 0) {
|
|
+ return EX_FIELD_TYPE_INVALID;
|
|
+ }
|
|
+ return EX_FIELD_TYPE_INVALID;
|
|
+}
|
|
+
|
|
+/** Used to convert a `field_type` enum to a string so it can be
|
|
+ * written to the database as a user-readable attribute. For
|
|
+ * example, EX_VECTOR_2D would appear instead of a raw number 2
|
|
+ */
|
|
+const char *ex_field_type_enum_to_string(const ex_field_type field_type)
|
|
+{
|
|
+ switch (field_type) {
|
|
+ case EX_FIELD_TYPE_USER_DEFINED: return "EX_FIELD_TYPE_USER_DEFINED";
|
|
+ case EX_FIELD_TYPE_SEQUENCE: return "EX_FIELD_TYPE_SEQUENCE";
|
|
+ case EX_BASIS: return "EX_BASIS";
|
|
+ case EX_QUADRATURE: return "EX_QUADRATURE";
|
|
+ case EX_SCALAR: return "EX_SCALAR";
|
|
+ case EX_VECTOR_1D: return "EX_VECTOR_1D";
|
|
+ case EX_VECTOR_2D: return "EX_VECTOR_2D";
|
|
+ case EX_VECTOR_3D: return "EX_VECTOR_3D";
|
|
+ case EX_QUATERNION_2D: return "EX_QUATERNION_2D";
|
|
+ case EX_QUATERNION_3D: return "EX_QUATERNION_3D";
|
|
+ case EX_FULL_TENSOR_36: return "EX_FULL_TENSOR_36";
|
|
+ case EX_FULL_TENSOR_32: return "EX_FULL_TENSOR_32";
|
|
+ case EX_FULL_TENSOR_22: return "EX_FULL_TENSOR_22";
|
|
+ case EX_FULL_TENSOR_16: return "EX_FULL_TENSOR_16";
|
|
+ case EX_FULL_TENSOR_12: return "EX_FULL_TENSOR_12";
|
|
+ case EX_SYM_TENSOR_33: return "EX_SYMMETRIC_TENSOR_33";
|
|
+ case EX_SYM_TENSOR_31: return "EX_SYMMETRIC_TENSOR_31";
|
|
+ case EX_SYM_TENSOR_21: return "EX_SYMMETRIC_TENSOR_21";
|
|
+ case EX_SYM_TENSOR_13: return "EX_SYMMETRIC_TENSOR_13";
|
|
+ case EX_SYM_TENSOR_11: return "EX_SYMMETRIC_TENSOR_11";
|
|
+ case EX_SYM_TENSOR_10: return "EX_SYMMETRIC_TENSOR_10";
|
|
+ case EX_ASYM_TENSOR_03: return "EX_ASYMMETRIC_TENSOR_03";
|
|
+ case EX_ASYM_TENSOR_02: return "EX_ASYMMETRIC_TENSOR_02";
|
|
+ case EX_ASYM_TENSOR_01: return "EX_ASYMMETRIC_TENSOR_01";
|
|
+ case EX_MATRIX_2X2: return "EX_MATRIX_2X2";
|
|
+ case EX_MATRIX_3X3: return "EX_MATRIX_3X3";
|
|
+ case EX_FIELD_TYPE_INVALID: return "EX_FIELD_TYPE_INVALID";
|
|
+ }
|
|
+ return "EX_FIELD_TYPE_INVALID";
|
|
+}
|
|
+
|
|
+const char *ex_field_type_name(const ex_field_type field_type)
|
|
+{
|
|
+ switch (field_type) {
|
|
+ case EX_FIELD_TYPE_USER_DEFINED: return "user defined";
|
|
+ case EX_FIELD_TYPE_SEQUENCE: return "sequence";
|
|
+ case EX_BASIS: return "basis";
|
|
+ case EX_QUADRATURE: return "quadrature";
|
|
+ case EX_SCALAR: return "scalar";
|
|
+ case EX_VECTOR_1D: return "vector 1D";
|
|
+ case EX_VECTOR_2D: return "vector 2D";
|
|
+ case EX_VECTOR_3D: return "vector 3D";
|
|
+ case EX_QUATERNION_2D: return "quaternion 2D";
|
|
+ case EX_QUATERNION_3D: return "quaternion 3D";
|
|
+ case EX_FULL_TENSOR_36: return "full tensor 36";
|
|
+ case EX_FULL_TENSOR_32: return "full tensor 32";
|
|
+ case EX_FULL_TENSOR_22: return "full tensor 22";
|
|
+ case EX_FULL_TENSOR_16: return "full tensor 16";
|
|
+ case EX_FULL_TENSOR_12: return "full tensor 12";
|
|
+ case EX_SYM_TENSOR_33: return "symmetric tensor 33";
|
|
+ case EX_SYM_TENSOR_31: return "symmetric tensor 31";
|
|
+ case EX_SYM_TENSOR_21: return "symmetric tensor 21";
|
|
+ case EX_SYM_TENSOR_13: return "symmetric tensor 13";
|
|
+ case EX_SYM_TENSOR_11: return "symmetric tensor 11";
|
|
+ case EX_SYM_TENSOR_10: return "symmetric tensor 10";
|
|
+ case EX_ASYM_TENSOR_03: return "asymmetric tensor 03";
|
|
+ case EX_ASYM_TENSOR_02: return "asymmetric tensor 02";
|
|
+ case EX_ASYM_TENSOR_01: return "asymmetric tensor 01";
|
|
+ case EX_MATRIX_2X2: return "matrix 2x2";
|
|
+ case EX_MATRIX_3X3: return "matrix 3x3";
|
|
+ case EX_FIELD_TYPE_INVALID: return "invalid";
|
|
+ }
|
|
+ return "invalid";
|
|
+}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_all_times.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_all_times.c
|
|
index bfe0fa04d9..bfb84be8a8 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_all_times.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_all_times.c
|
|
@@ -59,7 +59,7 @@ int ex_get_all_times(int exoid, void *time_values)
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -71,7 +71,7 @@ int ex_get_all_times(int exoid, void *time_values)
|
|
}
|
|
|
|
/*read time values */
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_var_float(exoid, varid, time_values);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_assemblies.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_assemblies.c
|
|
index a58ac913d5..aee75c0d00 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_assemblies.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_assemblies.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -13,20 +13,20 @@
|
|
* writes the assembly parameters and optionally assembly data for all assemblies
|
|
* assumes that `assembly` is large enough to contain all assemblies.
|
|
* \param exoid exodus file id
|
|
- * \param *assembly array of ex_assembly structures
|
|
+ * \param assembly array of ex_assembly structures
|
|
*/
|
|
int ex_get_assemblies(int exoid, ex_assembly *assembly)
|
|
{
|
|
/* Determine number of assemblies on database */
|
|
- int num_assembly = ex_inquire_int(exoid, EX_INQ_ASSEMBLY);
|
|
- int max_use_name_length = ex_inquire_int(exoid, EX_INQ_DB_MAX_USED_NAME_LENGTH);
|
|
+ int num_assembly = (int)ex_inquire_int(exoid, EX_INQ_ASSEMBLY);
|
|
+ int max_use_name_length = (int)ex_inquire_int(exoid, EX_INQ_DB_MAX_USED_NAME_LENGTH);
|
|
|
|
if (num_assembly < 0) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to inquire ASSEMBLY count in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, num_assembly);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_assembly.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_assembly.c
|
|
index bd5ffd6b98..78ef6e6666 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_assembly.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_assembly.c
|
|
@@ -17,7 +17,7 @@
|
|
|
|
int ex_get_assembly(int exoid, ex_assembly *assembly)
|
|
{
|
|
- struct ex__file_item *file = NULL;
|
|
+ struct exi_file_item *file = NULL;
|
|
int status = 0;
|
|
int dimid = 0;
|
|
size_t len = 0;
|
|
@@ -25,7 +25,7 @@ int ex_get_assembly(int exoid, ex_assembly *assembly)
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- file = ex__find_file_item(exoid);
|
|
+ file = exi_find_file_item(exoid);
|
|
if (!file) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d.", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_attr.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_attr.c
|
|
index 8d2d8a9df6..45264b387a 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_attr.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_attr.c
|
|
@@ -39,7 +39,7 @@ int ex_get_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, void *a
|
|
const char *vattrbname;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -48,7 +48,7 @@ int ex_get_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, void *a
|
|
obj_id_ndx = 0;
|
|
}
|
|
else {
|
|
- obj_id_ndx = ex__id_lkup(exoid, obj_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, obj_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -97,7 +97,7 @@ int ex_get_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, void *a
|
|
}
|
|
|
|
/* read in the attributes */
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_var_float(exoid, attrid, attrib);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_attr_names.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_attr_names.c
|
|
index 3d11a6c73b..3312df74d2 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_attr_names.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_attr_names.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -34,19 +34,18 @@ int ex_get_attr_names(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, c
|
|
{
|
|
int status;
|
|
int varid, numattrdim, obj_id_ndx;
|
|
- size_t num_attr, i;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
const char *dnumobjatt;
|
|
const char *vattrbname;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Determine index of obj_id in vobjids array */
|
|
if (obj_type != EX_NODAL) {
|
|
- obj_id_ndx = ex__id_lkup(exoid, obj_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, obj_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -121,6 +120,7 @@ int ex_get_attr_names(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, c
|
|
EX_FUNC_LEAVE(EX_WARN); /* no attributes for this object */
|
|
}
|
|
|
|
+ size_t num_attr = 0;
|
|
if ((status = nc_inq_dimlen(exoid, numattrdim, &num_attr)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to get number of attributes for %s %" PRId64 " in file id %d",
|
|
@@ -138,7 +138,7 @@ int ex_get_attr_names(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, c
|
|
|
|
if (status == NC_NOERR) {
|
|
/* read the names */
|
|
- status = ex__get_names(exoid, varid, num_attr, names, obj_type, __func__);
|
|
+ status = exi_get_names(exoid, varid, num_attr, names, obj_type, __func__);
|
|
if (status != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -147,7 +147,7 @@ int ex_get_attr_names(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, c
|
|
/* Names variable does not exist on the database; probably since this is an
|
|
* older version of the database. Return an empty array...
|
|
*/
|
|
- for (i = 0; i < num_attr; i++) {
|
|
+ for (size_t i = 0; i < num_attr; i++) {
|
|
names[i][0] = '\0';
|
|
}
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_attr_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_attr_param.c
|
|
index 15622d9271..1769bef201 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_attr_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_attr_param.c
|
|
@@ -40,7 +40,7 @@ int ex_get_attr_param(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, i
|
|
size_t lnum_attr_per_entry;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -49,7 +49,7 @@ int ex_get_attr_param(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, i
|
|
obj_id_ndx = 0;
|
|
}
|
|
else {
|
|
- obj_id_ndx = ex__id_lkup(exoid, obj_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, obj_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_attribute.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_attribute.c
|
|
index bc016c46ca..2284a7e567 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_attribute.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_attribute.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -10,30 +10,25 @@
|
|
#include "exodusII_int.h" // for EX_FATAL, etc
|
|
#include <stdbool.h>
|
|
|
|
-/* An assembly attribute is similar to an IOSS property consisting of
|
|
+/* An entity attribute is similar to an IOSS property consisting of
|
|
a name, a type, and a value or values. It is not a value per entity
|
|
- in the assembly, but a value for the assembly. For now, they types
|
|
+ in the entity, but a value for the entity. For now, the types
|
|
will be limited to text, integer, and double to provide capability
|
|
without the complexity of supporting the many types available in
|
|
NetCDF-4 including user-defined types. Note that an attribute can
|
|
have multiple values, for example if the attribute is a range, it
|
|
could have the value {1.0, 100.0}
|
|
|
|
- NOTE: This type of attribute (value on entity instead of value per
|
|
- entities members, for example nodes in a nodeset) will also be added
|
|
- to the other entity types (blocks and sets) when implemented for
|
|
- assemblies.
|
|
-
|
|
NOTE: Need a better name or way of distinguishing from the
|
|
attributes which are currently supported in Exodus.
|
|
*/
|
|
|
|
-static bool ex__is_internal_attribute(const char *name, ex_entity_type obj_type)
|
|
+static bool exi_is_internal_attribute(const char *name, ex_entity_type obj_type)
|
|
{
|
|
if (name[0] == '_') {
|
|
return true;
|
|
}
|
|
- else if ((strcmp(name, "elem_type") == 0) || (strcmp(name, "entity_type1") == 0) ||
|
|
+ else if ((strcmp(name, ATT_NAME_ELB) == 0) || (strcmp(name, "entity_type1") == 0) ||
|
|
(strcmp(name, "entity_type2") == 0)) {
|
|
return true;
|
|
}
|
|
@@ -47,76 +42,28 @@ static bool ex__is_internal_attribute(const char *name, ex_entity_type obj_type)
|
|
(strcmp(name, ATT_LAST_WRITTEN_TIME) == 0))) {
|
|
return true;
|
|
}
|
|
- return false;
|
|
-}
|
|
-
|
|
-static int ex__get_varid(int exoid, ex_entity_type obj_type, ex_entity_id id)
|
|
-{
|
|
- const char *entryptr = NULL;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
- int id_ndx = 0;
|
|
- int status = 0;
|
|
- int varid = 0;
|
|
-
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
- return (EX_FATAL);
|
|
- }
|
|
-
|
|
- /* First, locate index of this objects id `obj_type` id array */
|
|
- id_ndx = ex__id_lkup(exoid, obj_type, id);
|
|
- if (id_ndx <= 0) {
|
|
- ex_get_err(NULL, NULL, &status);
|
|
- if (status != 0) {
|
|
- if (status == EX_NULLENTITY) { /* NULL object? */
|
|
- return EX_NOERR;
|
|
- }
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to locate %s id %" PRId64 " in id array in file id %d",
|
|
- ex_name_of_object(obj_type), id, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return EX_FATAL;
|
|
- }
|
|
+ else if (strncmp(name, "Field@", 6) == 0) {
|
|
+ return true;
|
|
}
|
|
-
|
|
- switch (obj_type) {
|
|
- case EX_ASSEMBLY: entryptr = VAR_ENTITY_ASSEMBLY(id_ndx); break;
|
|
- case EX_BLOB: entryptr = VAR_ENTITY_BLOB(id_ndx); break;
|
|
- case EX_NODE_SET: entryptr = VAR_NODE_NS(id_ndx); break;
|
|
- case EX_EDGE_SET: entryptr = VAR_EDGE_ES(id_ndx); break;
|
|
- case EX_FACE_SET: entryptr = VAR_FACE_FS(id_ndx); break;
|
|
- case EX_SIDE_SET: entryptr = VAR_ELEM_SS(id_ndx); break;
|
|
- case EX_ELEM_SET: entryptr = VAR_ELEM_ELS(id_ndx); break;
|
|
- case EX_EDGE_BLOCK: entryptr = VAR_EBCONN(id_ndx); break;
|
|
- case EX_FACE_BLOCK: entryptr = VAR_FBCONN(id_ndx); break;
|
|
- case EX_ELEM_BLOCK: entryptr = VAR_CONN(id_ndx); break;
|
|
- default:
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: object type %d not supported in call to %s", obj_type,
|
|
- __func__);
|
|
- ex_err(__func__, errmsg, EX_BADPARAM);
|
|
- return EX_FATAL;
|
|
+ else if (strncmp(name, "Basis@", 6) == 0) {
|
|
+ return true;
|
|
}
|
|
-
|
|
- if ((status = nc_inq_varid(exoid, entryptr, &varid)) != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to locate entity list array for %s %" PRId64 " in file id %d",
|
|
- ex_name_of_object(obj_type), id, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return EX_FATAL;
|
|
+ else if (strncmp(name, "Quad@", 5) == 0) {
|
|
+ return true;
|
|
}
|
|
- return varid;
|
|
+ return false;
|
|
}
|
|
|
|
-static int ex__get_attribute_count(int exoid, ex_entity_type obj_type, ex_entity_id id, int *varid)
|
|
+static int exi_get_attribute_count(int exoid, ex_entity_type obj_type, ex_entity_id id, int *varid)
|
|
{
|
|
- int att_count = 0;
|
|
- int status;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
+ int att_count = 0;
|
|
+ int status;
|
|
|
|
if (obj_type == EX_GLOBAL) {
|
|
*varid = NC_GLOBAL;
|
|
|
|
if ((status = nc_inq(exoid, NULL, NULL, &att_count, NULL)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get GLOBAL attribute count in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -124,13 +71,14 @@ static int ex__get_attribute_count(int exoid, ex_entity_type obj_type, ex_entity
|
|
}
|
|
}
|
|
else {
|
|
- *varid = ex__get_varid(exoid, obj_type, id);
|
|
+ *varid = exi_get_varid(exoid, obj_type, id);
|
|
if (*varid <= 0) {
|
|
- /* Error message handled in ex__get_varid */
|
|
+ /* Error message handled in exi_get_varid */
|
|
return 0;
|
|
}
|
|
|
|
if ((status = nc_inq_var(exoid, *varid, NULL, NULL, NULL, NULL, &att_count)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to get attribute count on %s with id %" PRId64 " in file id %d",
|
|
ex_name_of_object(obj_type), id, exoid);
|
|
@@ -149,13 +97,10 @@ static int ex__get_attribute_count(int exoid, ex_entity_type obj_type, ex_entity
|
|
*/
|
|
int ex_get_attribute_count(int exoid, ex_entity_type obj_type, ex_entity_id id)
|
|
{
|
|
- int status;
|
|
- int varid;
|
|
- int att_count, count;
|
|
-
|
|
EX_FUNC_ENTER();
|
|
|
|
- att_count = ex__get_attribute_count(exoid, obj_type, id, &varid);
|
|
+ int varid;
|
|
+ int att_count = exi_get_attribute_count(exoid, obj_type, id, &varid);
|
|
if (att_count < 0) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
@@ -166,9 +111,10 @@ int ex_get_attribute_count(int exoid, ex_entity_type obj_type, ex_entity_id id)
|
|
}
|
|
|
|
/* Get names of each attribute and see if it is an 'internal' name */
|
|
- count = att_count;
|
|
+ int count = att_count;
|
|
for (int i = 0; i < count; i++) {
|
|
- char name[NC_MAX_NAME];
|
|
+ char name[EX_MAX_NAME + 1];
|
|
+ int status;
|
|
if ((status = nc_inq_attname(exoid, varid, i, name)) != NC_NOERR) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
@@ -177,7 +123,7 @@ int ex_get_attribute_count(int exoid, ex_entity_type obj_type, ex_entity_id id)
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- if (ex__is_internal_attribute(name, obj_type)) {
|
|
+ if (exi_is_internal_attribute(name, obj_type)) {
|
|
att_count--;
|
|
}
|
|
}
|
|
@@ -200,14 +146,13 @@ int ex_get_attribute_count(int exoid, ex_entity_type obj_type, ex_entity_id id)
|
|
*/
|
|
int ex_get_attribute_param(int exoid, ex_entity_type obj_type, ex_entity_id id, ex_attribute *attr)
|
|
{
|
|
- int status;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
int varid;
|
|
int att_count, count;
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- att_count = ex__get_attribute_count(exoid, obj_type, id, &varid);
|
|
+ att_count = exi_get_attribute_count(exoid, obj_type, id, &varid);
|
|
if (att_count < 0) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -217,7 +162,8 @@ int ex_get_attribute_param(int exoid, ex_entity_type obj_type, ex_entity_id id,
|
|
*/
|
|
count = 0;
|
|
for (int i = 0; i < att_count; i++) {
|
|
- char name[NC_MAX_NAME];
|
|
+ char name[EX_MAX_NAME + 1];
|
|
+ int status;
|
|
if ((status = nc_inq_attname(exoid, varid, i, name)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to get attribute named %s on %s with id %" PRId64 " in file id %d",
|
|
@@ -225,7 +171,7 @@ int ex_get_attribute_param(int exoid, ex_entity_type obj_type, ex_entity_id id,
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- if (!ex__is_internal_attribute(name, obj_type)) {
|
|
+ if (!exi_is_internal_attribute(name, obj_type)) {
|
|
nc_type type;
|
|
size_t val_count;
|
|
|
|
@@ -251,18 +197,15 @@ int ex_get_attribute_param(int exoid, ex_entity_type obj_type, ex_entity_id id,
|
|
/*! Get the values for the specified attribute. */
|
|
int ex_get_attribute(int exoid, ex_attribute *attr)
|
|
{
|
|
- int status;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int varid;
|
|
-
|
|
EX_FUNC_ENTER();
|
|
+ int varid;
|
|
if (attr->entity_type == EX_GLOBAL) {
|
|
varid = NC_GLOBAL;
|
|
}
|
|
else {
|
|
- varid = ex__get_varid(exoid, attr->entity_type, attr->entity_id);
|
|
+ varid = exi_get_varid(exoid, attr->entity_type, attr->entity_id);
|
|
if (varid <= 0) {
|
|
- /* Error message handled in ex__get_varid */
|
|
+ /* Error message handled in exi_get_varid */
|
|
EX_FUNC_LEAVE(varid);
|
|
}
|
|
}
|
|
@@ -281,6 +224,7 @@ int ex_get_attribute(int exoid, ex_attribute *attr)
|
|
attr->values = calloc(attr->value_count + 1, sizeof(char));
|
|
}
|
|
if (attr->values == NULL) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(
|
|
errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed allocate memory to store values for attribute %s on %s with id %" PRId64
|
|
@@ -291,7 +235,9 @@ int ex_get_attribute(int exoid, ex_attribute *attr)
|
|
}
|
|
}
|
|
|
|
+ int status;
|
|
if ((status = nc_get_att(exoid, varid, attr->name, attr->values)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to read attribute %s on %s with id %" PRId64 " in file id %d",
|
|
attr->name, ex_name_of_object(attr->entity_type), attr->entity_id, exoid);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_blob.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_blob.c
|
|
index 8541bc7279..be17e7f613 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_blob.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_blob.c
|
|
@@ -17,7 +17,7 @@
|
|
|
|
int ex_get_blob(int exoid, ex_blob *blob)
|
|
{
|
|
- struct ex__file_item *file = NULL;
|
|
+ struct exi_file_item *file = NULL;
|
|
int status = 0;
|
|
int dimid = 0;
|
|
size_t len = 0;
|
|
@@ -25,7 +25,7 @@ int ex_get_blob(int exoid, ex_blob *blob)
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- file = ex__find_file_item(exoid);
|
|
+ file = exi_find_file_item(exoid);
|
|
if (!file) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d.", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_blobs.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_blobs.c
|
|
index fde8ca7ab5..9b08148ebd 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_blobs.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_blobs.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -23,7 +23,7 @@ int ex_get_blobs(int exoid, ex_blob *blob)
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to inquire BLOB count in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, num_blob);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_block.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_block.c
|
|
index 12ea5d7b85..285bf7ac37 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_block.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_block.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -55,43 +55,43 @@ int ex_get_block(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, char *
|
|
int64_t *n_faces_per_entry = num_faces_per_entry;
|
|
int64_t *n_attr_per_entry = num_attr_per_entry;
|
|
|
|
- if (n_entries_this_blk) {
|
|
+ if (num_entries_this_blk) {
|
|
*n_entries_this_blk = block.num_entry;
|
|
}
|
|
- if (n_nodes_per_entry) {
|
|
+ if (num_nodes_per_entry) {
|
|
*n_nodes_per_entry = block.num_nodes_per_entry;
|
|
}
|
|
- if (n_edges_per_entry) {
|
|
+ if (num_edges_per_entry) {
|
|
*n_edges_per_entry = block.num_edges_per_entry;
|
|
}
|
|
- if (n_faces_per_entry) {
|
|
+ if (num_faces_per_entry) {
|
|
*n_faces_per_entry = block.num_faces_per_entry;
|
|
}
|
|
- if (n_attr_per_entry) {
|
|
+ if (num_attr_per_entry) {
|
|
*n_attr_per_entry = block.num_attribute;
|
|
}
|
|
}
|
|
else {
|
|
- int *n_entries_this_blk = num_entries_this_blk;
|
|
- int *n_nodes_per_entry = num_nodes_per_entry;
|
|
- int *n_edges_per_entry = num_edges_per_entry;
|
|
- int *n_faces_per_entry = num_faces_per_entry;
|
|
- int *n_attr_per_entry = num_attr_per_entry;
|
|
+ int *n_entries_this_blk = (int *)num_entries_this_blk;
|
|
+ int *n_nodes_per_entry = (int *)num_nodes_per_entry;
|
|
+ int *n_edges_per_entry = (int *)num_edges_per_entry;
|
|
+ int *n_faces_per_entry = (int *)num_faces_per_entry;
|
|
+ int *n_attr_per_entry = (int *)num_attr_per_entry;
|
|
|
|
- if (n_entries_this_blk) {
|
|
- *n_entries_this_blk = block.num_entry;
|
|
+ if (num_entries_this_blk) {
|
|
+ *n_entries_this_blk = (int)block.num_entry;
|
|
}
|
|
- if (n_nodes_per_entry) {
|
|
- *n_nodes_per_entry = block.num_nodes_per_entry;
|
|
+ if (num_nodes_per_entry) {
|
|
+ *n_nodes_per_entry = (int)block.num_nodes_per_entry;
|
|
}
|
|
- if (n_edges_per_entry) {
|
|
- *n_edges_per_entry = block.num_edges_per_entry;
|
|
+ if (num_edges_per_entry) {
|
|
+ *n_edges_per_entry = (int)block.num_edges_per_entry;
|
|
}
|
|
- if (n_faces_per_entry) {
|
|
- *n_faces_per_entry = block.num_faces_per_entry;
|
|
+ if (num_faces_per_entry) {
|
|
+ *n_faces_per_entry = (int)block.num_faces_per_entry;
|
|
}
|
|
- if (n_attr_per_entry) {
|
|
- *n_attr_per_entry = block.num_attribute;
|
|
+ if (num_attr_per_entry) {
|
|
+ *n_attr_per_entry = (int)block.num_attribute;
|
|
}
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_block_id_map.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_block_id_map.c
|
|
new file mode 100644
|
|
index 0000000000..3752313ed4
|
|
--- /dev/null
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_block_id_map.c
|
|
@@ -0,0 +1,102 @@
|
|
+/*
|
|
+ * Copyright(C) 2022 National Technology & Engineering Solutions
|
|
+ * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
+ * NTESS, the U.S. Government retains certain rights in this software.
|
|
+ *
|
|
+ * See packages/seacas/LICENSE for details
|
|
+ */
|
|
+/*****************************************************************************
|
|
+ *
|
|
+ * ex_get_block_id_map
|
|
+ *
|
|
+ * entry conditions -
|
|
+ * input parameters:
|
|
+ * int exoid exodus file id
|
|
+ * int map_type type of map (node, edge, face, element)
|
|
+ *
|
|
+ * exit conditions -
|
|
+ * int* map map
|
|
+ *
|
|
+ *****************************************************************************/
|
|
+
|
|
+#include "exodusII.h" // for ex_err, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, EX_NOERR, etc
|
|
+
|
|
+/*
|
|
+ * reads the id map for the edge/face/element block with the specified id.
|
|
+ */
|
|
+
|
|
+int ex_get_block_id_map(int exoid, ex_entity_type obj_type, ex_entity_id entity_id, void_int *map)
|
|
+{
|
|
+ int status;
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ const char *dnument = NULL;
|
|
+ ex_entity_type map_type = EX_INVALID;
|
|
+
|
|
+ EX_FUNC_ENTER();
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ /* Determine index of entity_id in id array */
|
|
+ int blk_id_ndx = exi_id_lkup(exoid, obj_type, entity_id);
|
|
+ if (blk_id_ndx <= 0) { /* Empty block */
|
|
+ ex_get_err(NULL, NULL, &status);
|
|
+ if (status != 0) {
|
|
+ if (status == EX_NULLENTITY) { /* NULL element block? */
|
|
+ EX_FUNC_LEAVE(EX_NOERR);
|
|
+ }
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to locate %s id %" PRId64 " in id array in file id %d",
|
|
+ ex_name_of_object(obj_type), entity_id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ size_t offset = 1;
|
|
+ size_t len = 0;
|
|
+ for (int i = 1; i <= blk_id_ndx; i++) {
|
|
+ offset += len;
|
|
+ /* inquire values of some dimensions */
|
|
+ int dimid = 0;
|
|
+
|
|
+ /* Determine the number of entities in all previous blocks. */
|
|
+ switch (obj_type) {
|
|
+ case EX_EDGE_BLOCK:
|
|
+ dnument = DIM_NUM_ED_IN_EBLK(i);
|
|
+ map_type = EX_EDGE_MAP;
|
|
+ break;
|
|
+ case EX_FACE_BLOCK:
|
|
+ dnument = DIM_NUM_FA_IN_FBLK(i);
|
|
+ map_type = EX_FACE_MAP;
|
|
+ break;
|
|
+ case EX_ELEM_BLOCK:
|
|
+ dnument = DIM_NUM_EL_IN_BLK(i);
|
|
+ map_type = EX_ELEM_MAP;
|
|
+ break;
|
|
+ default:
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "Bad block type parameter (%d) specified for file id %d.",
|
|
+ obj_type, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ if ((status = nc_inq_dimid(exoid, dnument, &dimid)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to locate number of entities in %s %" PRId64 " in file id %d",
|
|
+ ex_name_of_object(obj_type), entity_id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ if ((status = nc_inq_dimlen(exoid, dimid, &len)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to get number of %ss in block %" PRId64 " in file id %d",
|
|
+ ex_name_of_object(obj_type), entity_id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ }
|
|
+ EX_FUNC_UNLOCK();
|
|
+ return ex_get_partial_id_map(exoid, map_type, offset, len, map);
|
|
+}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_block_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_block_param.c
|
|
index cadfe2f19e..73bf723b15 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_block_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_block_param.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -36,7 +36,6 @@
|
|
int ex_get_block_param(int exoid, ex_block *block)
|
|
{
|
|
int dimid, connid, blk_id_ndx;
|
|
- size_t len, i;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
int status;
|
|
const char *dnument = NULL;
|
|
@@ -47,11 +46,9 @@ int ex_get_block_param(int exoid, ex_block *block)
|
|
const char *ablknam = NULL;
|
|
const char *vblkcon = NULL;
|
|
|
|
- struct ex__file_item *file = NULL;
|
|
-
|
|
EX_FUNC_ENTER();
|
|
|
|
- file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
if (!file) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d in ex_get_block_param().", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
@@ -59,7 +56,7 @@ int ex_get_block_param(int exoid, ex_block *block)
|
|
}
|
|
|
|
/* First, locate index of element block id in VAR_ID_EL_BLK array */
|
|
- blk_id_ndx = ex__id_lkup(exoid, block->type, block->id);
|
|
+ blk_id_ndx = exi_id_lkup(exoid, block->type, block->id);
|
|
if (blk_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
if (status != 0) {
|
|
@@ -84,8 +81,8 @@ int ex_get_block_param(int exoid, ex_block *block)
|
|
case EX_EDGE_BLOCK:
|
|
dnument = DIM_NUM_ED_IN_EBLK(blk_id_ndx);
|
|
dnumnod = DIM_NUM_NOD_PER_ED(blk_id_ndx);
|
|
- dnumedg = 0;
|
|
- dnumfac = 0;
|
|
+ dnumedg = NULL;
|
|
+ dnumfac = NULL;
|
|
dnumatt = DIM_NUM_ATT_IN_EBLK(blk_id_ndx);
|
|
vblkcon = VAR_EBCONN(blk_id_ndx);
|
|
ablknam = ATT_NAME_ELB;
|
|
@@ -93,8 +90,8 @@ int ex_get_block_param(int exoid, ex_block *block)
|
|
case EX_FACE_BLOCK:
|
|
dnument = DIM_NUM_FA_IN_FBLK(blk_id_ndx);
|
|
dnumnod = DIM_NUM_NOD_PER_FA(blk_id_ndx);
|
|
- dnumedg = 0; /* it is possible this might be non-NULL some day */
|
|
- dnumfac = 0;
|
|
+ dnumedg = NULL; /* it is possible this might be non-NULL some day */
|
|
+ dnumfac = NULL;
|
|
dnumatt = DIM_NUM_ATT_IN_FBLK(blk_id_ndx);
|
|
vblkcon = VAR_FBCONN(blk_id_ndx);
|
|
ablknam = ATT_NAME_ELB;
|
|
@@ -124,6 +121,7 @@ int ex_get_block_param(int exoid, ex_block *block)
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ size_t len;
|
|
if ((status = nc_inq_dimlen(exoid, dimid, &len)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to get number of %ss in block %" PRId64 " in file id %d",
|
|
@@ -243,7 +241,7 @@ int ex_get_block_param(int exoid, ex_block *block)
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MSG);
|
|
}
|
|
|
|
- for (i = 0; i < MAX_STR_LENGTH + 1; i++) {
|
|
+ for (int i = 0; i < MAX_STR_LENGTH + 1; i++) {
|
|
block->topology[i] = '\0';
|
|
|
|
/* get the element type name */
|
|
@@ -256,7 +254,7 @@ int ex_get_block_param(int exoid, ex_block *block)
|
|
}
|
|
|
|
/* get rid of trailing blanks */
|
|
- ex__trim(block->topology);
|
|
+ exi_trim(block->topology);
|
|
}
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_block_params.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_block_params.c
|
|
index d7e939293e..9b48ad81de 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_block_params.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_block_params.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -22,9 +22,8 @@
|
|
|
|
int ex_get_block_params(int exoid, size_t block_count, struct ex_block **blocks)
|
|
{
|
|
- size_t i;
|
|
EX_FUNC_ENTER();
|
|
- for (i = 0; i < block_count; i++) {
|
|
+ for (size_t i = 0; i < block_count; i++) {
|
|
int status = ex_get_block_param(exoid, blocks[i]);
|
|
if (status != EX_NOERR) {
|
|
EX_FUNC_LEAVE(status);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_cmap_params.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_cmap_params.c
|
|
index 4466fa2f17..2e4bdefd14 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_cmap_params.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_cmap_params.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -38,16 +38,16 @@
|
|
int ex_get_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_node_cnts,
|
|
void_int *elem_cmap_ids, void_int *elem_cmap_elem_cnts, int processor)
|
|
{
|
|
- size_t cnt, num_n_comm_maps, num_e_comm_maps, start[1], count[1];
|
|
- int64_t cmap_info_idx[2], cmap_data_idx[2];
|
|
- int nmstat;
|
|
+ size_t start[1], count[1];
|
|
int status, map_idx, varid, dimid;
|
|
+ int nmstat;
|
|
+ int64_t cmap_data_idx[2];
|
|
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -58,6 +58,7 @@ int ex_get_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
/*****************************************************************************/
|
|
|
|
/* get the cmap information variables index */
|
|
+ int64_t cmap_info_idx[2];
|
|
if (ex_get_idx(exoid, VAR_N_COMM_INFO_IDX, cmap_info_idx, processor) == -1) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to find index variable, \"%s\", in file ID %d",
|
|
VAR_N_COMM_INFO_IDX, exoid);
|
|
@@ -82,7 +83,7 @@ int ex_get_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
cmap_info_idx[1] = count[0];
|
|
} /* End "if (cmap_info_idx[1] == -1) */
|
|
|
|
- num_n_comm_maps = cmap_info_idx[1] - cmap_info_idx[0];
|
|
+ size_t num_n_comm_maps = cmap_info_idx[1] - cmap_info_idx[0];
|
|
|
|
if (num_n_comm_maps > 0) {
|
|
count[0] = num_n_comm_maps;
|
|
@@ -124,7 +125,7 @@ int ex_get_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
if (node_cmap_node_cnts != NULL) {
|
|
|
|
/* Get the node counts in each of the nodal communication maps */
|
|
- for (cnt = 0; cnt < num_n_comm_maps; cnt++) {
|
|
+ for (size_t cnt = 0; cnt < num_n_comm_maps; cnt++) {
|
|
int64_t cmap_id;
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
|
|
cmap_id = ((int64_t *)node_cmap_ids)[cnt];
|
|
@@ -133,7 +134,7 @@ int ex_get_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
cmap_id = ((int *)node_cmap_ids)[cnt];
|
|
}
|
|
|
|
- if ((map_idx = ne__id_lkup(exoid, VAR_N_COMM_IDS, cmap_info_idx, cmap_id)) < 0) {
|
|
+ if ((map_idx = nei_id_lkup(exoid, VAR_N_COMM_IDS, cmap_info_idx, cmap_id)) < 0) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to find nodal comm map with ID %" PRId64 " in file ID %d",
|
|
cmap_id, exoid);
|
|
@@ -206,10 +207,10 @@ int ex_get_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
((int *)node_cmap_node_cnts)[cnt] = 0;
|
|
}
|
|
} /* "for(cnt=0; cnt < num_n_comm_maps; cnt++)" */
|
|
- } /* "if (node_cmap_node_cnts != NULL)" */
|
|
- } /* "if (node_cmap_ids != NULL)" */
|
|
- } /* "if (num_n_comm_maps > 0)" */
|
|
- } /* End "if ((dimid = nc_inq_dimid(exoid, DIM_NUM_N_CMAPS)) != -1)" */
|
|
+ } /* "if (node_cmap_node_cnts != NULL)" */
|
|
+ } /* "if (node_cmap_ids != NULL)" */
|
|
+ } /* "if (num_n_comm_maps > 0)" */
|
|
+ } /* End "if ((dimid = nc_inq_dimid(exoid, DIM_NUM_N_CMAPS)) != -1)" */
|
|
|
|
/*****************************************************************************/
|
|
/*****************************************************************************/
|
|
@@ -227,7 +228,7 @@ int ex_get_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
}
|
|
|
|
/* Get the number of elemental communications maps in the file */
|
|
- if ((status = nc_inq_dimid(exoid, DIM_NUM_E_CMAPS, &dimid)) == NC_NOERR) {
|
|
+ if (nc_inq_dimid(exoid, DIM_NUM_E_CMAPS, &dimid) == NC_NOERR) {
|
|
/* check if I need to get the dimension of the nodal comm map */
|
|
if (cmap_info_idx[1] == -1) {
|
|
if ((status = nc_inq_dimlen(exoid, dimid, count)) != NC_NOERR) {
|
|
@@ -242,7 +243,7 @@ int ex_get_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
cmap_info_idx[1] = count[0];
|
|
} /* End "if (cmap_info_idx[1] == -1) */
|
|
|
|
- num_e_comm_maps = cmap_info_idx[1] - cmap_info_idx[0];
|
|
+ size_t num_e_comm_maps = cmap_info_idx[1] - cmap_info_idx[0];
|
|
|
|
if (num_e_comm_maps > 0) {
|
|
count[0] = num_e_comm_maps;
|
|
@@ -285,7 +286,7 @@ int ex_get_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
* Get the element counts in each of the elemental
|
|
* communication maps
|
|
*/
|
|
- for (cnt = 0; cnt < num_e_comm_maps; cnt++) {
|
|
+ for (size_t cnt = 0; cnt < num_e_comm_maps; cnt++) {
|
|
int64_t cmap_id;
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
|
|
cmap_id = ((int64_t *)elem_cmap_ids)[cnt];
|
|
@@ -294,7 +295,7 @@ int ex_get_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
cmap_id = ((int *)elem_cmap_ids)[cnt];
|
|
}
|
|
|
|
- if ((map_idx = ne__id_lkup(exoid, VAR_E_COMM_IDS, cmap_info_idx, cmap_id)) < 0) {
|
|
+ if ((map_idx = nei_id_lkup(exoid, VAR_E_COMM_IDS, cmap_info_idx, cmap_id)) < 0) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to find elemental comm map with ID %" PRId64 " in file ID %d",
|
|
cmap_id, exoid);
|
|
@@ -367,10 +368,10 @@ int ex_get_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
((int *)elem_cmap_elem_cnts)[cnt] = 0;
|
|
}
|
|
} /* "for(cnt=0; cnt < num_e_comm_maps; cnt++)" */
|
|
- } /* "if (elem_cmap_elem_cnts != NULL)" */
|
|
- } /* "if (elem_cmap_ids != NULL)" */
|
|
- } /* "if (num_e_comm_maps > 0)" */
|
|
- } /* End "if ((dimid = nc_inq_dimid(exoid, DIM_NUM_E_CMAPS(processor))) !=
|
|
- -1)" */
|
|
+ } /* "if (elem_cmap_elem_cnts != NULL)" */
|
|
+ } /* "if (elem_cmap_ids != NULL)" */
|
|
+ } /* "if (num_e_comm_maps > 0)" */
|
|
+ } /* End "if ((dimid = nc_inq_dimid(exoid, DIM_NUM_E_CMAPS(processor))) !=
|
|
+ -1)" */
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_concat_sets.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_concat_sets.c
|
|
index 95835f7f3f..417d0eb991 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_concat_sets.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_concat_sets.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -27,7 +27,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_set_specs, ex_err, etc
|
|
-#include "exodusII_int.h" // for ex__check_valid_file_id, etc
|
|
+#include "exodusII_int.h" // for exi_check_valid_file_id, etc
|
|
|
|
int ex_get_concat_sets(int exoid, ex_entity_type set_type, struct ex_set_specs *set_specs)
|
|
{
|
|
@@ -39,20 +39,17 @@ int ex_get_concat_sets(int exoid, ex_entity_type set_type, struct ex_set_specs *
|
|
|
|
void *sets_dist_fact = set_specs->sets_dist_fact;
|
|
|
|
- int num_sets, i;
|
|
- float * flt_dist_fact;
|
|
- double * dbl_dist_fact;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- ex_inquiry ex_inq_val;
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* setup pointers based on set_type
|
|
NOTE: there is another block that sets more stuff later ... */
|
|
|
|
+ ex_inquiry ex_inq_val;
|
|
if (set_type == EX_NODE_SET) {
|
|
ex_inq_val = EX_INQ_NODE_SETS;
|
|
}
|
|
@@ -76,7 +73,7 @@ int ex_get_concat_sets(int exoid, ex_entity_type set_type, struct ex_set_specs *
|
|
|
|
/* first check if any sets are specified */
|
|
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
if (status == NC_EBADDIM) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: no %ss defined for file id %d",
|
|
ex_name_of_object(set_type), exoid);
|
|
@@ -91,7 +88,7 @@ int ex_get_concat_sets(int exoid, ex_entity_type set_type, struct ex_set_specs *
|
|
|
|
/* inquire how many sets have been stored */
|
|
|
|
- num_sets = ex_inquire_int(exoid, ex_inq_val);
|
|
+ int num_sets = ex_inquire_int(exoid, ex_inq_val);
|
|
if (num_sets < 0) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of %ss defined for file id %d",
|
|
ex_name_of_object(set_type), exoid);
|
|
@@ -117,8 +114,8 @@ int ex_get_concat_sets(int exoid, ex_entity_type set_type, struct ex_set_specs *
|
|
((int *)sets_dist_index)[0] = 0;
|
|
}
|
|
|
|
- for (i = 0; i < num_sets; i++) {
|
|
- int set_id;
|
|
+ for (int i = 0; i < num_sets; i++) {
|
|
+ int64_t set_id;
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
|
|
set_id = ((int64_t *)set_specs->sets_ids)[i];
|
|
}
|
|
@@ -178,7 +175,7 @@ int ex_get_concat_sets(int exoid, ex_entity_type set_type, struct ex_set_specs *
|
|
int *sets_extra_list = set_specs->sets_extra_list;
|
|
int *sets_extra = sets_extra_list ? &(sets_extra_list)[((int *)sets_entry_index)[i]] : NULL;
|
|
status = ex_get_set(exoid, set_type, set_id,
|
|
- &(sets_entry_list[((int *)sets_entry_index)[i]]), sets_extra);
|
|
+ &(sets_entry_list[((int *)sets_entry_index)[i]]), sets_extra);
|
|
}
|
|
}
|
|
|
|
@@ -187,7 +184,7 @@ int ex_get_concat_sets(int exoid, ex_entity_type set_type, struct ex_set_specs *
|
|
}
|
|
|
|
/* get distribution factors for this set */
|
|
- if (sets_dist_fact != 0) {
|
|
+ if (sets_dist_fact != NULL) {
|
|
size_t df_idx;
|
|
size_t num_dist;
|
|
if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
@@ -199,13 +196,13 @@ int ex_get_concat_sets(int exoid, ex_entity_type set_type, struct ex_set_specs *
|
|
num_dist = ((int *)num_dist_per_set)[i];
|
|
}
|
|
if (num_dist > 0) { /* only get df if they exist */
|
|
- if (ex__comp_ws(exoid) == sizeof(float)) {
|
|
- flt_dist_fact = sets_dist_fact;
|
|
- status = ex_get_set_dist_fact(exoid, set_type, set_id, &(flt_dist_fact[df_idx]));
|
|
+ if (exi_comp_ws(exoid) == sizeof(float)) {
|
|
+ float *flt_dist_fact = sets_dist_fact;
|
|
+ status = ex_get_set_dist_fact(exoid, set_type, set_id, &(flt_dist_fact[df_idx]));
|
|
}
|
|
else {
|
|
- dbl_dist_fact = sets_dist_fact;
|
|
- status = ex_get_set_dist_fact(exoid, set_type, set_id, &(dbl_dist_fact[df_idx]));
|
|
+ double *dbl_dist_fact = sets_dist_fact;
|
|
+ status = ex_get_set_dist_fact(exoid, set_type, set_id, &(dbl_dist_fact[df_idx]));
|
|
}
|
|
if (status != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL); /* error will be reported by subroutine */
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_concat_side_set_node_count.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_concat_side_set_node_count.c
|
|
index 3588af9208..8e4d0b1217 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_concat_side_set_node_count.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_concat_side_set_node_count.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2023 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -24,36 +24,32 @@
|
|
#include "exodusII.h" // for ex_err, EX_MSG, etc
|
|
#include "exodusII_int.h" // for elem_blk_parm, EX_FATAL, etc
|
|
|
|
-/*! \endcond */
|
|
-
|
|
/*! \undoc */
|
|
int ex_get_concat_side_set_node_count(int exoid, int *side_set_node_cnt_list)
|
|
{
|
|
int ii, i, j, iss, ioff;
|
|
ex_entity_id side_set_id;
|
|
- int num_side_sets, num_elem_blks, ndim;
|
|
- int64_t tot_num_elem = 0, tot_num_ss_elem = 0, num_df = 0, side, elem;
|
|
- void_int * elem_blk_ids = NULL;
|
|
- void_int * side_set_ids = NULL;
|
|
- void_int * ss_elem_ndx = NULL;
|
|
- void_int * side_set_elem_list = NULL;
|
|
- void_int * side_set_side_list = NULL;
|
|
+ int64_t tot_num_ss_elem = 0, num_df = 0;
|
|
+ void_int *elem_blk_ids = NULL;
|
|
+ void_int *side_set_ids = NULL;
|
|
+ void_int *ss_elem_ndx = NULL;
|
|
+ void_int *side_set_elem_list = NULL;
|
|
+ void_int *side_set_side_list = NULL;
|
|
size_t elem_ctr;
|
|
- int int_size, ids_size;
|
|
int status;
|
|
|
|
- struct ex__elem_blk_parm *elem_blk_parms = NULL;
|
|
+ struct exi_elem_blk_parm *elem_blk_parms = NULL;
|
|
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* first check if any side sets are specified */
|
|
/* inquire how many side sets have been stored */
|
|
- num_side_sets = ex_inquire_int(exoid, EX_INQ_SIDE_SETS);
|
|
+ int num_side_sets = (int)ex_inquire_int(exoid, EX_INQ_SIDE_SETS);
|
|
if (num_side_sets < 0) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of side sets in file id %d",
|
|
exoid);
|
|
@@ -67,7 +63,7 @@ int ex_get_concat_side_set_node_count(int exoid, int *side_set_node_cnt_list)
|
|
EX_FUNC_LEAVE(EX_WARN);
|
|
}
|
|
|
|
- num_elem_blks = ex_inquire_int(exoid, EX_INQ_ELEM_BLK);
|
|
+ int num_elem_blks = (int)ex_inquire_int(exoid, EX_INQ_ELEM_BLK);
|
|
if (num_elem_blks < 0) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of element blocks in file id %d",
|
|
exoid);
|
|
@@ -75,7 +71,7 @@ int ex_get_concat_side_set_node_count(int exoid, int *side_set_node_cnt_list)
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- tot_num_elem = ex_inquire_int(exoid, EX_INQ_ELEM);
|
|
+ int64_t tot_num_elem = ex_inquire_int(exoid, EX_INQ_ELEM);
|
|
if (tot_num_elem < 0) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get total number of elements in file id %d",
|
|
exoid);
|
|
@@ -85,20 +81,18 @@ int ex_get_concat_side_set_node_count(int exoid, int *side_set_node_cnt_list)
|
|
|
|
/* get the dimensionality of the coordinates; this is necessary to
|
|
distinguish between 2d TRIs and 3d TRIs */
|
|
- ndim = ex_inquire_int(exoid, EX_INQ_DIM);
|
|
+ int ndim = (int)ex_inquire_int(exoid, EX_INQ_DIM);
|
|
if (ndim < 0) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get dimensionality in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_LASTERR);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- int_size = sizeof(int);
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
- int_size = sizeof(int64_t);
|
|
- }
|
|
+ bool ints_64 = ex_int64_status(exoid) & EX_BULK_INT64_API;
|
|
+ int int_size = ints_64 ? sizeof(int64_t) : sizeof(int);
|
|
|
|
/* Allocate space for the element block ids */
|
|
- ids_size = sizeof(int);
|
|
+ int ids_size = sizeof(int);
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
|
|
ids_size = sizeof(int64_t);
|
|
}
|
|
@@ -117,7 +111,7 @@ int ex_get_concat_side_set_node_count(int exoid, int *side_set_node_cnt_list)
|
|
}
|
|
|
|
/* Allocate space for the element block params */
|
|
- if (!(elem_blk_parms = malloc(num_elem_blks * sizeof(struct ex__elem_blk_parm)))) {
|
|
+ if (!(elem_blk_parms = malloc(num_elem_blks * sizeof(struct exi_elem_blk_parm)))) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate space for element block params "
|
|
"for file id %d",
|
|
@@ -136,7 +130,7 @@ int ex_get_concat_side_set_node_count(int exoid, int *side_set_node_cnt_list)
|
|
id = ((int *)elem_blk_ids)[i];
|
|
}
|
|
|
|
- if (ex__get_block_param(exoid, id, ndim, &elem_blk_parms[i]) != EX_NOERR) {
|
|
+ if (exi_get_block_param(exoid, id, ndim, &elem_blk_parms[i]) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
|
|
@@ -239,7 +233,7 @@ int ex_get_concat_side_set_node_count(int exoid, int *side_set_node_cnt_list)
|
|
for (i = 0; i < tot_num_ss_elem; i++) {
|
|
elems[i] = i; /* init index array to current position */
|
|
}
|
|
- ex__iqsort64(side_set_elem_list, ss_elem_ndx, tot_num_ss_elem);
|
|
+ exi_iqsort64(side_set_elem_list, ss_elem_ndx, tot_num_ss_elem);
|
|
}
|
|
else {
|
|
/* Sort side set element list into index array - non-destructive */
|
|
@@ -247,14 +241,16 @@ int ex_get_concat_side_set_node_count(int exoid, int *side_set_node_cnt_list)
|
|
for (i = 0; i < tot_num_ss_elem; i++) {
|
|
elems[i] = i; /* init index array to current position */
|
|
}
|
|
- ex__iqsort(side_set_elem_list, ss_elem_ndx, tot_num_ss_elem);
|
|
+ exi_iqsort(side_set_elem_list, ss_elem_ndx, tot_num_ss_elem);
|
|
}
|
|
|
|
j = 0; /* The current element block... */
|
|
for (ii = 0; ii < tot_num_ss_elem; ii++) {
|
|
|
|
int64_t elem_ndx;
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
+ int64_t elem;
|
|
+ int64_t side;
|
|
+ if (ints_64) {
|
|
elem_ndx = ((int64_t *)ss_elem_ndx)[ii];
|
|
elem = ((int64_t *)side_set_elem_list)[elem_ndx];
|
|
side = ((int64_t *)side_set_side_list)[elem_ndx] - 1;
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_conn.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_conn.c
|
|
index 16cccc1a99..ab046ee3d7 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_conn.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_conn.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -24,7 +24,7 @@
|
|
*
|
|
*/
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__id_lkup, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_id_lkup, etc
|
|
|
|
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)
|
|
@@ -53,7 +53,7 @@ int ex_get_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, void_in
|
|
const char *vfaceconn = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -67,7 +67,7 @@ int ex_get_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, void_in
|
|
|
|
/* Locate index of element block id in VAR_ID_EL_BLK array */
|
|
|
|
- blk_id_ndx = ex__id_lkup(exoid, blk_type, blk_id);
|
|
+ blk_id_ndx = exi_id_lkup(exoid, blk_type, blk_id);
|
|
if (blk_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
if (status != 0) {
|
|
@@ -89,19 +89,19 @@ int ex_get_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, void_in
|
|
switch (blk_type) {
|
|
case EX_EDGE_BLOCK:
|
|
dnumnodent = DIM_NUM_NOD_PER_ED(blk_id_ndx);
|
|
- dnumedgent = 0;
|
|
- dnumfacent = 0;
|
|
+ dnumedgent = NULL;
|
|
+ dnumfacent = NULL;
|
|
vnodeconn = VAR_EBCONN(blk_id_ndx);
|
|
- vedgeconn = 0;
|
|
- vfaceconn = 0;
|
|
+ vedgeconn = NULL;
|
|
+ vfaceconn = NULL;
|
|
break;
|
|
case EX_FACE_BLOCK:
|
|
dnumnodent = DIM_NUM_NOD_PER_FA(blk_id_ndx);
|
|
- dnumedgent = 0;
|
|
- dnumfacent = 0;
|
|
+ dnumedgent = NULL;
|
|
+ dnumfacent = NULL;
|
|
vnodeconn = VAR_FBCONN(blk_id_ndx);
|
|
- vedgeconn = 0;
|
|
- vfaceconn = 0;
|
|
+ vedgeconn = NULL;
|
|
+ vfaceconn = NULL;
|
|
break;
|
|
case EX_ELEM_BLOCK:
|
|
dnumnodent = DIM_NUM_NOD_PER_EL(blk_id_ndx);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_coord.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_coord.c
|
|
index a3a91f7f80..242d32fdcb 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_coord.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_coord.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__comp_ws, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_comp_ws, etc
|
|
|
|
/*!
|
|
The function ex_get_coord() reads the nodal coordinates of the
|
|
@@ -75,17 +75,17 @@ int ex_get_coord(int exoid, void *x_coor, void *y_coor, void *z_coor)
|
|
int coordidx, coordidy, coordidz;
|
|
|
|
int numnoddim, ndimdim;
|
|
- size_t num_nod, num_dim, start[2], count[2], i;
|
|
+ size_t num_nod, num_dim;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* inquire id's of previously defined dimensions */
|
|
|
|
- if (ex__get_dimension(exoid, DIM_NUM_DIM, "dimension count", &num_dim, &ndimdim, __func__) !=
|
|
+ if (exi_get_dimension(exoid, DIM_NUM_DIM, "dimension count", &num_dim, &ndimdim, __func__) !=
|
|
NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -111,17 +111,19 @@ int ex_get_coord(int exoid, void *x_coor, void *y_coor, void *z_coor)
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- for (i = 0; i < num_dim; i++) {
|
|
- char *which = NULL;
|
|
- start[0] = i;
|
|
- start[1] = 0;
|
|
+ for (size_t i = 0; i < num_dim; i++) {
|
|
+ char *which = NULL;
|
|
+ size_t start[2];
|
|
+ size_t count[2];
|
|
+ start[0] = i;
|
|
+ start[1] = 0;
|
|
|
|
count[0] = 1;
|
|
count[1] = num_nod;
|
|
|
|
if (i == 0 && x_coor != NULL) {
|
|
which = "X";
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, coordid, start, count, x_coor);
|
|
}
|
|
else {
|
|
@@ -130,7 +132,7 @@ int ex_get_coord(int exoid, void *x_coor, void *y_coor, void *z_coor)
|
|
}
|
|
else if (i == 1 && y_coor != NULL) {
|
|
which = "Y";
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, coordid, start, count, y_coor);
|
|
}
|
|
else {
|
|
@@ -139,7 +141,7 @@ int ex_get_coord(int exoid, void *x_coor, void *y_coor, void *z_coor)
|
|
}
|
|
else if (i == 2 && z_coor != NULL) {
|
|
which = "Z";
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, coordid, start, count, z_coor);
|
|
}
|
|
else {
|
|
@@ -188,7 +190,7 @@ int ex_get_coord(int exoid, void *x_coor, void *y_coor, void *z_coor)
|
|
}
|
|
|
|
/* write out the coordinates */
|
|
- for (i = 0; i < num_dim; i++) {
|
|
+ for (size_t i = 0; i < num_dim; i++) {
|
|
void *coor = NULL;
|
|
char *which = NULL;
|
|
|
|
@@ -209,7 +211,7 @@ int ex_get_coord(int exoid, void *x_coor, void *y_coor, void *z_coor)
|
|
}
|
|
|
|
if (coor != NULL && coordid != -1) {
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_var_float(exoid, coordid, coor);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_coord_names.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_coord_names.c
|
|
index cb74e47ef0..e80be3ecd7 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_coord_names.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_coord_names.c
|
|
@@ -51,7 +51,7 @@ int ex_get_coord_names(int exoid, char **coord_names)
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -79,7 +79,7 @@ int ex_get_coord_names(int exoid, char **coord_names)
|
|
}
|
|
|
|
/* read the coordinate names */
|
|
- status = ex__get_names(exoid, varid, num_dim, coord_names, EX_COORDINATE, __func__);
|
|
+ status = exi_get_names(exoid, varid, num_dim, coord_names, EX_COORDINATE, __func__);
|
|
if (status != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_coordinate_frames.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_coordinate_frames.c
|
|
index 5a77da8002..5f06a1d24a 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_coordinate_frames.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_coordinate_frames.c
|
|
@@ -106,7 +106,7 @@ int ex_get_coordinate_frames(int exoid, int *nframes, void_int *cf_ids, void *pt
|
|
size_t count = 0; /* number vars to put in varput */
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -166,7 +166,7 @@ int ex_get_coordinate_frames(int exoid, int *nframes, void_int *cf_ids, void *pt
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_var_float(exoid, varids, pt_coordinates);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_eb_info_global.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_eb_info_global.c
|
|
index ef1d6d416d..326809e2bc 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_eb_info_global.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_eb_info_global.c
|
|
@@ -33,7 +33,7 @@ int ex_get_eb_info_global(int exoid, void_int *el_blk_ids, void_int *el_blk_cnts
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_elem_cmap.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_elem_cmap.c
|
|
index 6eee554414..023f172c36 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_elem_cmap.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_elem_cmap.c
|
|
@@ -42,7 +42,7 @@ int ex_get_elem_cmap(int exoid, ex_entity_id map_id, void_int *elem_ids, void_in
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -57,11 +57,11 @@ int ex_get_elem_cmap(int exoid, ex_entity_id map_id, void_int *elem_ids, void_in
|
|
|
|
/*
|
|
* no need to check if the second index is -1 that is handled
|
|
- * in ne__id_lkup, where the dimension must be looked up anyways
|
|
+ * in nei_id_lkup, where the dimension must be looked up anyways
|
|
*/
|
|
|
|
/* Get the index of the elemental comm map with the given ID */
|
|
- if ((map_idx = ne__id_lkup(exoid, VAR_E_COMM_IDS, varidx, map_id)) < 0) {
|
|
+ if ((map_idx = nei_id_lkup(exoid, VAR_E_COMM_IDS, varidx, map_id)) < 0) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to find elemental comm map with ID %" PRId64 " in file \
|
|
ID %d",
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_elem_type.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_elem_type.c
|
|
index 435b4e3f84..ea02150e66 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_elem_type.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_elem_type.c
|
|
@@ -40,12 +40,12 @@ int ex_get_elem_type(int exoid, ex_entity_id elem_blk_id, char *elem_type)
|
|
/*****************************************************************************/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* inquire id's of previously defined dimensions */
|
|
- if ((el_blk_id_ndx = ex__id_lkup(exoid, EX_ELEM_BLOCK, elem_blk_id)) == -1) {
|
|
+ if ((el_blk_id_ndx = exi_id_lkup(exoid, EX_ELEM_BLOCK, elem_blk_id)) == -1) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to find element block ID %" PRId64 " in file %d", elem_blk_id, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_LASTERR);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_entity_count_per_polyhedra.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_entity_count_per_polyhedra.c
|
|
index d8f01b3b40..a2b0e44b02 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_entity_count_per_polyhedra.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_entity_count_per_polyhedra.c
|
|
@@ -12,7 +12,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__id_lkup, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_id_lkup, etc
|
|
|
|
/*!
|
|
* reads in the number of entities (nodes/faces) per polyhedra
|
|
@@ -30,11 +30,11 @@ int ex_get_entity_count_per_polyhedra(int exoid, ex_entity_type blk_type, ex_ent
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- blk_id_ndx = ex__id_lkup(exoid, blk_type, blk_id);
|
|
+ blk_id_ndx = exi_id_lkup(exoid, blk_type, blk_id);
|
|
if (blk_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_field_metadata.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_field_metadata.c
|
|
new file mode 100644
|
|
index 0000000000..e97b41c3ee
|
|
--- /dev/null
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_field_metadata.c
|
|
@@ -0,0 +1,572 @@
|
|
+/*
|
|
+ * Copyright(C) 1999-2024 National Technology & Engineering Solutions
|
|
+ * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
+ * NTESS, the U.S. Government retains certain rights in this software.
|
|
+ *
|
|
+ * See packages/seacas/LICENSE for details
|
|
+ */
|
|
+
|
|
+#include "exodusII.h" // for ex_err, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, etc
|
|
+#include <assert.h>
|
|
+#include <stdbool.h>
|
|
+
|
|
+static const char *exi_get_metadata_attribute(const char *name, const char *prefix, int pre_len)
|
|
+{
|
|
+ /*
|
|
+ * Each field or basis attribute metadata attribute consists of 2 or more attributes.
|
|
+ * Return the string corresponding to {type} in an attribute of the form "Field@{name}@{type}"
|
|
+ * or "Basis@{name}@{type}" or "Quad@{name}@{type}".
|
|
+ */
|
|
+
|
|
+ if (strncmp(name, prefix, pre_len) == 0) {
|
|
+ /* Return the suffix (if any) following the last "@" */
|
|
+ char *suffix = strrchr(name, '@');
|
|
+ if (suffix != NULL) {
|
|
+ suffix++;
|
|
+ return suffix;
|
|
+ }
|
|
+ }
|
|
+ return NULL;
|
|
+}
|
|
+
|
|
+static const char *exi_get_attribute_metadata_name(const char *attrib, int offset)
|
|
+{
|
|
+ /*
|
|
+ * PRECONDITION: `attrib` is a basis or field metadata attribute of the form
|
|
+ * "Basis@{name}@{type}" or "Field@{name}@{type}" `offset` is the length
|
|
+ * of `Basis@` or `Field@` or `Quad@`
|
|
+ *
|
|
+ * Returns the `{name}` portion in `name`
|
|
+ */
|
|
+ static char name[EX_MAX_NAME + 1];
|
|
+ memset(name, '\0', EX_MAX_NAME + 1);
|
|
+ for (int i = 0; attrib[i + offset] != '@'; i++) {
|
|
+ name[i] = attrib[i + offset];
|
|
+ }
|
|
+ return name;
|
|
+}
|
|
+
|
|
+static int exi_get_attribute_count(int exoid, ex_entity_type obj_type, ex_entity_id id, int *varid)
|
|
+{
|
|
+ int att_count = 0;
|
|
+ int status;
|
|
+
|
|
+ if (obj_type == EX_GLOBAL) {
|
|
+ *varid = NC_GLOBAL;
|
|
+
|
|
+ if ((status = nc_inq(exoid, NULL, NULL, &att_count, NULL)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get GLOBAL attribute count");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ }
|
|
+ else {
|
|
+ *varid = exi_get_varid(exoid, obj_type, id);
|
|
+ if (*varid <= 0) {
|
|
+ /* Error message handled in exi_get_varid */
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ if ((status = nc_inq_var(exoid, *varid, NULL, NULL, NULL, NULL, &att_count)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to get attribute count on %s with id %" PRId64,
|
|
+ ex_name_of_object(obj_type), id);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ }
|
|
+ return att_count;
|
|
+}
|
|
+
|
|
+int ex_get_field_metadata_count(int exoid, ex_entity_type obj_type, ex_entity_id id)
|
|
+{
|
|
+ EX_FUNC_ENTER();
|
|
+
|
|
+ int varid;
|
|
+ int att_count = exi_get_attribute_count(exoid, obj_type, id, &varid);
|
|
+ if (att_count < 0) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Negative attribute count (%d) on %s with id %" PRId64,
|
|
+ att_count, ex_name_of_object(obj_type), id);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_INTERNAL);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ /* Get names of each attribute and see if it is a 'Field metadata' name */
|
|
+ int count = 0;
|
|
+ for (int i = 0; i < att_count; i++) {
|
|
+ char name[EX_MAX_NAME + 1];
|
|
+ int status;
|
|
+ if ((status = nc_inq_attname(exoid, varid, i, name)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to get attribute named %s on %s with id %" PRId64, name,
|
|
+ ex_name_of_object(obj_type), id);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ const char *type = exi_get_metadata_attribute(name, "Field@", 6);
|
|
+ if (type != NULL && strcmp("type", type) == 0) {
|
|
+ count++;
|
|
+ }
|
|
+ }
|
|
+ EX_FUNC_LEAVE(count);
|
|
+}
|
|
+
|
|
+/*! Get the values for the specified attribute. */
|
|
+int ex_get_field_metadata(int exoid, ex_field *field)
|
|
+{
|
|
+ EX_FUNC_ENTER();
|
|
+
|
|
+ int varid;
|
|
+ int att_count = exi_get_attribute_count(exoid, field[0].entity_type, field[0].entity_id, &varid);
|
|
+ if (att_count < 0) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Negative attribute count (%d) on %s with id %" PRId64,
|
|
+ att_count, ex_name_of_object(field[0].entity_type), field[0].entity_id);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_INTERNAL);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ /* Iterate through each Field metadata field and populate `field` */
|
|
+ int count = 0;
|
|
+ for (int i = 0; i < att_count; i++) {
|
|
+ char attr_name[EX_MAX_NAME + 1];
|
|
+ int status;
|
|
+ if ((status = nc_inq_attname(exoid, varid, i, attr_name)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to get attribute named %s on %s with id %" PRId64, attr_name,
|
|
+ ex_name_of_object(field[0].entity_type), field[0].entity_id);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ const char *fld_type = exi_get_metadata_attribute(attr_name, "Field@", 6);
|
|
+ if (fld_type != NULL) {
|
|
+ /* Get the field name. We know that the `name` is of the form "Field@{name}@{item}" */
|
|
+ const char *fld_name = exi_get_attribute_metadata_name(attr_name, 6);
|
|
+
|
|
+ /* If this is the first time we have seen this `fld_name`, then increment count and
|
|
+ * store the name */
|
|
+ int found = -1;
|
|
+ int which = 0;
|
|
+ for (int ii = 0; ii < count; ii++) {
|
|
+ if (strcmp(field[ii].name, fld_name) == 0) {
|
|
+ found = ii;
|
|
+ which = ii;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (found == -1) {
|
|
+ which = count;
|
|
+ strcpy(field[count].name, fld_name);
|
|
+ /* Set default separator type... */
|
|
+ field[count].component_separator[0] = '_';
|
|
+ field[count].component_separator[1] = '\0';
|
|
+
|
|
+ count++;
|
|
+ }
|
|
+
|
|
+ nc_type type; /* integer, double, character, ... */
|
|
+ size_t val_count; /* how many `type` values */
|
|
+ if ((status = nc_inq_att(exoid, varid, attr_name, &type, &val_count)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to get parameters for attribute named %s on %s with id %" PRId64,
|
|
+ attr_name, ex_name_of_object(field[0].entity_type), field[0].entity_id);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ if (strcmp(fld_type, "type") == 0) {
|
|
+ status = nc_get_att_int(exoid, varid, attr_name, (int *)field[which].type);
|
|
+ if (field[which].nesting == 0) {
|
|
+ field[which].nesting = val_count;
|
|
+ }
|
|
+ }
|
|
+ else if (strcmp(fld_type, "separator") == 0) {
|
|
+ status = nc_get_att_text(exoid, varid, attr_name, field[which].component_separator);
|
|
+ }
|
|
+ else if (strcmp(fld_type, "cardinality") == 0) {
|
|
+ status = nc_get_att_int(exoid, varid, attr_name, field[which].cardinality);
|
|
+ if (field[which].nesting == 0) {
|
|
+ field[which].nesting = val_count;
|
|
+ }
|
|
+ }
|
|
+ else if (strcmp(fld_type, "type_name") == 0) {
|
|
+ status = nc_get_att_text(exoid, varid, attr_name, field[which].type_name);
|
|
+ }
|
|
+ else if (strcmp(fld_type, "suffices") == 0) {
|
|
+ status = nc_get_att_text(exoid, varid, attr_name, field[which].suffices);
|
|
+ }
|
|
+ else {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(
|
|
+ errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: Invalid field metadata attribute type %s on field %s on %s with id %" PRId64,
|
|
+ fld_type, fld_name, ex_name_of_object(field[0].entity_type), field[0].entity_id);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to read field metadata attribute type %s on field %s on %s with id "
|
|
+ "%" PRId64,
|
|
+ fld_type, fld_name, ex_name_of_object(field[0].entity_type), field[0].entity_id);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ EX_FUNC_LEAVE(EX_NOERR);
|
|
+}
|
|
+
|
|
+int exi_get_metadata_count(int exoid, const char *which)
|
|
+{
|
|
+ EX_FUNC_ENTER();
|
|
+
|
|
+ int varid;
|
|
+ int att_count = exi_get_attribute_count(exoid, EX_GLOBAL, 0, &varid);
|
|
+ if (att_count < 0) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Negative attribute count (%d)", att_count);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_INTERNAL);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ /* Get names of each attribute and see if it is a `which` metadata name */
|
|
+ size_t att_len = strlen(which);
|
|
+ int count = 0;
|
|
+ for (int i = 0; i < att_count; i++) {
|
|
+ char name[EX_MAX_NAME + 1];
|
|
+ int status;
|
|
+ if ((status = nc_inq_attname(exoid, varid, i, name)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get attribute named %s", name);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ const char *type = exi_get_metadata_attribute(name, which, att_len);
|
|
+ if (type != NULL && strcmp("cardinality", type) == 0) {
|
|
+ count++;
|
|
+ }
|
|
+ }
|
|
+ EX_FUNC_LEAVE(count);
|
|
+}
|
|
+
|
|
+int ex_get_basis_count(int exoid) { return exi_get_metadata_count(exoid, "Basis@"); }
|
|
+
|
|
+int ex_get_quadrature_count(int exoid) { return exi_get_metadata_count(exoid, "Quad@"); }
|
|
+
|
|
+int ex_get_basis(int exoid, ex_basis **pbasis, int *num_basis)
|
|
+{
|
|
+ /*
|
|
+ * -- If this function is called and there is no basis metadata on the
|
|
+ * entity, it will return EX_NOTFOUND;
|
|
+ *
|
|
+ * -- If there are basis defined on the database, it will:
|
|
+ * - determine number of basis defined on database and return the count in `num_basis`
|
|
+ * - allocate `num_basis` copies of `ex_basis`
|
|
+ * - determine the cardinality of each basis and allocate the array members of each basis
|
|
+ * struct.
|
|
+ * - populate the array members for each basis.
|
|
+ *
|
|
+ * Upon return, the `pbasis` will contain `num_basis` structs fully populated.
|
|
+ */
|
|
+
|
|
+ // TODO: Should all array members of the struct be allocated and initialized to zero, or
|
|
+ // only the members that are actually defined on the database...
|
|
+ EX_FUNC_ENTER();
|
|
+
|
|
+ *num_basis = ex_get_basis_count(exoid);
|
|
+ if (*num_basis == 0) {
|
|
+ EX_FUNC_LEAVE(EX_NOTFOUND);
|
|
+ }
|
|
+
|
|
+ int varid;
|
|
+ int att_count = exi_get_attribute_count(exoid, EX_GLOBAL, 0, &varid);
|
|
+ if (att_count < 0) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Negative attribute count (%d)", att_count);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_INTERNAL);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ if (*pbasis == NULL) {
|
|
+ struct ex_basis *basis = (ex_basis *)calloc(*num_basis, sizeof(struct ex_basis));
|
|
+ *pbasis = basis;
|
|
+ }
|
|
+ struct ex_basis *basis = *pbasis;
|
|
+
|
|
+ // First, iterate through each attribute and get the basis name and cardinality
|
|
+ int count = 0;
|
|
+ for (int att = 0; att < att_count; att++) {
|
|
+ char attr_name[EX_MAX_NAME + 1];
|
|
+ int status;
|
|
+ if ((status = nc_inq_attname(exoid, varid, att, attr_name)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get attribute named %s", attr_name);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ if (strncmp("Basis@", attr_name, 6) != 0) {
|
|
+ continue;
|
|
+ }
|
|
+
|
|
+ const char *basis_type = exi_get_metadata_attribute(attr_name, "Basis@", 6);
|
|
+ if (basis_type != NULL && strcmp(basis_type, "cardinality") == 0) {
|
|
+ /* Get the basis name. We know that the `name` is of the form "Basis@{name}@{item}" */
|
|
+ const char *basis_name = exi_get_attribute_metadata_name(attr_name, 6);
|
|
+ strcpy(basis[count].name, basis_name);
|
|
+
|
|
+ int cardinality = 0;
|
|
+ status = nc_get_att_int(exoid, varid, attr_name, &cardinality);
|
|
+ basis[count].cardinality = cardinality;
|
|
+ count++;
|
|
+ if (count == *num_basis) {
|
|
+ break;
|
|
+ }
|
|
+ continue;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (count != *num_basis) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: Internal error populating basis name and cardinality. Did not find correct "
|
|
+ "number of basis attributes.");
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ ex_initialize_basis_struct(basis, *num_basis, 1);
|
|
+
|
|
+ // Now iterate the attributes again and fully populate the basis struct(s)
|
|
+ for (int att = 0; att < att_count; att++) {
|
|
+ char attr_name[EX_MAX_NAME + 1];
|
|
+ int status;
|
|
+ if ((status = nc_inq_attname(exoid, varid, att, attr_name)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get attribute named %s", attr_name);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ if (strncmp("Basis@", attr_name, 6) != 0) {
|
|
+ continue;
|
|
+ }
|
|
+
|
|
+ const char *basis_type = exi_get_metadata_attribute(attr_name, "Basis@", 6);
|
|
+ if (basis_type != NULL) {
|
|
+ /* Get the basis name. We know that the `name` is of the form "Basis@{name}@{item}" */
|
|
+ const char *basis_name = exi_get_attribute_metadata_name(attr_name, 6);
|
|
+
|
|
+ // There is no guarantee that we will be getting names in the same order as above since
|
|
+ // attributes can be in any order. But, the name and cardinality for each basis will already
|
|
+ // be set, so we just need to find the correct one...
|
|
+ int which = -1;
|
|
+ for (int i = 0; i < *num_basis; i++) {
|
|
+ if (strcmp(basis[i].name, basis_name) == 0) {
|
|
+ which = i;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (which == -1) {
|
|
+ // Internal error...
|
|
+ }
|
|
+
|
|
+ if (strcmp(basis_type, "cardinality") == 0) {
|
|
+ // Cardinality already set; skip
|
|
+ }
|
|
+ else if (strcmp(basis_type, "subc_dim") == 0) {
|
|
+ status = nc_get_att_int(exoid, varid, attr_name, basis[which].subc_dim);
|
|
+ }
|
|
+ else if (status == NC_NOERR && strcmp(basis_type, "subc_ordinal") == 0) {
|
|
+ status = nc_get_att_int(exoid, varid, attr_name, basis[which].subc_ordinal);
|
|
+ }
|
|
+ else if (status == NC_NOERR && strcmp(basis_type, "subc_dof_ordinal") == 0) {
|
|
+ status = nc_get_att_int(exoid, varid, attr_name, basis[which].subc_dof_ordinal);
|
|
+ }
|
|
+ else if (status == NC_NOERR && strcmp(basis_type, "subc_num_dof") == 0) {
|
|
+ status = nc_get_att_int(exoid, varid, attr_name, basis[which].subc_num_dof);
|
|
+ }
|
|
+ else if (status == NC_NOERR && strcmp(basis_type, "xi") == 0) {
|
|
+ status = nc_get_att_double(exoid, varid, attr_name, basis[which].xi);
|
|
+ }
|
|
+ else if (status == NC_NOERR && strcmp(basis_type, "eta") == 0) {
|
|
+ status = nc_get_att_double(exoid, varid, attr_name, basis[which].eta);
|
|
+ }
|
|
+ else if (status == NC_NOERR && strcmp(basis_type, "zeta") == 0) {
|
|
+ status = nc_get_att_double(exoid, varid, attr_name, basis[which].zeta);
|
|
+ }
|
|
+
|
|
+ if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to read Basis %s metadata",
|
|
+ basis[which].name);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ EX_FUNC_LEAVE(EX_NOERR);
|
|
+}
|
|
+
|
|
+int ex_get_quadrature(int exoid, ex_quadrature **pquad, int *num_quad)
|
|
+{
|
|
+ /*
|
|
+ * -- If this function is called and there is no quadrature metadata on the
|
|
+ * entity, it will return EX_NOTFOUND;
|
|
+ *
|
|
+ * -- If there are quadrature defined on the database, it will:
|
|
+ * - determine number of quadrature defined on database and return the count in `num_quad`
|
|
+ * - allocate `num_quad` copies of `ex_quad`
|
|
+ * - determine the cardinality of each quadrature and allocate the array members of each
|
|
+ * quadrature struct.
|
|
+ * - populate the array members for each quadrature.
|
|
+ *
|
|
+ * Upon return, the `pquad` will contain `num_basis` structs fully populated.
|
|
+ */
|
|
+
|
|
+ // TODO: Should all array members of the struct(xi, eta, zeta,
|
|
+ // weight) be allocated and initialized to zero, or only the
|
|
+ // members that are actually defined on the database...
|
|
+ EX_FUNC_ENTER();
|
|
+
|
|
+ *num_quad = ex_get_quadrature_count(exoid);
|
|
+ if (*num_quad == 0) {
|
|
+ EX_FUNC_LEAVE(EX_NOTFOUND);
|
|
+ }
|
|
+
|
|
+ int varid;
|
|
+ int att_count = exi_get_attribute_count(exoid, EX_GLOBAL, 0, &varid);
|
|
+ if (att_count < 0) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Negative attribute count (%d)", att_count);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_INTERNAL);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ if (*pquad == NULL) {
|
|
+ struct ex_quadrature *quad = (ex_quadrature *)calloc(*num_quad, sizeof(struct ex_quadrature));
|
|
+ *pquad = quad;
|
|
+ }
|
|
+ struct ex_quadrature *quad = *pquad;
|
|
+
|
|
+ // First, iterate through each attribute and get the quadrature name and cardinality
|
|
+ int count = 0;
|
|
+ for (int att = 0; att < att_count; att++) {
|
|
+ char attr_name[EX_MAX_NAME + 1];
|
|
+ int status;
|
|
+ if ((status = nc_inq_attname(exoid, varid, att, attr_name)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get attribute named %s", attr_name);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ if (strncmp("Quad@", attr_name, 5) != 0) {
|
|
+ continue;
|
|
+ }
|
|
+
|
|
+ const char *quadrature_type = exi_get_metadata_attribute(attr_name, "Quad@", 5);
|
|
+ if (quadrature_type != NULL && strcmp(quadrature_type, "cardinality") == 0) {
|
|
+ /* Get the quadrature name. We know that the `name` is of the form "Quad@{name}@{item}" */
|
|
+ const char *quadrature_name = exi_get_attribute_metadata_name(attr_name, 5);
|
|
+ strcpy(quad[count].name, quadrature_name);
|
|
+
|
|
+ int cardinality = 0;
|
|
+ status = nc_get_att_int(exoid, varid, attr_name, &cardinality);
|
|
+ quad[count].cardinality = cardinality;
|
|
+ count++;
|
|
+ if (count == *num_quad) {
|
|
+ break;
|
|
+ }
|
|
+ continue;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (count != *num_quad) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: Internal error populating quadrature name and cardinality. Did not find "
|
|
+ "correct number of quadrature attributes.");
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ ex_initialize_quadrature_struct(quad, *num_quad, 1);
|
|
+
|
|
+ // Now iterate the attributes again and fully populate the quadrature struct(s)
|
|
+ for (int att = 0; att < att_count; att++) {
|
|
+ char attr_name[EX_MAX_NAME + 1];
|
|
+ int status;
|
|
+ if ((status = nc_inq_attname(exoid, varid, att, attr_name)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get attribute named %s", attr_name);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ if (strncmp("Quad@", attr_name, 5) != 0) {
|
|
+ continue;
|
|
+ }
|
|
+
|
|
+ const char *quadrature_type = exi_get_metadata_attribute(attr_name, "Quad@", 5);
|
|
+ if (quadrature_type != NULL) {
|
|
+
|
|
+ /* Get the quadrature name. We know that the `name` is of the form "Quad@{name}@{item}" */
|
|
+ const char *quadrature_name = exi_get_attribute_metadata_name(attr_name, 5);
|
|
+
|
|
+ // There is no guarantee that we will be getting names in the same order as above since
|
|
+ // attributes can be in any order. But, the name and cardinality for each quadrature will
|
|
+ // already be set, so we just need to find the correct one...
|
|
+ int which = -1;
|
|
+ for (int i = 0; i < *num_quad; i++) {
|
|
+ if (strcmp(quad[i].name, quadrature_name) == 0) {
|
|
+ which = i;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (which == -1) {
|
|
+ // Internal error...
|
|
+ }
|
|
+
|
|
+ if (strcmp(quadrature_type, "cardinality") == 0) {
|
|
+ // Cardinality already set; skip
|
|
+ }
|
|
+ else if (strcmp(quadrature_type, "xi") == 0) {
|
|
+ status = nc_get_att_double(exoid, varid, attr_name, quad[which].xi);
|
|
+ }
|
|
+ else if (status == NC_NOERR && strcmp(quadrature_type, "eta") == 0) {
|
|
+ status = nc_get_att_double(exoid, varid, attr_name, quad[which].eta);
|
|
+ }
|
|
+ else if (status == NC_NOERR && strcmp(quadrature_type, "zeta") == 0) {
|
|
+ status = nc_get_att_double(exoid, varid, attr_name, quad[which].zeta);
|
|
+ }
|
|
+ else if (status == NC_NOERR && strcmp(quadrature_type, "weight") == 0) {
|
|
+ status = nc_get_att_double(exoid, varid, attr_name, quad[which].weight);
|
|
+ }
|
|
+ // NOTE: Do not put an else since will fall through if the
|
|
+ // arrays are NULL even though quadrature_type is valid.
|
|
+
|
|
+ if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to read Quadrature %s metadata",
|
|
+ quad[which].name);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ EX_FUNC_LEAVE(EX_NOERR);
|
|
+}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_glob_var_time_int.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_glob_var_time_int.c
|
|
index a116962d04..bd4bce3e87 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_glob_var_time_int.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_glob_var_time_int.c
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for ex__comp_ws, EX_FATAL, etc
|
|
+#include "exodusII_int.h" // for exi_comp_ws, EX_FATAL, etc
|
|
|
|
/*!
|
|
The function ex_get_glob_var_time() reads the values of a
|
|
@@ -71,7 +71,7 @@ error = ex_get_glob_var_time(exoid, var_index, beg_time,
|
|
|
|
*/
|
|
|
|
-int ex__get_glob_var_time(int exoid, int glob_var_index, int beg_time_step, int end_time_step,
|
|
+int exi_get_glob_var_time(int exoid, int glob_var_index, int beg_time_step, int end_time_step,
|
|
void *glob_var_vals)
|
|
{
|
|
int status;
|
|
@@ -80,7 +80,7 @@ int ex__get_glob_var_time(int exoid, int glob_var_index, int beg_time_step, int
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -136,7 +136,7 @@ int ex__get_glob_var_time(int exoid, int glob_var_index, int beg_time_step, int
|
|
EX_FUNC_LEAVE(EX_WARN);
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, varid, start, count, glob_var_vals);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_glob_vars_int.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_glob_vars_int.c
|
|
index 556db923b7..021a690040 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_glob_vars_int.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_glob_vars_int.c
|
|
@@ -24,13 +24,13 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for ex__comp_ws, EX_FATAL, etc
|
|
+#include "exodusII_int.h" // for exi_comp_ws, EX_FATAL, etc
|
|
|
|
/*!
|
|
Internal function. Do not use in client code.
|
|
*/
|
|
|
|
-int ex__get_glob_vars(int exoid, int time_step, int num_glob_vars, void *glob_var_vals)
|
|
+int exi_get_glob_vars(int exoid, int time_step, int num_glob_vars, void *glob_var_vals)
|
|
{
|
|
int varid;
|
|
int status;
|
|
@@ -38,7 +38,7 @@ int ex__get_glob_vars(int exoid, int time_step, int num_glob_vars, void *glob_va
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -57,7 +57,7 @@ int ex__get_glob_vars(int exoid, int time_step, int num_glob_vars, void *glob_va
|
|
count[0] = 1;
|
|
count[1] = num_glob_vars;
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, varid, start, count, glob_var_vals);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_group_id.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_group_id.c
|
|
index d98c8ca401..d515edfdeb 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_group_id.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_group_id.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -23,12 +23,15 @@ int ex_get_group_id(int parent_id, const char *group_name, int *group_id)
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
#if NC_HAS_HDF5
|
|
EX_FUNC_ENTER();
|
|
- /* See if name contains "/" indicating it is a full path name... */
|
|
- if (group_name == NULL) {
|
|
+ /* If the `group_name` is NULL, or is the single character '/', then
|
|
+ * return the root id.
|
|
+ */
|
|
+ if (group_name == NULL || (group_name[0] == '/' && group_name[1] == '\0')) {
|
|
/* Return root */
|
|
*group_id = (unsigned)parent_id & EX_FILE_ID_MASK;
|
|
}
|
|
- else if (strchr(group_name, '/') == NULL) {
|
|
+ /* If the name does not start with "/" then it is a relative name from current location... */
|
|
+ else if (group_name[0] != '/') {
|
|
/* Local child */
|
|
int status = nc_inq_grp_ncid(parent_id, group_name, group_id);
|
|
if (status != NC_NOERR) {
|
|
@@ -37,17 +40,20 @@ int ex_get_group_id(int parent_id, const char *group_name, int *group_id)
|
|
"group in file id %d",
|
|
group_name, parent_id);
|
|
ex_err_fn(parent_id, __func__, errmsg, status);
|
|
+ *group_id = 0;
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
else {
|
|
/* Full path name */
|
|
- int status = nc_inq_grp_full_ncid(parent_id, group_name, group_id);
|
|
+ int rootid = parent_id & EX_FILE_ID_MASK;
|
|
+ int status = nc_inq_grp_full_ncid(rootid, group_name, group_id);
|
|
if (status != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: Failed to locate group with full path name %s in file id %d", group_name,
|
|
parent_id);
|
|
ex_err_fn(parent_id, __func__, errmsg, status);
|
|
+ *group_id = 0;
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
@@ -61,6 +67,7 @@ int ex_get_group_id(int parent_id, const char *group_name, int *group_id)
|
|
"ERROR: Group capabilities are not available in this netcdf "
|
|
"version--not netcdf4");
|
|
ex_err_fn(parent_id, __func__, errmsg, NC_ENOTNC4);
|
|
+ *group_id = 0;
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
#endif
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_group_ids.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_group_ids.c
|
|
index 8cf88742eb..64ca846b29 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_group_ids.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_group_ids.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -10,7 +10,8 @@
|
|
#include "exodusII_int.h" // for EX_FATAL, EX_NOERR
|
|
|
|
/**
|
|
- * \ingroup Utilities Given a file or group 'parent' id, return the
|
|
+ * \ingroup Utilities
|
|
+ * Given a file or group 'parent' id, return the
|
|
* number of child groups and the ids of the child groups below the
|
|
* parent. If num_groups is NULL, do not return count; if group_ids
|
|
* is NULL, do not return ids.
|
|
@@ -23,7 +24,7 @@ int ex_get_group_ids(int parent_id, int *num_groups, int *group_ids)
|
|
int status;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(parent_id, __func__) != EX_NOERR) {
|
|
+ if (exi_check_valid_file_id(parent_id, __func__) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_id_map.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_id_map.c
|
|
index 169a18b4d5..21c2bd8de2 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_id_map.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_id_map.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -28,16 +28,14 @@
|
|
|
|
int ex_get_id_map(int exoid, ex_entity_type map_type, void_int *map)
|
|
{
|
|
- int dimid, mapid, status;
|
|
- size_t i;
|
|
- size_t num_entries;
|
|
+ int status;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
const char *dnumentries;
|
|
const char *vmap;
|
|
const char *tname;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -70,11 +68,14 @@ int ex_get_id_map(int exoid, ex_entity_type map_type, void_int *map)
|
|
}
|
|
|
|
/* See if any entries are stored in this file */
|
|
+ int dimid;
|
|
if (nc_inq_dimid(exoid, dnumentries, &dimid) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
}
|
|
|
|
+ int mapid;
|
|
if (nc_inq_varid(exoid, vmap, &mapid) != NC_NOERR) {
|
|
+ size_t num_entries;
|
|
if ((status = nc_inq_dimlen(exoid, dimid, &num_entries)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of %ss in file id %d", tname,
|
|
exoid);
|
|
@@ -85,13 +86,13 @@ int ex_get_id_map(int exoid, ex_entity_type map_type, void_int *map)
|
|
/* generate default map of 1..n, where n is num_entries */
|
|
if (ex_int64_status(exoid) & EX_MAPS_INT64_API) {
|
|
int64_t *lmap = (int64_t *)map;
|
|
- for (i = 0; i < num_entries; i++) {
|
|
+ for (size_t i = 0; i < num_entries; i++) {
|
|
lmap[i] = i + 1;
|
|
}
|
|
}
|
|
else {
|
|
int *lmap = (int *)map;
|
|
- for (i = 0; i < num_entries; i++) {
|
|
+ for (size_t i = 0; i < num_entries; i++) {
|
|
lmap[i] = i + 1;
|
|
}
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_ids.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_ids.c
|
|
index a9aa66f295..a828ec0c48 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_ids.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_ids.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -27,11 +27,9 @@ struct ncvar
|
|
|
|
static int ex_get_nonstandard_ids(int exoid, ex_entity_type obj_type, void_int *ids)
|
|
{
|
|
- int status;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
|
|
int64_t count = 0;
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
if (file) {
|
|
if (obj_type == EX_ASSEMBLY) {
|
|
count = file->assembly_count;
|
|
@@ -48,6 +46,11 @@ static int ex_get_nonstandard_ids(int exoid, ex_entity_type obj_type, void_int *
|
|
int num_found = 0;
|
|
struct ncvar var;
|
|
int nvars;
|
|
+ int rootid = exoid & EX_FILE_ID_MASK;
|
|
+ int root_var_count = 0;
|
|
+ if (rootid != exoid) {
|
|
+ nc_inq(rootid, NULL, &root_var_count, NULL, NULL);
|
|
+ }
|
|
nc_inq(exoid, NULL, &nvars, NULL, NULL);
|
|
char *type = NULL;
|
|
if (obj_type == EX_ASSEMBLY) {
|
|
@@ -57,9 +60,11 @@ static int ex_get_nonstandard_ids(int exoid, ex_entity_type obj_type, void_int *
|
|
type = "blob_entity";
|
|
}
|
|
|
|
- for (int varid = 0; varid < nvars; varid++) {
|
|
+ for (int varid = root_var_count; varid < nvars + root_var_count; varid++) {
|
|
+ int status;
|
|
if ((status = nc_inq_var(exoid, varid, var.name, &var.type, &var.ndims, var.dims,
|
|
&var.natts)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get variable parameters in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -81,6 +86,7 @@ static int ex_get_nonstandard_ids(int exoid, ex_entity_type obj_type, void_int *
|
|
break;
|
|
}
|
|
if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get %s ids in file id %d",
|
|
ex_name_of_object(obj_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -94,13 +100,13 @@ static int ex_get_nonstandard_ids(int exoid, ex_entity_type obj_type, void_int *
|
|
|
|
int ex_get_ids(int exoid, ex_entity_type obj_type, void_int *ids)
|
|
{
|
|
- int varid, status;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
+ int varid = 0;
|
|
+ int status = 0;
|
|
|
|
- const char *varidobj;
|
|
+ const char *varidobj = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -124,13 +130,17 @@ int ex_get_ids(int exoid, ex_entity_type obj_type, void_int *ids)
|
|
case EX_FACE_MAP: varidobj = VAR_FAM_PROP(1); break;
|
|
case EX_ELEM_MAP: varidobj = VAR_EM_PROP(1); break;
|
|
default: /* invalid variable type */
|
|
+ {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Invalid type specified in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
+ }
|
|
|
|
/* Determine if there are any 'obj-type' objects */
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(obj_type), &varid)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(obj_type), &varid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: no %s defined in file id %d",
|
|
ex_name_of_object(obj_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -139,6 +149,7 @@ int ex_get_ids(int exoid, ex_entity_type obj_type, void_int *ids)
|
|
|
|
/* inquire id's of previously defined dimensions and variables */
|
|
if ((status = nc_inq_varid(exoid, varidobj, &varid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s ids variable in file id %d",
|
|
ex_name_of_object(obj_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -154,6 +165,7 @@ int ex_get_ids(int exoid, ex_entity_type obj_type, void_int *ids)
|
|
}
|
|
|
|
if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to return %s ids in file id %d",
|
|
ex_name_of_object(obj_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_info.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_info.c
|
|
index 46387b3cbb..5c9d7e2d25 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_info.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_info.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__trim, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_trim, etc
|
|
|
|
/*!
|
|
\ingroup Utilities
|
|
@@ -47,28 +47,27 @@ error = ex_get_info (exoid, info);
|
|
|
|
int ex_get_info(int exoid, char **info)
|
|
{
|
|
- int status;
|
|
- size_t i;
|
|
- int dimid, varid;
|
|
- size_t num_info, start[2], count[2];
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
- int rootid = exoid & EX_FILE_ID_MASK;
|
|
+ int status;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* inquire previously defined dimensions and variables */
|
|
+ int rootid = exoid & EX_FILE_ID_MASK;
|
|
+ int dimid;
|
|
if ((status = nc_inq_dimid(rootid, DIM_NUM_INFO, &dimid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"Warning: failed to locate number of info records in file id %d", rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_WARN);
|
|
}
|
|
|
|
+ size_t num_info;
|
|
if ((status = nc_inq_dimlen(rootid, dimid, &num_info)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of info records in file id %d",
|
|
rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -77,7 +76,9 @@ int ex_get_info(int exoid, char **info)
|
|
|
|
/* do this only if there are any information records */
|
|
if (num_info > 0) {
|
|
+ int varid;
|
|
if ((status = nc_inq_varid(rootid, VAR_INFO, &varid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate info record data in file id %d",
|
|
rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -85,20 +86,19 @@ int ex_get_info(int exoid, char **info)
|
|
}
|
|
|
|
/* read the information records */
|
|
- for (i = 0; i < num_info; i++) {
|
|
- start[0] = i;
|
|
- count[0] = 1;
|
|
- start[1] = 0;
|
|
- count[1] = MAX_LINE_LENGTH + 1;
|
|
+ for (size_t i = 0; i < num_info; i++) {
|
|
+ size_t start[] = {i, 0};
|
|
+ size_t count[] = {1, MAX_LINE_LENGTH + 1};
|
|
|
|
if ((status = nc_get_vara_text(rootid, varid, start, count, info[i])) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get info record data in file id %d",
|
|
rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
info[i][MAX_LINE_LENGTH] = '\0';
|
|
- ex__trim(info[i]);
|
|
+ exi_trim(info[i]);
|
|
}
|
|
}
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_init.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_init.c
|
|
index caad631599..aa8dc5aa0a 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_init.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_init.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -34,7 +34,7 @@
|
|
/*!
|
|
\ingroup ModelDescription
|
|
|
|
-The function ex_get_init() reads the initializationinitialization
|
|
+The function ex_get_init() reads the initialization
|
|
parameters from an opened exodus file.
|
|
|
|
\return In case of an error, ex_get_init() returns a negative number;
|
|
@@ -79,7 +79,7 @@ int ex_get_init(int exoid, char *title, void_int *num_dim, void_int *num_nodes,
|
|
int errval;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -112,12 +112,12 @@ int ex_get_init(int exoid, char *title, void_int *num_dim, void_int *num_nodes,
|
|
int *n_node_sets = num_node_sets;
|
|
int *n_side_sets = num_side_sets;
|
|
|
|
- *n_dim = info.num_dim;
|
|
- *n_nodes = info.num_nodes;
|
|
- *n_elem = info.num_elem;
|
|
- *n_elem_blk = info.num_elem_blk;
|
|
- *n_node_sets = info.num_node_sets;
|
|
- *n_side_sets = info.num_side_sets;
|
|
+ *n_dim = (int)info.num_dim;
|
|
+ *n_nodes = (int)info.num_nodes;
|
|
+ *n_elem = (int)info.num_elem;
|
|
+ *n_elem_blk = (int)info.num_elem_blk;
|
|
+ *n_node_sets = (int)info.num_node_sets;
|
|
+ *n_side_sets = (int)info.num_side_sets;
|
|
}
|
|
ex_copy_string(title, info.title, MAX_LINE_LENGTH + 1);
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_init_ext.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_init_ext.c
|
|
index 91e6cb2315..2dcb5d7ed3 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_init_ext.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_init_ext.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022, 2024, 2025 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -24,14 +24,25 @@
|
|
#include "exodusII.h" // for ex_init_params, etc
|
|
#include "exodusII_int.h" // for EX_FATAL, EX_NOERR, etc
|
|
|
|
-static void ex__get_entity_count(int exoid, ex_init_params *info)
|
|
+static void exi_get_entity_count(int exoid, ex_init_params *info)
|
|
{
|
|
- int ndims;
|
|
+ int ndims = 0;
|
|
+#if NC_HAS_HDF5
|
|
+ int include_parent_group = 0; // Only want dims in current group
|
|
+ nc_inq_dimids(exoid, &ndims, NULL, include_parent_group);
|
|
+ int *dimids = calloc(ndims, sizeof(int));
|
|
+ nc_inq_dimids(exoid, &ndims, dimids, include_parent_group);
|
|
+#else
|
|
nc_inq(exoid, &ndims, NULL, NULL, NULL);
|
|
+#endif
|
|
for (int dimid = 0; dimid < ndims; dimid++) {
|
|
- char dim_nm[NC_MAX_NAME];
|
|
+ char dim_nm[EX_MAX_NAME + 1] = {'\0'};
|
|
size_t dim_sz;
|
|
+#if NC_HAS_HDF5
|
|
+ nc_inq_dim(exoid, dimids[dimid], dim_nm, &dim_sz);
|
|
+#else
|
|
nc_inq_dim(exoid, dimid, dim_nm, &dim_sz);
|
|
+#endif
|
|
/* For assemblies, we check for a dim starting with "num_entity_assembly" */
|
|
if (strncmp(dim_nm, "num_entity_assembly", 19) == 0) {
|
|
info->num_assembly++;
|
|
@@ -40,30 +51,32 @@ static void ex__get_entity_count(int exoid, ex_init_params *info)
|
|
info->num_blob++;
|
|
}
|
|
}
|
|
+#if NC_HAS_HDF5
|
|
+ free(dimids);
|
|
+#endif
|
|
}
|
|
|
|
/* Used to reduce repeated code below */
|
|
static int ex_get_dim_value(int exoid, const char *name, const char *dimension_name, int dimension,
|
|
int64_t *value)
|
|
{
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int status;
|
|
-
|
|
- if ((status = nc_inq_dimid(exoid, dimension_name, &dimension)) != NC_NOERR) {
|
|
+ if (nc_inq_dimid(exoid, dimension_name, &dimension) != NC_NOERR) {
|
|
/* optional and default to zero. */
|
|
*value = 0;
|
|
}
|
|
else {
|
|
size_t tmp;
|
|
+ int status;
|
|
if ((status = nc_inq_dimlen(exoid, dimension, &tmp)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of %s in file id %d", name,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*value = tmp;
|
|
}
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
/*!
|
|
@@ -76,16 +89,8 @@ static int ex_get_dim_value(int exoid, const char *name, const char *dimension_n
|
|
|
|
int ex_get_init_ext(int exoid, ex_init_params *info)
|
|
{
|
|
- int dimid = 0;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int status = 0;
|
|
- size_t title_len = 0;
|
|
- nc_type title_type = 0;
|
|
-
|
|
- int rootid = exoid & EX_FILE_ID_MASK;
|
|
-
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -109,7 +114,7 @@ int ex_get_init_ext(int exoid, ex_init_params *info)
|
|
info->num_assembly = 0;
|
|
info->num_blob = 0;
|
|
|
|
- dimid = 0;
|
|
+ int dimid = 0;
|
|
if (ex_get_dim_value(exoid, "dimension count", DIM_NUM_DIM, dimid, &info->num_dim) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -118,7 +123,7 @@ int ex_get_init_ext(int exoid, ex_init_params *info)
|
|
}
|
|
|
|
/* Counts for assemblies and blobs */
|
|
- ex__get_entity_count(exoid, info);
|
|
+ exi_get_entity_count(exoid, info);
|
|
|
|
if (ex_get_dim_value(exoid, "edges", DIM_NUM_EDGE, dimid, &info->num_edge) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -135,6 +140,7 @@ int ex_get_init_ext(int exoid, ex_init_params *info)
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
if (info->num_elem_blk == 0 && info->num_elem > 0) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to locate number of element blocks in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
@@ -180,39 +186,41 @@ int ex_get_init_ext(int exoid, ex_init_params *info)
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if ((status = nc_inq_att(rootid, NC_GLOBAL, ATT_TITLE, &title_type, &title_len)) != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "Warning: no title in file id %d", rootid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- }
|
|
-
|
|
- /* Check title length to avoid overrunning clients memory space; include
|
|
- * trailing null */
|
|
- if (title_len > 0) {
|
|
- if (title_len > MAX_LINE_LENGTH) {
|
|
- char *title = malloc(title_len + 1);
|
|
- if ((status = nc_get_att_text(rootid, NC_GLOBAL, ATT_TITLE, title)) == NC_NOERR) {
|
|
- ex_copy_string(info->title, title, MAX_LINE_LENGTH + 1);
|
|
- info->title[MAX_LINE_LENGTH] = '\0';
|
|
+ int rootid = exoid & EX_FILE_ID_MASK;
|
|
+ int status;
|
|
+ size_t title_len = 0;
|
|
+ nc_type title_type = 0;
|
|
+ if ((status = nc_inq_att(rootid, NC_GLOBAL, ATT_TITLE, &title_type, &title_len)) == NC_NOERR) {
|
|
+ /* Check title length to avoid overrunning clients memory space; include
|
|
+ * trailing null */
|
|
+ if (title_len > 0) {
|
|
+ if (title_len > MAX_LINE_LENGTH) {
|
|
+ char *title = malloc(title_len + 1);
|
|
+ if ((status = nc_get_att_text(rootid, NC_GLOBAL, ATT_TITLE, title)) == NC_NOERR) {
|
|
+ ex_copy_string(info->title, title, MAX_LINE_LENGTH + 1);
|
|
+ info->title[MAX_LINE_LENGTH] = '\0';
|
|
+ }
|
|
+ free(title);
|
|
+ }
|
|
+ else {
|
|
+ status = nc_get_att_text(rootid, NC_GLOBAL, ATT_TITLE, info->title);
|
|
+ info->title[title_len] = '\0';
|
|
+ }
|
|
+ if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get title in file id %d", rootid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- free(title);
|
|
- }
|
|
- else {
|
|
- status = nc_get_att_text(rootid, NC_GLOBAL, ATT_TITLE, info->title);
|
|
- info->title[title_len] = '\0';
|
|
- }
|
|
- if (status != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get title in file id %d", rootid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
else {
|
|
info->title[0] = '\0';
|
|
}
|
|
|
|
- /* Update settings in ex__file_item struct */
|
|
+ /* Update settings in exi_file_item struct */
|
|
{
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
if (file) {
|
|
file->has_nodes = info->num_nodes > 0;
|
|
file->has_edges = info->num_edge > 0;
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_init_global.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_init_global.c
|
|
index 0d1714f2b6..67264487c8 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_init_global.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_init_global.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -36,8 +36,6 @@
|
|
static int ex_get_dim_value(int exoid, const char *name, const char *dimension_name, int dimension,
|
|
size_t *value)
|
|
{
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int status;
|
|
|
|
if (nc_inq_dimid(exoid, dimension_name, &dimension) != NC_NOERR) {
|
|
/* optional and default to zero. */
|
|
@@ -45,15 +43,17 @@ static int ex_get_dim_value(int exoid, const char *name, const char *dimension_n
|
|
}
|
|
else {
|
|
size_t tmp;
|
|
+ int status;
|
|
if ((status = nc_inq_dimlen(exoid, dimension, &tmp)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of %s in file id %d", name,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*value = tmp;
|
|
}
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
/*!
|
|
@@ -64,36 +64,39 @@ int ex_get_init_global(int exoid, void_int *num_nodes_g, void_int *num_elems_g,
|
|
void_int *num_elem_blks_g, void_int *num_node_sets_g,
|
|
void_int *num_side_sets_g)
|
|
{
|
|
- int dimid;
|
|
- size_t nng, neg, nebg, nnsg, nssg;
|
|
-
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Check the file version information */
|
|
- if ((dimid = ne__check_file_version(exoid)) != EX_NOERR) {
|
|
+ int dimid;
|
|
+ if ((dimid = nei_check_file_version(exoid)) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(dimid);
|
|
}
|
|
|
|
+ size_t nng;
|
|
if (ex_get_dim_value(exoid, "global nodes", DIM_NUM_NODES_GLOBAL, dimid, &nng) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ size_t neg;
|
|
if (ex_get_dim_value(exoid, "global elements", DIM_NUM_ELEMS_GLOBAL, dimid, &neg) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ size_t nebg;
|
|
if (ex_get_dim_value(exoid, "global element blocks", DIM_NUM_ELBLK_GLOBAL, dimid, &nebg) !=
|
|
EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ size_t nnsg;
|
|
if (ex_get_dim_value(exoid, "global node sets", DIM_NUM_NS_GLOBAL, dimid, &nnsg) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ size_t nssg;
|
|
if (ex_get_dim_value(exoid, "global side sets", DIM_NUM_SS_GLOBAL, dimid, &nssg) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_init_info.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_init_info.c
|
|
index 78ca31afaf..ca69f4a433 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_init_info.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_init_info.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -39,7 +39,7 @@ int ex_get_init_info(int exoid, int *num_proc, int *num_proc_in_f, char *ftype)
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -48,14 +48,14 @@ int ex_get_init_info(int exoid, int *num_proc, int *num_proc_in_f, char *ftype)
|
|
*num_proc_in_f = 1;
|
|
|
|
/* Get the file type */
|
|
- if (ex__get_file_type(exoid, ftype) != EX_NOERR) {
|
|
+ if (exi_get_file_type(exoid, ftype) != EX_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get file type for file ID %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_LASTERR);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if ((status = nc_inq_dimid(exoid, DIM_NUM_PROCS, &dimid)) != NC_NOERR) {
|
|
+ if (nc_inq_dimid(exoid, DIM_NUM_PROCS, &dimid) != NC_NOERR) {
|
|
/* This isn't a parallel file. Just return now with no error, but with num_proc and
|
|
* num_proc_in_f set to 1 */
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_loadbal_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_loadbal_param.c
|
|
index 3fd7dc5774..0795dc6ce6 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_loadbal_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_loadbal_param.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -48,7 +48,7 @@ int ex_get_loadbal_param(int exoid, void_int *num_int_nodes, void_int *num_bor_n
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -72,12 +72,12 @@ int ex_get_loadbal_param(int exoid, void_int *num_int_nodes, void_int *num_bor_n
|
|
}
|
|
|
|
/* Check the file version information */
|
|
- if ((dimid = ne__check_file_version(exoid)) != EX_NOERR) {
|
|
+ if ((dimid = nei_check_file_version(exoid)) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(dimid);
|
|
}
|
|
|
|
/* Get the file type */
|
|
- if (ex__get_file_type(exoid, ftype) != EX_NOERR) {
|
|
+ if (exi_get_file_type(exoid, ftype) != EX_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unable to find file type for file ID %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_LASTERR);
|
|
|
|
@@ -479,7 +479,7 @@ int ex_get_loadbal_param(int exoid, void_int *num_int_nodes, void_int *num_bor_n
|
|
/* check if I need to get the dimension of the elemental comm map */
|
|
if (varidx[1] == -1) {
|
|
/* Get the elemental comm map information */
|
|
- if ((status = nc_inq_dimid(exoid, DIM_NUM_E_CMAPS, &dimid)) != NC_NOERR) {
|
|
+ if (nc_inq_dimid(exoid, DIM_NUM_E_CMAPS, &dimid) != NC_NOERR) {
|
|
varidx[1] = 0;
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_map.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_map.c
|
|
index 96ebafb6b8..151bcac061 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_map.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_map.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -43,40 +43,42 @@ error = ex_get_map(exoid, elem_map);
|
|
|
|
int ex_get_map(int exoid, void_int *elem_map)
|
|
{
|
|
- int numelemdim, mapid, status;
|
|
- size_t num_elem, i;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
+ int status;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* inquire id's of previously defined dimensions and variables */
|
|
|
|
/* See if file contains any elements...*/
|
|
- if ((status = nc_inq_dimid(exoid, DIM_NUM_ELEM, &numelemdim)) != NC_NOERR) {
|
|
+ int numelemdim;
|
|
+ if (nc_inq_dimid(exoid, DIM_NUM_ELEM, &numelemdim) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
}
|
|
|
|
+ size_t num_elem;
|
|
if ((status = nc_inq_dimlen(exoid, numelemdim, &num_elem)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of elements in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ int mapid;
|
|
if (nc_inq_varid(exoid, VAR_MAP, &mapid) != NC_NOERR) {
|
|
/* generate default map of 1..n, where n is num_elem */
|
|
if (ex_int64_status(exoid) & EX_MAPS_INT64_API) {
|
|
int64_t *lmap = (int64_t *)elem_map;
|
|
- for (i = 0; i < num_elem; i++) {
|
|
+ for (size_t i = 0; i < num_elem; i++) {
|
|
lmap[i] = i + 1;
|
|
}
|
|
}
|
|
else {
|
|
int *lmap = (int *)elem_map;
|
|
- for (i = 0; i < num_elem; i++) {
|
|
+ for (size_t i = 0; i < num_elem; i++) {
|
|
lmap[i] = i + 1;
|
|
}
|
|
}
|
|
@@ -93,6 +95,7 @@ int ex_get_map(int exoid, void_int *elem_map)
|
|
}
|
|
|
|
if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get element order map in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_map_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_map_param.c
|
|
index 0b67ff5be5..1623b7eb94 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_map_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_map_param.c
|
|
@@ -36,7 +36,7 @@ int ex_get_map_param(int exoid, int *num_node_maps, int *num_elem_maps)
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_name.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_name.c
|
|
index fa259bbc45..33b7b141e4 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_name.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_name.c
|
|
@@ -32,16 +32,13 @@
|
|
|
|
int ex_get_name(int exoid, ex_entity_type obj_type, ex_entity_id entity_id, char *name)
|
|
{
|
|
- int status;
|
|
- int varid, ent_ndx;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- char *vobj = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ char *vobj = NULL;
|
|
switch (obj_type) {
|
|
case EX_ASSEMBLY: {
|
|
ex_assembly assembly = {entity_id, name};
|
|
@@ -59,18 +56,21 @@ int ex_get_name(int exoid, ex_entity_type obj_type, ex_entity_id entity_id, char
|
|
case EX_EDGE_MAP: vobj = VAR_NAME_EDM; break;
|
|
case EX_FACE_MAP: vobj = VAR_NAME_FAM; break;
|
|
case EX_ELEM_MAP: vobj = VAR_NAME_EM; break;
|
|
- default:
|
|
+ default: {
|
|
/* invalid variable type */
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Invalid type specified in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
+ }
|
|
|
|
- if ((status = nc_inq_varid(exoid, vobj, &varid)) == NC_NOERR) {
|
|
+ int varid;
|
|
+ if (nc_inq_varid(exoid, vobj, &varid) == NC_NOERR) {
|
|
/* If this is a null entity, then 'ent_ndx' will be negative.
|
|
* We don't care in this __func__, so make it positive and continue...
|
|
*/
|
|
- ent_ndx = ex__id_lkup(exoid, obj_type, entity_id);
|
|
+ int ent_ndx = exi_id_lkup(exoid, obj_type, entity_id);
|
|
if (ent_ndx < 0) {
|
|
ent_ndx = -ent_ndx;
|
|
}
|
|
@@ -81,7 +81,7 @@ int ex_get_name(int exoid, ex_entity_type obj_type, ex_entity_id entity_id, char
|
|
int api_name_size = ex_inquire_int(exoid, EX_INQ_MAX_READ_NAME_LENGTH);
|
|
int name_size = db_name_size < api_name_size ? db_name_size : api_name_size;
|
|
|
|
- status = ex__get_name(exoid, varid, ent_ndx - 1, name, name_size, obj_type, __func__);
|
|
+ int status = exi_get_name(exoid, varid, ent_ndx - 1, name, name_size, obj_type, __func__);
|
|
if (status != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_names.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_names.c
|
|
index 5557338a9b..72e239f802 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_names.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_names.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -23,7 +23,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for ex__get_dimension, EX_NOERR, etc
|
|
+#include "exodusII_int.h" // for exi_get_dimension, EX_NOERR, etc
|
|
|
|
/*
|
|
* reads the entity names from the database
|
|
@@ -31,17 +31,14 @@
|
|
|
|
int ex_get_names(int exoid, ex_entity_type obj_type, char **names)
|
|
{
|
|
- int status;
|
|
- int varid, temp;
|
|
- size_t num_entity, i;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- /* inquire previously defined dimensions and variables */
|
|
+ int status;
|
|
+ int varid, temp;
|
|
+ size_t num_entity;
|
|
|
|
switch (obj_type) {
|
|
/* ======== ASSEMBLY ========= */
|
|
@@ -53,7 +50,7 @@ int ex_get_names(int exoid, ex_entity_type obj_type, char **names)
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to inquire ASSEMBLY count in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, num_assembly);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
|
|
@@ -78,67 +75,69 @@ int ex_get_names(int exoid, ex_entity_type obj_type, char **names)
|
|
}
|
|
/* ======== BLOCKS ========= */
|
|
case EX_EDGE_BLOCK:
|
|
- ex__get_dimension(exoid, DIM_NUM_ED_BLK, "edge block", &num_entity, &temp, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_ED_BLK, "edge block", &num_entity, &temp, __func__);
|
|
status = nc_inq_varid(exoid, VAR_NAME_ED_BLK, &varid);
|
|
break;
|
|
case EX_FACE_BLOCK:
|
|
- ex__get_dimension(exoid, DIM_NUM_FA_BLK, "face block", &num_entity, &temp, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_FA_BLK, "face block", &num_entity, &temp, __func__);
|
|
status = nc_inq_varid(exoid, VAR_NAME_FA_BLK, &varid);
|
|
break;
|
|
case EX_ELEM_BLOCK:
|
|
- ex__get_dimension(exoid, DIM_NUM_EL_BLK, "element block", &num_entity, &temp, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_EL_BLK, "element block", &num_entity, &temp, __func__);
|
|
status = nc_inq_varid(exoid, VAR_NAME_EL_BLK, &varid);
|
|
break;
|
|
|
|
/* ======== SETS ========= */
|
|
case EX_NODE_SET:
|
|
- ex__get_dimension(exoid, DIM_NUM_NS, "nodeset", &num_entity, &temp, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_NS, "nodeset", &num_entity, &temp, __func__);
|
|
status = nc_inq_varid(exoid, VAR_NAME_NS, &varid);
|
|
break;
|
|
case EX_EDGE_SET:
|
|
- ex__get_dimension(exoid, DIM_NUM_ES, "edgeset", &num_entity, &temp, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_ES, "edgeset", &num_entity, &temp, __func__);
|
|
status = nc_inq_varid(exoid, VAR_NAME_ES, &varid);
|
|
break;
|
|
case EX_FACE_SET:
|
|
- ex__get_dimension(exoid, DIM_NUM_FS, "faceset", &num_entity, &temp, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_FS, "faceset", &num_entity, &temp, __func__);
|
|
status = nc_inq_varid(exoid, VAR_NAME_FS, &varid);
|
|
break;
|
|
case EX_SIDE_SET:
|
|
- ex__get_dimension(exoid, DIM_NUM_SS, "sideset", &num_entity, &temp, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_SS, "sideset", &num_entity, &temp, __func__);
|
|
status = nc_inq_varid(exoid, VAR_NAME_SS, &varid);
|
|
break;
|
|
case EX_ELEM_SET:
|
|
- ex__get_dimension(exoid, DIM_NUM_ELS, "elemset", &num_entity, &temp, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_ELS, "elemset", &num_entity, &temp, __func__);
|
|
status = nc_inq_varid(exoid, VAR_NAME_ELS, &varid);
|
|
break;
|
|
|
|
/* ======== MAPS ========= */
|
|
case EX_NODE_MAP:
|
|
- ex__get_dimension(exoid, DIM_NUM_NM, "node map", &num_entity, &temp, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_NM, "node map", &num_entity, &temp, __func__);
|
|
status = nc_inq_varid(exoid, VAR_NAME_NM, &varid);
|
|
break;
|
|
case EX_EDGE_MAP:
|
|
- ex__get_dimension(exoid, DIM_NUM_EDM, "edge map", &num_entity, &temp, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_EDM, "edge map", &num_entity, &temp, __func__);
|
|
status = nc_inq_varid(exoid, VAR_NAME_EDM, &varid);
|
|
break;
|
|
case EX_FACE_MAP:
|
|
- ex__get_dimension(exoid, DIM_NUM_FAM, "face map", &num_entity, &temp, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_FAM, "face map", &num_entity, &temp, __func__);
|
|
status = nc_inq_varid(exoid, VAR_NAME_FAM, &varid);
|
|
break;
|
|
case EX_ELEM_MAP:
|
|
- ex__get_dimension(exoid, DIM_NUM_EM, "element map", &num_entity, &temp, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_EM, "element map", &num_entity, &temp, __func__);
|
|
status = nc_inq_varid(exoid, VAR_NAME_EM, &varid);
|
|
break;
|
|
|
|
/* invalid variable type */
|
|
- default:
|
|
+ default: {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Invalid type specified in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
+ }
|
|
|
|
if (status == NC_NOERR) {
|
|
- if ((status = ex__get_names(exoid, varid, num_entity, names, obj_type, "ex_get_names")) !=
|
|
+ if ((status = exi_get_names(exoid, varid, num_entity, names, obj_type, "ex_get_names")) !=
|
|
EX_NOERR) {
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
@@ -147,7 +146,7 @@ int ex_get_names(int exoid, ex_entity_type obj_type, char **names)
|
|
/* Names variable does not exist on the database; probably since this is an
|
|
* older version of the database. Return an empty array...
|
|
*/
|
|
- for (i = 0; i < num_entity; i++) {
|
|
+ for (size_t i = 0; i < num_entity; i++) {
|
|
names[i][0] = '\0';
|
|
}
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_nodal_var_time_int.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_nodal_var_time_int.c
|
|
index 2749a7fa67..cd001d7aed 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_nodal_var_time_int.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_nodal_var_time_int.c
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_WARN, ex__comp_ws, etc
|
|
+#include "exodusII_int.h" // for EX_WARN, exi_comp_ws, etc
|
|
|
|
/*!
|
|
The function ex_get_nodal_var_time() reads the values of a nodal
|
|
@@ -78,7 +78,7 @@ error = ex_get_var_time(exoid, EX_NODAL, var_index, node_num, beg_time,
|
|
~~~
|
|
*/
|
|
|
|
-int ex__get_nodal_var_time(int exoid, int nodal_var_index, int64_t node_number, int beg_time_step,
|
|
+int exi_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)
|
|
{
|
|
int status;
|
|
@@ -87,7 +87,7 @@ int ex__get_nodal_var_time(int exoid, int nodal_var_index, int64_t node_number,
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
/* Check that times are in range */
|
|
@@ -170,7 +170,7 @@ int ex__get_nodal_var_time(int exoid, int nodal_var_index, int64_t node_number,
|
|
count[1] = 1;
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, varid, start, count, nodal_var_vals);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_node_cmap.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_node_cmap.c
|
|
index de65827e41..9a989dd337 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_node_cmap.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_node_cmap.c
|
|
@@ -38,7 +38,7 @@ int ex_get_node_cmap(int exoid, ex_entity_id map_id, void_int *node_ids, void_in
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -53,11 +53,11 @@ int ex_get_node_cmap(int exoid, ex_entity_id map_id, void_int *node_ids, void_in
|
|
|
|
/*
|
|
* no need to check if the second index is -1 that is handled
|
|
- * in ne__id_lkup, where the dimension must be looked up anyways
|
|
+ * in nei_id_lkup, where the dimension must be looked up anyways
|
|
*/
|
|
|
|
/* Get the index of the nodal comm map with the given ID */
|
|
- if ((map_idx = ne__id_lkup(exoid, VAR_N_COMM_IDS, varidx, map_id)) < 0) {
|
|
+ if ((map_idx = nei_id_lkup(exoid, VAR_N_COMM_IDS, varidx, map_id)) < 0) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to find nodal comm map with ID %" PRId64 " in file ID %d", map_id,
|
|
exoid);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_ns_param_global.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_ns_param_global.c
|
|
index cc9f54eb9c..2014ca5b21 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_ns_param_global.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_ns_param_global.c
|
|
@@ -35,7 +35,7 @@ int ex_get_ns_param_global(int exoid, void_int *global_ids, void_int *node_cnts,
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_num_map.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_num_map.c
|
|
index f7f7a493ae..0f81f29bcd 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_num_map.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_num_map.c
|
|
@@ -38,7 +38,7 @@ int ex_get_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, void
|
|
const char *dim_num_maps;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -79,7 +79,7 @@ int ex_get_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, void
|
|
}
|
|
|
|
/* Lookup index of map id property array */
|
|
- id_ndx = ex__id_lkup(exoid, map_type, map_id);
|
|
+ id_ndx = exi_id_lkup(exoid, map_type, map_id);
|
|
if (id_ndx <= 0) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to locate %s id %" PRId64 " in id variable in file id %d",
|
|
@@ -89,7 +89,7 @@ int ex_get_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, void
|
|
}
|
|
|
|
/* inquire id's of previously defined dimensions and variables */
|
|
- if ((status = nc_inq_varid(exoid, ex__name_of_map(map_type, id_ndx), &var_id)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_varid(exoid, exi_name_of_map(map_type, id_ndx), &var_id)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s %" PRId64 " in file id %d",
|
|
ex_name_of_object(map_type), map_id, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_object_truth_vector.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_object_truth_vector.c
|
|
index 798396a7c4..34479d6089 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_object_truth_vector.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_object_truth_vector.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -15,7 +15,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for ex__get_dimension, EX_FATAL, etc
|
|
+#include "exodusII_int.h" // for exi_get_dimension, EX_FATAL, etc
|
|
|
|
/*!
|
|
* reads the EXODUS specified variable truth vector from the database
|
|
@@ -24,10 +24,9 @@
|
|
int ex_get_object_truth_vector(int exoid, ex_entity_type obj_type, ex_entity_id entity_id,
|
|
int num_var, int *var_vec)
|
|
{
|
|
- int statust;
|
|
- int varid, tabid, i, status, ent_ndx;
|
|
+ int statust, status;
|
|
+ int varid, tabid;
|
|
size_t num_var_db = 0;
|
|
- size_t start[2], count[2];
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
/*
|
|
@@ -39,70 +38,70 @@ int ex_get_object_truth_vector(int exoid, ex_entity_type obj_type, ex_entity_id
|
|
const char *var_name = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
switch (obj_type) {
|
|
case EX_EDGE_BLOCK:
|
|
status =
|
|
- ex__get_dimension(exoid, DIM_NUM_EDG_VAR, "edge variables", &num_var_db, &varid, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_EDG_VAR, "edge variables", &num_var_db, &varid, __func__);
|
|
statust = nc_inq_varid(exoid, VAR_EBLK_TAB, &tabid);
|
|
var_name = "vals_edge_var";
|
|
ent_type = "eb";
|
|
break;
|
|
case EX_FACE_BLOCK:
|
|
status =
|
|
- ex__get_dimension(exoid, DIM_NUM_FAC_VAR, "face variables", &num_var_db, &varid, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_FAC_VAR, "face variables", &num_var_db, &varid, __func__);
|
|
statust = nc_inq_varid(exoid, VAR_FBLK_TAB, &tabid);
|
|
var_name = "vals_face_var";
|
|
ent_type = "fb";
|
|
break;
|
|
case EX_ELEM_BLOCK:
|
|
- status = ex__get_dimension(exoid, DIM_NUM_ELE_VAR, "element variables", &num_var_db, &varid,
|
|
- __func__);
|
|
+ status = exi_get_dimension(exoid, DIM_NUM_ELE_VAR, "element variables", &num_var_db, &varid,
|
|
+ __func__);
|
|
statust = nc_inq_varid(exoid, VAR_ELEM_TAB, &tabid);
|
|
var_name = "vals_elem_var";
|
|
ent_type = "eb";
|
|
break;
|
|
case EX_NODE_SET:
|
|
- status = ex__get_dimension(exoid, DIM_NUM_NSET_VAR, "nodeset variables", &num_var_db, &varid,
|
|
- __func__);
|
|
+ status = exi_get_dimension(exoid, DIM_NUM_NSET_VAR, "nodeset variables", &num_var_db, &varid,
|
|
+ __func__);
|
|
statust = nc_inq_varid(exoid, VAR_NSET_TAB, &tabid);
|
|
var_name = "vals_nset_var";
|
|
ent_type = "ns";
|
|
break;
|
|
case EX_EDGE_SET:
|
|
- status = ex__get_dimension(exoid, DIM_NUM_ESET_VAR, "edgeset variables", &num_var_db, &varid,
|
|
- __func__);
|
|
+ status = exi_get_dimension(exoid, DIM_NUM_ESET_VAR, "edgeset variables", &num_var_db, &varid,
|
|
+ __func__);
|
|
statust = nc_inq_varid(exoid, VAR_ESET_TAB, &tabid);
|
|
var_name = "vals_eset_var";
|
|
ent_type = "es";
|
|
break;
|
|
case EX_FACE_SET:
|
|
- status = ex__get_dimension(exoid, DIM_NUM_FSET_VAR, "faceset variables", &num_var_db, &varid,
|
|
- __func__);
|
|
+ status = exi_get_dimension(exoid, DIM_NUM_FSET_VAR, "faceset variables", &num_var_db, &varid,
|
|
+ __func__);
|
|
statust = nc_inq_varid(exoid, VAR_FSET_TAB, &tabid);
|
|
var_name = "vals_fset_var";
|
|
ent_type = "fs";
|
|
break;
|
|
case EX_SIDE_SET:
|
|
- status = ex__get_dimension(exoid, DIM_NUM_SSET_VAR, "sideset variables", &num_var_db, &varid,
|
|
- __func__);
|
|
+ status = exi_get_dimension(exoid, DIM_NUM_SSET_VAR, "sideset variables", &num_var_db, &varid,
|
|
+ __func__);
|
|
statust = nc_inq_varid(exoid, VAR_SSET_TAB, &tabid);
|
|
var_name = "vals_sset_var";
|
|
ent_type = "ss";
|
|
break;
|
|
case EX_ELEM_SET:
|
|
- status = ex__get_dimension(exoid, DIM_NUM_ELSET_VAR, "elemset variables", &num_var_db, &varid,
|
|
- __func__);
|
|
+ status = exi_get_dimension(exoid, DIM_NUM_ELSET_VAR, "elemset variables", &num_var_db, &varid,
|
|
+ __func__);
|
|
statust = nc_inq_varid(exoid, VAR_ELSET_TAB, &tabid);
|
|
var_name = "vals_elset_var";
|
|
ent_type = "es";
|
|
break;
|
|
case EX_BLOB:
|
|
status =
|
|
- ex__get_dimension(exoid, DIM_NUM_BLOB_VAR, "blob variables", &num_var_db, &varid, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_BLOB_VAR, "blob variables", &num_var_db, &varid, __func__);
|
|
statust = nc_inq_varid(exoid, VAR_BLOB_TAB, &tabid);
|
|
var_name = "vals_blob_var";
|
|
ent_type = "blob";
|
|
@@ -119,7 +118,7 @@ int ex_get_object_truth_vector(int exoid, ex_entity_type obj_type, ex_entity_id
|
|
}
|
|
|
|
/* Determine index of entity_id in id array */
|
|
- ent_ndx = ex__id_lkup(exoid, obj_type, entity_id);
|
|
+ int ent_ndx = exi_id_lkup(exoid, obj_type, entity_id);
|
|
if (ent_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
if (status != 0) {
|
|
@@ -149,9 +148,9 @@ int ex_get_object_truth_vector(int exoid, ex_entity_type obj_type, ex_entity_id
|
|
if (statust != NC_NOERR) {
|
|
/* since truth vector isn't stored in the data file, derive it dynamically
|
|
*/
|
|
- for (i = 0; i < num_var; i++) {
|
|
+ for (int i = 0; i < num_var; i++) {
|
|
/* NOTE: names are 1-based */
|
|
- if (nc_inq_varid(exoid, ex__catstr2(var_name, i + 1, ent_type, ent_ndx), &tabid) !=
|
|
+ if (nc_inq_varid(exoid, exi_catstr2(var_name, i + 1, ent_type, ent_ndx), &tabid) !=
|
|
NC_NOERR) {
|
|
/* variable doesn't exist; put a 0 in the truth vector */
|
|
var_vec[i] = 0;
|
|
@@ -166,6 +165,7 @@ int ex_get_object_truth_vector(int exoid, ex_entity_type obj_type, ex_entity_id
|
|
|
|
/* read in the truth vector */
|
|
|
|
+ size_t start[2], count[2];
|
|
start[0] = ent_ndx - 1;
|
|
start[1] = 0;
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_one_attr.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_one_attr.c
|
|
index 5a529f9b4e..081c1995e9 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_one_attr.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_one_attr.c
|
|
@@ -24,7 +24,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__get_dimension, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_get_dimension, etc
|
|
|
|
/*
|
|
* reads the attributes for an edge, face, or element block
|
|
@@ -45,13 +45,13 @@ int ex_get_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int
|
|
const char *vattrbname;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Determine index of obj_id in vobjids array */
|
|
if (obj_type != EX_NODAL) {
|
|
- obj_id_ndx = ex__id_lkup(exoid, obj_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, obj_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -127,12 +127,12 @@ int ex_get_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int
|
|
}
|
|
|
|
/* inquire id's of previously defined dimensions */
|
|
- if (ex__get_dimension(exoid, dnumobjent, "entries", &num_entries_this_obj, &temp, __func__) !=
|
|
+ if (exi_get_dimension(exoid, dnumobjent, "entries", &num_entries_this_obj, &temp, __func__) !=
|
|
NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ex__get_dimension(exoid, dnumobjatt, "attributes", &num_attr, &temp, __func__) != NC_NOERR) {
|
|
+ if (exi_get_dimension(exoid, dnumobjatt, "attributes", &num_attr, &temp, __func__) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -163,7 +163,7 @@ int ex_get_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int
|
|
stride[0] = 1;
|
|
stride[1] = num_attr;
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vars_float(exoid, attrid, start, count, stride, attrib);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_attr.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_attr.c
|
|
index 0956bfe695..b9d3def69f 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_attr.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_attr.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -28,7 +28,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__get_dimension, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_get_dimension, etc
|
|
|
|
/*!
|
|
* reads the specified attribute for a subsect of a block
|
|
@@ -57,7 +57,7 @@ int ex_get_partial_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id,
|
|
const char *vattrbname;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -69,7 +69,7 @@ int ex_get_partial_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id,
|
|
|
|
/* Determine index of obj_id in vobjids array */
|
|
if (obj_type != EX_NODAL) {
|
|
- obj_id_ndx = ex__id_lkup(exoid, obj_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, obj_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -145,12 +145,12 @@ int ex_get_partial_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id,
|
|
}
|
|
|
|
/* inquire id's of previously defined dimensions */
|
|
- if (ex__get_dimension(exoid, dnumobjent, "entries", &num_entries_this_obj, &temp, __func__) !=
|
|
+ if (exi_get_dimension(exoid, dnumobjent, "entries", &num_entries_this_obj, &temp, __func__) !=
|
|
NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (start_num + num_ent - 1 > num_entries_this_obj) {
|
|
+ if (start_num + num_ent - 1 > (int64_t)num_entries_this_obj) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: start index (%" PRId64 ") + count (%" PRId64
|
|
") is larger than total number of entities (%zu) in file id %d",
|
|
@@ -159,7 +159,7 @@ int ex_get_partial_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id,
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ex__get_dimension(exoid, dnumobjatt, "attributes", &num_attr, &temp, __func__) != NC_NOERR) {
|
|
+ if (exi_get_dimension(exoid, dnumobjatt, "attributes", &num_attr, &temp, __func__) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -181,7 +181,7 @@ int ex_get_partial_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id,
|
|
start[0] = 0;
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, attrid, start, count, attrib);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_conn.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_conn.c
|
|
index d027216869..b90895aeb4 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_conn.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_conn.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -27,8 +27,9 @@
|
|
* revision history -
|
|
*
|
|
*/
|
|
+
|
|
#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
-#include "exodusII_int.h" // for ex__check_valid_file_id, etc
|
|
+#include "exodusII_int.h" // for exi_check_valid_file_id, etc
|
|
|
|
/*
|
|
* reads the connectivity array for an element block
|
|
@@ -61,7 +62,7 @@ int ex_get_partial_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id,
|
|
const char *vfaceconn = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -78,7 +79,7 @@ int ex_get_partial_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id,
|
|
|
|
/* Locate index of element block id in VAR_ID_EL_BLK array */
|
|
|
|
- blk_id_ndx = ex__id_lkup(exoid, blk_type, blk_id);
|
|
+ blk_id_ndx = exi_id_lkup(exoid, blk_type, blk_id);
|
|
if (blk_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -102,19 +103,19 @@ int ex_get_partial_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id,
|
|
switch (blk_type) {
|
|
case EX_EDGE_BLOCK:
|
|
dnumnodent = DIM_NUM_NOD_PER_ED(blk_id_ndx);
|
|
- dnumedgent = 0;
|
|
- dnumfacent = 0;
|
|
+ dnumedgent = NULL;
|
|
+ dnumfacent = NULL;
|
|
vnodeconn = VAR_EBCONN(blk_id_ndx);
|
|
- vedgeconn = 0;
|
|
- vfaceconn = 0;
|
|
+ vedgeconn = NULL;
|
|
+ vfaceconn = NULL;
|
|
break;
|
|
case EX_FACE_BLOCK:
|
|
dnumnodent = DIM_NUM_NOD_PER_FA(blk_id_ndx);
|
|
- dnumedgent = 0;
|
|
- dnumfacent = 0;
|
|
+ dnumedgent = NULL;
|
|
+ dnumfacent = NULL;
|
|
vnodeconn = VAR_FBCONN(blk_id_ndx);
|
|
- vedgeconn = 0;
|
|
- vfaceconn = 0;
|
|
+ vedgeconn = NULL;
|
|
+ vfaceconn = NULL;
|
|
break;
|
|
case EX_ELEM_BLOCK:
|
|
dnumnodent = DIM_NUM_NOD_PER_EL(blk_id_ndx);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_coord.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_coord.c
|
|
index b940558c50..5eacd75a43 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_coord.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_coord.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -27,7 +27,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__comp_ws, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_comp_ws, etc
|
|
|
|
/*!
|
|
* reads the coordinates of the nodes.
|
|
@@ -62,7 +62,7 @@ int ex_get_partial_coord(int exoid, int64_t start_node_num, int64_t num_nodes, v
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -81,7 +81,7 @@ int ex_get_partial_coord(int exoid, int64_t start_node_num, int64_t num_nodes, v
|
|
}
|
|
|
|
--start_node_num;
|
|
- if (start_node_num + num_nodes > num_nod) {
|
|
+ if (start_node_num + num_nodes > (int64_t)num_nod) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: start index (%" PRId64 ") + node count (%" PRId64
|
|
") is larger than total number of nodes (%zu) in file id %d",
|
|
@@ -90,7 +90,7 @@ int ex_get_partial_coord(int exoid, int64_t start_node_num, int64_t num_nodes, v
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ex__get_dimension(exoid, DIM_NUM_DIM, "dimension count", &num_dim, &ndimdim, __func__) !=
|
|
+ if (exi_get_dimension(exoid, DIM_NUM_DIM, "dimension count", &num_dim, &ndimdim, __func__) !=
|
|
NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -117,7 +117,7 @@ int ex_get_partial_coord(int exoid, int64_t start_node_num, int64_t num_nodes, v
|
|
|
|
if (i == 0 && x_coor != NULL) {
|
|
which = "X";
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, coordid, start, count, x_coor);
|
|
}
|
|
else {
|
|
@@ -126,7 +126,7 @@ int ex_get_partial_coord(int exoid, int64_t start_node_num, int64_t num_nodes, v
|
|
}
|
|
else if (i == 1 && y_coor != NULL) {
|
|
which = "Y";
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, coordid, start, count, y_coor);
|
|
}
|
|
else {
|
|
@@ -135,7 +135,7 @@ int ex_get_partial_coord(int exoid, int64_t start_node_num, int64_t num_nodes, v
|
|
}
|
|
else if (i == 2 && z_coor != NULL) {
|
|
which = "Z";
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, coordid, start, count, z_coor);
|
|
}
|
|
else {
|
|
@@ -211,7 +211,7 @@ int ex_get_partial_coord(int exoid, int64_t start_node_num, int64_t num_nodes, v
|
|
}
|
|
|
|
if (coor != NULL && coordid != -1) {
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, coordid, start, count, coor);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_coord_component.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_coord_component.c
|
|
index f0a300b8b8..2ab09b0fbe 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_coord_component.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_coord_component.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__comp_ws, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_comp_ws, etc
|
|
|
|
/*!
|
|
* reads the coordinates of some of the nodes in the model for the specified component
|
|
@@ -38,7 +38,7 @@ int ex_get_partial_coord_component(int exoid, int64_t start_node_num, int64_t nu
|
|
const char *which = "XYZ";
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -57,7 +57,7 @@ int ex_get_partial_coord_component(int exoid, int64_t start_node_num, int64_t nu
|
|
}
|
|
|
|
--start_node_num;
|
|
- if (start_node_num + num_nodes > num_nod) {
|
|
+ if (start_node_num + num_nodes > (int64_t)num_nod) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: start index (%" PRId64 ") + node count (%" PRId64
|
|
") is larger than total number of nodes (%zu) in file id %d",
|
|
@@ -66,12 +66,12 @@ int ex_get_partial_coord_component(int exoid, int64_t start_node_num, int64_t nu
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ex__get_dimension(exoid, DIM_NUM_DIM, "dimensions", &num_dim, &ndimdim, __func__) !=
|
|
+ if (exi_get_dimension(exoid, DIM_NUM_DIM, "dimensions", &num_dim, &ndimdim, __func__) !=
|
|
NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (component > num_dim) {
|
|
+ if (component > (int64_t)num_dim) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: Component (%d) is larger than number of dimensions (%zu) in file id %d",
|
|
component, num_dim, exoid);
|
|
@@ -99,7 +99,7 @@ int ex_get_partial_coord_component(int exoid, int64_t start_node_num, int64_t nu
|
|
start[1] = 0;
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, coordid, start, count, coor);
|
|
}
|
|
else {
|
|
@@ -132,7 +132,7 @@ int ex_get_partial_coord_component(int exoid, int64_t start_node_num, int64_t nu
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, coordid, start, count, coor);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_id_map.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_id_map.c
|
|
index ead11147d9..5df3505091 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_id_map.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_id_map.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -29,20 +29,16 @@
|
|
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)
|
|
{
|
|
- int dimid, mapid, status;
|
|
- int64_t i;
|
|
- size_t num_entries;
|
|
- size_t start[1], count[1];
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- const char *dnumentries;
|
|
- const char *vmap;
|
|
- const char *tname;
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ const char *dnumentries;
|
|
+ const char *vmap;
|
|
+ const char *tname;
|
|
switch (map_type) {
|
|
case EX_NODE_MAP:
|
|
tname = "node";
|
|
@@ -72,10 +68,13 @@ int ex_get_partial_id_map(int exoid, ex_entity_type map_type, int64_t start_enti
|
|
}
|
|
|
|
/* See if any entries are stored in this file */
|
|
+ int dimid;
|
|
if (nc_inq_dimid(exoid, dnumentries, &dimid) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
}
|
|
|
|
+ size_t num_entries;
|
|
+ int status;
|
|
if ((status = nc_inq_dimlen(exoid, dimid, &num_entries)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of %ss in file id %d", tname,
|
|
exoid);
|
|
@@ -91,7 +90,7 @@ int ex_get_partial_id_map(int exoid, ex_entity_type map_type, int64_t start_enti
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (start_entity_num + num_entities - 1 > num_entries) {
|
|
+ if (start_entity_num + num_entities - 1 > (int64_t)num_entries) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: start index (%" PRId64 ") + entity count (%" PRId64
|
|
") is larger than total number of entities (%zu) in file id %d",
|
|
@@ -100,17 +99,18 @@ int ex_get_partial_id_map(int exoid, ex_entity_type map_type, int64_t start_enti
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ int mapid;
|
|
if (nc_inq_varid(exoid, vmap, &mapid) != NC_NOERR) {
|
|
/* generate portion of the default map (1..num_entries) */
|
|
if (ex_int64_status(exoid) & EX_MAPS_INT64_API) {
|
|
int64_t *lmap = (int64_t *)map;
|
|
- for (i = 0; i < num_entities; i++) {
|
|
+ for (int64_t i = 0; i < num_entities; i++) {
|
|
lmap[i] = start_entity_num + i;
|
|
}
|
|
}
|
|
else {
|
|
int *lmap = (int *)map;
|
|
- for (i = 0; i < num_entities; i++) {
|
|
+ for (int64_t i = 0; i < num_entities; i++) {
|
|
lmap[i] = start_entity_num + i;
|
|
}
|
|
}
|
|
@@ -118,8 +118,8 @@ int ex_get_partial_id_map(int exoid, ex_entity_type map_type, int64_t start_enti
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
}
|
|
|
|
- start[0] = start_entity_num - 1;
|
|
- count[0] = num_entities;
|
|
+ size_t start[] = {start_entity_num - 1};
|
|
+ size_t count[] = {num_entities};
|
|
if (count[0] == 0) {
|
|
start[0] = 0;
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_nodal_var_int.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_nodal_var_int.c
|
|
index f04eb7bc36..1d982a1d40 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_nodal_var_int.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_nodal_var_int.c
|
|
@@ -28,7 +28,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include <exodusII.h> // for ex_err, etc
|
|
-#include <exodusII_int.h> // for EX_WARN, ex__comp_ws, etc
|
|
+#include <exodusII_int.h> // for EX_WARN, exi_comp_ws, etc
|
|
|
|
/*!
|
|
\internal
|
|
@@ -37,7 +37,7 @@
|
|
the reading of nodal variable values.
|
|
*/
|
|
|
|
-int ex__get_partial_nodal_var(int exoid, int time_step, int nodal_var_index, int64_t start_node,
|
|
+int exi_get_partial_nodal_var(int exoid, int time_step, int nodal_var_index, int64_t start_node,
|
|
int64_t num_nodes, void *var_vals)
|
|
{
|
|
int varid;
|
|
@@ -46,7 +46,7 @@ int ex__get_partial_nodal_var(int exoid, int time_step, int nodal_var_index, int
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -87,7 +87,7 @@ int ex__get_partial_nodal_var(int exoid, int time_step, int nodal_var_index, int
|
|
}
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, varid, start, count, var_vals);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_num_map.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_num_map.c
|
|
index f548847600..5a6d864110 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_num_map.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_num_map.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -41,7 +41,7 @@ int ex_get_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_
|
|
const char *dim_num_maps;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -81,7 +81,7 @@ int ex_get_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_
|
|
}
|
|
|
|
/* Check input parameters for a valid range of numbers */
|
|
- if (ent_start <= 0 || ent_start > num_mobj) {
|
|
+ if (ent_start <= 0 || ent_start > (int64_t)num_mobj) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: start count is invalid in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -93,7 +93,7 @@ int ex_get_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ent_start + ent_count - 1 > num_mobj) {
|
|
+ if (ent_start + ent_count - 1 > (int64_t)num_mobj) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: start+count-1 is larger than element count in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
@@ -109,7 +109,7 @@ int ex_get_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_
|
|
}
|
|
|
|
/* Lookup index of element map id property array */
|
|
- id_ndx = ex__id_lkup(exoid, map_type, map_id);
|
|
+ id_ndx = exi_id_lkup(exoid, map_type, map_id);
|
|
if (id_ndx <= 0) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to locate %s id %" PRId64 " in id variable in file id %d",
|
|
@@ -119,7 +119,7 @@ int ex_get_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_
|
|
}
|
|
|
|
/* inquire id's of previously defined dimensions and variables */
|
|
- if ((status = nc_inq_varid(exoid, ex__name_of_map(map_type, id_ndx), &var_id)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_varid(exoid, exi_name_of_map(map_type, id_ndx), &var_id)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s %" PRId64 " in file id %d",
|
|
ex_name_of_object(map_type), map_id, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_one_attr.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_one_attr.c
|
|
index 1de3536505..5da909921d 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_one_attr.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_one_attr.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -28,7 +28,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__get_dimension, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_get_dimension, etc
|
|
|
|
/*!
|
|
* reads the specified attribute for a subsect of a block
|
|
@@ -59,7 +59,7 @@ int ex_get_partial_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj
|
|
const char *vattrbname;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -71,7 +71,7 @@ int ex_get_partial_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj
|
|
|
|
/* Determine index of obj_id in vobjids array */
|
|
if (obj_type != EX_NODAL) {
|
|
- obj_id_ndx = ex__id_lkup(exoid, obj_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, obj_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -147,12 +147,12 @@ int ex_get_partial_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj
|
|
}
|
|
|
|
/* inquire id's of previously defined dimensions */
|
|
- if (ex__get_dimension(exoid, dnumobjent, "entries", &num_entries_this_obj, &temp, __func__) !=
|
|
+ if (exi_get_dimension(exoid, dnumobjent, "entries", &num_entries_this_obj, &temp, __func__) !=
|
|
NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (start_num + num_ent - 1 > num_entries_this_obj && num_ent > 0) {
|
|
+ if (start_num + num_ent - 1 > (int64_t)num_entries_this_obj && num_ent > 0) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: start index (%" PRId64 ") + count (%" PRId64
|
|
") is larger than total number of entities (%zu) in file id %d",
|
|
@@ -161,7 +161,7 @@ int ex_get_partial_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ex__get_dimension(exoid, dnumobjatt, "attributes", &num_attr, &temp, __func__) != NC_NOERR) {
|
|
+ if (exi_get_dimension(exoid, dnumobjatt, "attributes", &num_attr, &temp, __func__) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -195,7 +195,7 @@ int ex_get_partial_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj
|
|
if (count[0] == 0) {
|
|
start[0] = 0;
|
|
}
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vars_float(exoid, attrid, start, count, stride, attrib);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_set.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_set.c
|
|
index 8bfd1f1395..ba9273f521 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_set.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_set.c
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
-#include "exodusII_int.h" // for ex__is_parallel, etc
|
|
+#include "exodusII_int.h" // for exi_is_parallel, etc
|
|
|
|
/*!
|
|
* reads a portion of the set entry list and set extra list for a single set
|
|
@@ -29,16 +29,16 @@ int ex_get_partial_set(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
int entry_list_id, extra_list_id, set_id_ndx;
|
|
size_t start[1], count[1];
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- char * entryptr = NULL;
|
|
- char * extraptr = NULL;
|
|
+ char *entryptr = NULL;
|
|
+ char *extraptr = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* first check if any sets are specified */
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: no %ss defined in file id %d",
|
|
ex_name_of_object(set_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -46,7 +46,7 @@ int ex_get_partial_set(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
}
|
|
|
|
/* Lookup index of set id in VAR_*S_IDS array */
|
|
- set_id_ndx = ex__id_lkup(exoid, set_type, set_id);
|
|
+ set_id_ndx = exi_id_lkup(exoid, set_type, set_id);
|
|
if (set_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -98,7 +98,7 @@ int ex_get_partial_set(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
}
|
|
|
|
/* read the entry list and extra list arrays */
|
|
- if (set_entry_list != NULL || ex__is_parallel(exoid)) {
|
|
+ if (set_entry_list != NULL || exi_is_parallel(exoid)) {
|
|
start[0] = offset - 1;
|
|
count[0] = num_to_get;
|
|
if (count[0] == 0) {
|
|
@@ -122,7 +122,7 @@ int ex_get_partial_set(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
}
|
|
|
|
/* only do for edge, face and side sets */
|
|
- if (extraptr && (set_extra_list != NULL || ex__is_parallel(exoid))) {
|
|
+ if (extraptr && (set_extra_list != NULL || exi_is_parallel(exoid))) {
|
|
if ((status = nc_inq_varid(exoid, extraptr, &extra_list_id)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to locate extra list for %s %" PRId64 " in file id %d",
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_set_dist_fact.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_set_dist_fact.c
|
|
index b34661e9fa..f3f897e8cf 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_set_dist_fact.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_set_dist_fact.c
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
-#include "exodusII_int.h" // for ex__check_valid_file_id, etc
|
|
+#include "exodusII_int.h" // for exi_check_valid_file_id, etc
|
|
|
|
/*!
|
|
* reads the distribution factors for a single set
|
|
@@ -21,15 +21,15 @@ int ex_get_partial_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_i
|
|
int status;
|
|
size_t start[1], count[1];
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- char * factptr = NULL;
|
|
+ char *factptr = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* first check if any sets are specified */
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: no %s sets stored in file id %d",
|
|
ex_name_of_object(set_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -37,7 +37,7 @@ int ex_get_partial_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_i
|
|
}
|
|
|
|
/* Lookup index of set id in VAR_*S_IDS array */
|
|
- set_id_ndx = ex__id_lkup(exoid, set_type, set_id);
|
|
+ set_id_ndx = exi_id_lkup(exoid, set_type, set_id);
|
|
if (set_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -99,7 +99,7 @@ int ex_get_partial_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_i
|
|
if (count[0] == 0) {
|
|
start[0] = 0;
|
|
}
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, dist_id, start, count, set_dist_fact);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_var.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_var.c
|
|
index 8c6f8445c6..bb12106cbd 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_var.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_partial_var.c
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
-#include "exodusII_int.h" // for ex__check_valid_file_id, etc
|
|
+#include "exodusII_int.h" // for exi_check_valid_file_id, etc
|
|
|
|
/*
|
|
* reads the values of a single element variable for one element block at
|
|
@@ -52,21 +52,21 @@ int ex_get_partial_var(int exoid, int time_step, ex_entity_type var_type, int va
|
|
/* FIXME: Special case: ignore obj_id, possible large_file complications,
|
|
* etc. */
|
|
status =
|
|
- ex__get_partial_nodal_var(exoid, time_step, var_index, start_index, num_entities, var_vals);
|
|
+ exi_get_partial_nodal_var(exoid, time_step, var_index, start_index, num_entities, var_vals);
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
if (var_type == EX_GLOBAL) {
|
|
/* FIXME: Special case: all vars stored in 2-D single array. */
|
|
- status = ex__get_glob_vars(exoid, time_step, num_entities, var_vals);
|
|
+ status = exi_get_glob_vars(exoid, time_step, num_entities, var_vals);
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Determine index of obj_id in VAR_ID_EL_BLK array */
|
|
- obj_id_ndx = ex__id_lkup(exoid, var_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, var_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -88,7 +88,7 @@ int ex_get_partial_var(int exoid, int time_step, ex_entity_type var_type, int va
|
|
|
|
/* inquire previously defined variable */
|
|
|
|
- if ((status = nc_inq_varid(exoid, ex__name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
+ if ((status = nc_inq_varid(exoid, exi_name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
&varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s %" PRId64 " var %d in file id %d",
|
|
ex_name_of_object(var_type), obj_id, var_index, exoid);
|
|
@@ -106,7 +106,7 @@ int ex_get_partial_var(int exoid, int time_step, ex_entity_type var_type, int va
|
|
start[1] = 0;
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, varid, start, count, var_vals);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_processor_elem_maps.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_processor_elem_maps.c
|
|
index 8c5020f8f5..374fcaef11 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_processor_elem_maps.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_processor_elem_maps.c
|
|
@@ -37,12 +37,12 @@ int ex_get_processor_elem_maps(int exoid, void_int *elem_mapi, void_int *elem_ma
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Get the file type */
|
|
- if (ex__get_file_type(exoid, ftype) != EX_NOERR) {
|
|
+ if (exi_get_file_type(exoid, ftype) != EX_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unable to find file type for file ID %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_LASTERR);
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_processor_node_maps.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_processor_node_maps.c
|
|
index 93262df6e1..a79954cc7c 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_processor_node_maps.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_processor_node_maps.c
|
|
@@ -42,12 +42,12 @@ int ex_get_processor_node_maps(int exoid, void_int *node_mapi, void_int *node_ma
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Get the file type */
|
|
- if (ex__get_file_type(exoid, ftype) != EX_NOERR) {
|
|
+ if (exi_get_file_type(exoid, ftype) != EX_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unable to find file type for file ID %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_LASTERR);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_prop.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_prop.c
|
|
index 0657539fbc..a90903d4f0 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_prop.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_prop.c
|
|
@@ -59,13 +59,13 @@ int ex_get_prop(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, const c
|
|
int num_props, i, propid;
|
|
int found = false;
|
|
size_t start[1];
|
|
- char * name;
|
|
+ char *name;
|
|
char tmpstr[MAX_STR_LENGTH + 1];
|
|
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -123,9 +123,9 @@ int ex_get_prop(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, const c
|
|
}
|
|
|
|
/* find index into property array using obj_id; read value from property */
|
|
- /* array at proper index; ex__id_lkup returns an index that is 1-based, */
|
|
+ /* array at proper index; exi_id_lkup returns an index that is 1-based, */
|
|
/* but netcdf expects 0-based arrays so subtract 1 */
|
|
- status = ex__id_lkup(exoid, obj_type, obj_id);
|
|
+ status = exi_id_lkup(exoid, obj_type, obj_id);
|
|
if (status > 0) {
|
|
start[0] = status - 1;
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_prop_array.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_prop_array.c
|
|
index 3b943aa3fe..a39f0758e2 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_prop_array.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_prop_array.c
|
|
@@ -94,7 +94,7 @@ int ex_get_prop_array(int exoid, ex_entity_type obj_type, const char *prop_name,
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_prop_names.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_prop_names.c
|
|
index ba465a4ea8..2476d5c461 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_prop_names.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_prop_names.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -77,25 +77,17 @@ for (i=0; i < num_props; i++) {
|
|
|
|
int ex_get_prop_names(int exoid, ex_entity_type obj_type, char **prop_names)
|
|
{
|
|
- int status;
|
|
- int i, num_props, propid;
|
|
- char * var_name;
|
|
- size_t att_len;
|
|
- nc_type att_type;
|
|
- int api_name_size = ex_inquire_int(exoid, EX_INQ_MAX_READ_NAME_LENGTH);
|
|
-
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* determine which type of object property names are desired for */
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ int num_props = ex_get_num_props(exoid, obj_type);
|
|
|
|
- num_props = ex_get_num_props(exoid, obj_type);
|
|
-
|
|
- for (i = 0; i < num_props; i++) {
|
|
+ char *var_name;
|
|
+ for (int i = 0; i < num_props; i++) {
|
|
switch (obj_type) {
|
|
case EX_ELEM_BLOCK: var_name = VAR_EB_PROP(i + 1); break;
|
|
case EX_FACE_BLOCK: var_name = VAR_FA_PROP(i + 1); break;
|
|
@@ -116,6 +108,8 @@ int ex_get_prop_names(int exoid, ex_entity_type obj_type, char **prop_names)
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ int status;
|
|
+ int propid;
|
|
if ((status = nc_inq_varid(exoid, var_name, &propid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate property array %s in file id %d",
|
|
var_name, exoid);
|
|
@@ -125,6 +119,8 @@ int ex_get_prop_names(int exoid, ex_entity_type obj_type, char **prop_names)
|
|
|
|
/* for each property, read the "name" attribute of property array variable
|
|
*/
|
|
+ size_t att_len;
|
|
+ nc_type att_type;
|
|
if ((status = nc_inq_att(exoid, propid, ATT_PROP_NAME, &att_type, &att_len)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to get property attributes (type, len) in file id %d", exoid);
|
|
@@ -132,6 +128,7 @@ int ex_get_prop_names(int exoid, ex_entity_type obj_type, char **prop_names)
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ size_t api_name_size = ex_inquire_int(exoid, EX_INQ_MAX_READ_NAME_LENGTH);
|
|
if (att_len - 1 <= api_name_size) {
|
|
/* Client has large enough char string to hold text... */
|
|
if ((status = nc_get_att_text(exoid, propid, ATT_PROP_NAME, prop_names[i])) != NC_NOERR) {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_qa.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_qa.c
|
|
index 2399540943..47d6123153 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_qa.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_qa.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__trim, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_trim, etc
|
|
|
|
/*!
|
|
\ingroup Utilities
|
|
@@ -55,28 +55,25 @@ error = ex_get_qa (exoid, qa_record);
|
|
|
|
int ex_get_qa(int exoid, char *qa_record[][4])
|
|
{
|
|
- int status;
|
|
- int dimid, varid;
|
|
- size_t i, j;
|
|
- size_t num_qa_records, start[3], count[3];
|
|
-
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
- int rootid = exoid & EX_FILE_ID_MASK;
|
|
-
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* inquire previously defined dimensions and variables */
|
|
+ int status;
|
|
+ int rootid = exoid & EX_FILE_ID_MASK;
|
|
+ int dimid;
|
|
if ((status = nc_inq_dimid(rootid, DIM_NUM_QA, &dimid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: no qa records stored in file id %d", rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_WARN);
|
|
}
|
|
|
|
+ size_t num_qa_records;
|
|
if ((status = nc_inq_dimlen(rootid, dimid, &num_qa_records)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of qa records in file id %d",
|
|
rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -85,7 +82,9 @@ int ex_get_qa(int exoid, char *qa_record[][4])
|
|
|
|
/* do this only if there are any QA records */
|
|
if (num_qa_records > 0) {
|
|
+ int varid;
|
|
if ((status = nc_inq_varid(rootid, VAR_QA_TITLE, &varid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate qa record data in file id %d",
|
|
rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -93,22 +92,19 @@ int ex_get_qa(int exoid, char *qa_record[][4])
|
|
}
|
|
|
|
/* read the QA records */
|
|
- for (i = 0; i < num_qa_records; i++) {
|
|
- for (j = 0; j < 4; j++) {
|
|
- start[0] = i;
|
|
- count[0] = 1;
|
|
- start[1] = j;
|
|
- count[1] = 1;
|
|
- start[2] = 0;
|
|
- count[2] = MAX_STR_LENGTH + 1;
|
|
+ for (size_t i = 0; i < num_qa_records; i++) {
|
|
+ for (size_t j = 0; j < 4; j++) {
|
|
+ size_t start[] = {i, j, 0};
|
|
+ size_t count[] = {1, 1, MAX_STR_LENGTH + 1};
|
|
if ((status = nc_get_vara_text(rootid, varid, start, count, qa_record[i][j])) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get qa record data in file id %d",
|
|
rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
qa_record[i][j][MAX_STR_LENGTH] = '\0';
|
|
- ex__trim(qa_record[i][j]);
|
|
+ exi_trim(qa_record[i][j]);
|
|
}
|
|
}
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_variable_name.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_variable_name.c
|
|
index 7b1a1b35f3..4baf5a5a04 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_variable_name.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_variable_name.c
|
|
@@ -23,7 +23,7 @@ int ex_get_reduction_variable_name(int exoid, ex_entity_type obj_type, int var_n
|
|
const char *vname = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -61,7 +61,7 @@ int ex_get_reduction_variable_name(int exoid, ex_entity_type obj_type, int var_n
|
|
int api_name_size = ex_inquire_int(exoid, EX_INQ_MAX_READ_NAME_LENGTH);
|
|
int name_size = db_name_size < api_name_size ? db_name_size : api_name_size;
|
|
|
|
- status = ex__get_name(exoid, varid, var_num - 1, var_name, name_size, obj_type, __func__);
|
|
+ status = exi_get_name(exoid, varid, var_num - 1, var_name, name_size, obj_type, __func__);
|
|
if (status != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_variable_names.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_variable_names.c
|
|
index b2865e9c8d..bd8d9371e5 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_variable_names.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_variable_names.c
|
|
@@ -71,7 +71,7 @@ int ex_get_reduction_variable_names(int exoid, ex_entity_type obj_type, int num_
|
|
const char *vvarname;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -103,7 +103,7 @@ int ex_get_reduction_variable_names(int exoid, ex_entity_type obj_type, int num_
|
|
}
|
|
|
|
/* read the variable names */
|
|
- status = ex__get_names(exoid, varid, num_vars, var_names, obj_type, __func__);
|
|
+ status = exi_get_names(exoid, varid, num_vars, var_names, obj_type, __func__);
|
|
if (status != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_variable_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_variable_param.c
|
|
index 4207cb8d4f..2542443dea 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_variable_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_variable_param.c
|
|
@@ -62,7 +62,7 @@ int ex_get_reduction_variable_param(int exoid, ex_entity_type obj_type, int *num
|
|
int status;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_vars.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_vars.c
|
|
index 792cd3f6b3..1fd54f766c 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_vars.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_reduction_vars.c
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
-#include "exodusII_int.h" // for ex__check_valid_file_id, etc
|
|
+#include "exodusII_int.h" // for exi_check_valid_file_id, etc
|
|
|
|
/*!
|
|
\ingroup ResultsData
|
|
@@ -72,18 +72,18 @@ int ex_get_reduction_vars(int exoid, int time_step, ex_entity_type var_type, ex_
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
if (var_type == EX_GLOBAL) {
|
|
/* FIXME: Special case: all vars stored in 2-D single array. */
|
|
- status = ex__get_glob_vars(exoid, time_step, num_variables, var_vals);
|
|
+ status = exi_get_glob_vars(exoid, time_step, num_variables, var_vals);
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
|
|
/* Determine index of obj_id in VAR_ID_XXX array */
|
|
- obj_id_ndx = ex__id_lkup(exoid, var_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, var_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -96,7 +96,7 @@ int ex_get_reduction_vars(int exoid, int time_step, ex_entity_type var_type, ex_
|
|
}
|
|
|
|
/* inquire previously defined variable */
|
|
- if ((status = nc_inq_varid(exoid, ex__name_red_var_of_object(var_type, obj_id_ndx), &varid)) !=
|
|
+ if ((status = nc_inq_varid(exoid, exi_name_red_var_of_object(var_type, obj_id_ndx), &varid)) !=
|
|
NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"Warning: no reduction variables for %s %" PRId64 " in file id %d",
|
|
@@ -112,7 +112,7 @@ int ex_get_reduction_vars(int exoid, int time_step, ex_entity_type var_type, ex_
|
|
count[0] = 1;
|
|
count[1] = num_variables;
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, varid, start, count, var_vals);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_set.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_set.c
|
|
index e24174929e..a82f3bfcfa 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_set.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_set.c
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
-#include "exodusII_int.h" // for ex__check_valid_file_id, etc
|
|
+#include "exodusII_int.h" // for exi_check_valid_file_id, etc
|
|
|
|
/*!
|
|
* reads the set entry list and set extra list for a single set
|
|
@@ -31,12 +31,12 @@ int ex_get_set(int exoid, ex_entity_type set_type, ex_entity_id set_id, void_int
|
|
char *extraptr = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* first check if any sets are specified */
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: no %ss stored in file id %d",
|
|
ex_name_of_object(set_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -44,7 +44,7 @@ int ex_get_set(int exoid, ex_entity_type set_type, ex_entity_id set_id, void_int
|
|
}
|
|
|
|
/* Lookup index of set id in VAR_*S_IDS array */
|
|
- set_id_ndx = ex__id_lkup(exoid, set_type, set_id);
|
|
+ set_id_ndx = exi_id_lkup(exoid, set_type, set_id);
|
|
if (set_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_set_dist_fact.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_set_dist_fact.c
|
|
index 8769b9a78a..8d45635c67 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_set_dist_fact.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_set_dist_fact.c
|
|
@@ -40,12 +40,12 @@ int ex_get_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_id set_id
|
|
char *factptr = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* first check if any sets are specified */
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: no %s sets stored in file id %d",
|
|
ex_name_of_object(set_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -53,7 +53,7 @@ int ex_get_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_id set_id
|
|
}
|
|
|
|
/* Lookup index of set id in VAR_*S_IDS array */
|
|
- set_id_ndx = ex__id_lkup(exoid, set_type, set_id);
|
|
+ set_id_ndx = exi_id_lkup(exoid, set_type, set_id);
|
|
if (set_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -110,7 +110,7 @@ int ex_get_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_id set_id
|
|
}
|
|
|
|
/* read in the distribution factors array */
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_var_float(exoid, dist_id, set_dist_fact);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_set_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_set_param.c
|
|
index ac3f804717..5e0b448523 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_set_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_set_param.c
|
|
@@ -41,11 +41,11 @@ int ex_get_set_param(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
size_t lnum_entry_in_set;
|
|
size_t lnum_dist_fact_in_set;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- char * numentryptr = NULL;
|
|
- char * numdfptr = NULL;
|
|
+ char *numentryptr = NULL;
|
|
+ char *numdfptr = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -66,7 +66,7 @@ int ex_get_set_param(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
}
|
|
}
|
|
/* first check if any sets are specified */
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: no %ss stored in file id %d",
|
|
ex_name_of_object(set_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -74,7 +74,7 @@ int ex_get_set_param(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
}
|
|
|
|
/* Lookup index of set id in VAR_*S_IDS array */
|
|
- set_id_ndx = ex__id_lkup(exoid, set_type, set_id);
|
|
+ set_id_ndx = exi_id_lkup(exoid, set_type, set_id);
|
|
if (set_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -114,7 +114,7 @@ int ex_get_set_param(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
}
|
|
|
|
/* inquire values of dimension for number of entities in set */
|
|
- if (ex__get_dimension(exoid, numentryptr, "entries", &lnum_entry_in_set, &dimid, __func__) !=
|
|
+ if (exi_get_dimension(exoid, numentryptr, "entries", &lnum_entry_in_set, &dimid, __func__) !=
|
|
NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_sets.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_sets.c
|
|
index ed51449e26..99e9cca6b6 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_sets.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_sets.c
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_set, EX_FATAL, EX_NOERR, etc
|
|
-#include "exodusII_int.h" // for ex__check_valid_file_id
|
|
+#include "exodusII_int.h" // for exi_check_valid_file_id
|
|
|
|
int ex_get_sets(int exoid, size_t set_count, struct ex_set *sets)
|
|
{
|
|
@@ -16,7 +16,7 @@ int ex_get_sets(int exoid, size_t set_count, struct ex_set *sets)
|
|
int stat;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_side_set_node_count.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_side_set_node_count.c
|
|
index f78cb8a571..cf4f331441 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_side_set_node_count.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_side_set_node_count.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2023, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -27,7 +27,6 @@
|
|
int ex_get_side_set_node_count(int exoid, ex_entity_id side_set_id, int *side_set_node_cnt_list)
|
|
{
|
|
int status;
|
|
- size_t ii, i, j;
|
|
int num_side_sets, num_elem_blks, ndim;
|
|
size_t tot_num_ss_elem = 0;
|
|
int64_t side, elem;
|
|
@@ -37,13 +36,13 @@ int ex_get_side_set_node_count(int exoid, ex_entity_id side_set_id, int *side_se
|
|
void_int *side_set_side_list = NULL;
|
|
size_t elem_ctr;
|
|
|
|
- struct ex__elem_blk_parm *elem_blk_parms = NULL;
|
|
+ struct exi_elem_blk_parm *elem_blk_parms = NULL;
|
|
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
int err_stat = EX_NOERR;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -64,7 +63,7 @@ int ex_get_side_set_node_count(int exoid, ex_entity_id side_set_id, int *side_se
|
|
}
|
|
|
|
/* Lookup index of side set id in VAR_SS_IDS array */
|
|
- if (ex__id_lkup(exoid, EX_SIDE_SET, side_set_id) <= 0) {
|
|
+ if (exi_id_lkup(exoid, EX_SIDE_SET, side_set_id) <= 0) {
|
|
;
|
|
}
|
|
ex_get_err(NULL, NULL, &status);
|
|
@@ -101,10 +100,8 @@ int ex_get_side_set_node_count(int exoid, ex_entity_id side_set_id, int *side_se
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- int int_size = sizeof(int);
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
- int_size = sizeof(int64_t);
|
|
- }
|
|
+ bool ints_64 = ex_int64_status(exoid) & EX_BULK_INT64_API;
|
|
+ int int_size = ints_64 ? sizeof(int64_t) : sizeof(int);
|
|
|
|
/* First determine the # of elements in the side set*/
|
|
int err;
|
|
@@ -173,18 +170,18 @@ int ex_get_side_set_node_count(int exoid, ex_entity_id side_set_id, int *side_se
|
|
if (int_size == sizeof(int64_t)) {
|
|
/* Sort side set element list into index array - non-destructive */
|
|
int64_t *elems = (int64_t *)ss_elem_ndx;
|
|
- for (i = 0; i < tot_num_ss_elem; i++) {
|
|
+ for (size_t i = 0; i < tot_num_ss_elem; i++) {
|
|
elems[i] = i; /* init index array to current position */
|
|
}
|
|
- ex__iqsort64(side_set_elem_list, elems, tot_num_ss_elem);
|
|
+ exi_iqsort64(side_set_elem_list, elems, tot_num_ss_elem);
|
|
}
|
|
else {
|
|
/* Sort side set element list into index array - non-destructive */
|
|
int *elems = (int *)ss_elem_ndx;
|
|
- for (i = 0; i < tot_num_ss_elem; i++) {
|
|
+ for (size_t i = 0; i < tot_num_ss_elem; i++) {
|
|
elems[i] = i; /* init index array to current position */
|
|
}
|
|
- ex__iqsort(side_set_elem_list, elems, tot_num_ss_elem);
|
|
+ exi_iqsort(side_set_elem_list, elems, tot_num_ss_elem);
|
|
}
|
|
}
|
|
|
|
@@ -215,7 +212,7 @@ int ex_get_side_set_node_count(int exoid, ex_entity_id side_set_id, int *side_se
|
|
}
|
|
|
|
/* Allocate space for the element block params */
|
|
- if (!(elem_blk_parms = malloc(num_elem_blks * sizeof(struct ex__elem_blk_parm)))) {
|
|
+ if (!(elem_blk_parms = malloc(num_elem_blks * sizeof(struct exi_elem_blk_parm)))) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate space for element block params "
|
|
"for file id %d",
|
|
@@ -226,65 +223,74 @@ int ex_get_side_set_node_count(int exoid, ex_entity_id side_set_id, int *side_se
|
|
}
|
|
|
|
elem_ctr = 0;
|
|
- for (i = 0; i < num_elem_blks; i++) {
|
|
+ for (int ib = 0; ib < num_elem_blks; ib++) {
|
|
ex_entity_id id;
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
|
|
- id = ((int64_t *)elem_blk_ids)[i];
|
|
+ id = ((int64_t *)elem_blk_ids)[ib];
|
|
}
|
|
else {
|
|
- id = ((int *)elem_blk_ids)[i];
|
|
+ id = ((int *)elem_blk_ids)[ib];
|
|
}
|
|
|
|
- err_stat = ex__get_block_param(exoid, id, ndim, &elem_blk_parms[i]);
|
|
+ err_stat = exi_get_block_param(exoid, id, ndim, &elem_blk_parms[ib]);
|
|
if (err_stat != EX_NOERR) {
|
|
goto cleanup;
|
|
}
|
|
|
|
- elem_ctr += elem_blk_parms[i].num_elem_in_blk;
|
|
- elem_blk_parms[i].elem_ctr = elem_ctr; /* save elem number max */
|
|
+ elem_ctr += elem_blk_parms[ib].num_elem_in_blk;
|
|
+ elem_blk_parms[ib].elem_ctr = elem_ctr; /* save elem number max */
|
|
}
|
|
|
|
/* Finally... Create the list of node counts for each face in the
|
|
* side set.
|
|
*/
|
|
|
|
- j = 0; /* The current element block... */
|
|
- for (ii = 0; ii < tot_num_ss_elem; ii++) {
|
|
-
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
- i = ((int64_t *)ss_elem_ndx)[ii];
|
|
- elem = ((int64_t *)side_set_elem_list)[i];
|
|
- side = ((int64_t *)side_set_side_list)[i] - 1; /* Convert to 0-based sides */
|
|
- }
|
|
- else {
|
|
- i = ((int *)ss_elem_ndx)[ii];
|
|
- elem = ((int *)side_set_elem_list)[i];
|
|
- side = ((int *)side_set_side_list)[i] - 1; /* Convert to 0-based sides */
|
|
- }
|
|
+ /* There is not partial read for this function, but all ranks must call because exodus runs
|
|
+ * NC_COLLECTIVE for all variables. Typically, either all ranks call and get same data, or one
|
|
+ * rank reads. To do the one rank read, we only store the data if `side_set_node_cnt_list !=
|
|
+ * NULL`
|
|
+ */
|
|
+ if (side_set_node_cnt_list != NULL) {
|
|
+ int jb = 0; /* The current element block... */
|
|
+ for (size_t ii = 0; ii < tot_num_ss_elem; ii++) {
|
|
+
|
|
+ size_t i = 0;
|
|
+ if (ints_64) {
|
|
+ i = ((int64_t *)ss_elem_ndx)[ii];
|
|
+ elem = ((int64_t *)side_set_elem_list)[i];
|
|
+ side = ((int64_t *)side_set_side_list)[i] - 1; /* Convert to 0-based sides */
|
|
+ }
|
|
+ else {
|
|
+ i = ((int *)ss_elem_ndx)[ii];
|
|
+ elem = ((int *)side_set_elem_list)[i];
|
|
+ side = ((int *)side_set_side_list)[i] - 1; /* Convert to 0-based sides */
|
|
+ }
|
|
|
|
- /*
|
|
- * Since the elements are being accessed in sorted, order, the
|
|
- * block that contains the elements must progress sequentially
|
|
- * from block 0 to block[num_elem_blks-1]. Once we find an element
|
|
- * not in this block, find a following block that contains it...
|
|
- */
|
|
- for (; j < num_elem_blks; j++) {
|
|
- if (elem <= elem_blk_parms[j].elem_ctr) {
|
|
- break;
|
|
+ /*
|
|
+ * Since the elements are being accessed in sorted, order, the
|
|
+ * block that contains the elements must progress sequentially
|
|
+ * from block 0 to block[num_elem_blks-1]. Once we find an element
|
|
+ * not in this block, find a following block that contains it...
|
|
+ */
|
|
+ for (; jb < num_elem_blks; jb++) {
|
|
+ if (elem <= elem_blk_parms[jb].elem_ctr) {
|
|
+ break;
|
|
+ }
|
|
}
|
|
- }
|
|
|
|
- if (j < num_elem_blks) {
|
|
- assert(side < elem_blk_parms[j].num_sides);
|
|
- side_set_node_cnt_list[i] = elem_blk_parms[j].num_nodes_per_side[side];
|
|
- }
|
|
- else {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: Invalid element number %" PRId64 " found in side set %" PRId64 " in file %d",
|
|
- elem, side_set_id, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- err_stat = EX_FATAL;
|
|
- goto cleanup;
|
|
+ if (jb < num_elem_blks) {
|
|
+ assert(side < elem_blk_parms[jb].num_sides);
|
|
+ side_set_node_cnt_list[i] = elem_blk_parms[jb].num_nodes_per_side[side];
|
|
+ }
|
|
+ else {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: Invalid element number %" PRId64 " found in side set %" PRId64
|
|
+ " in file %d",
|
|
+ elem, side_set_id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ err_stat = EX_FATAL;
|
|
+ goto cleanup;
|
|
+ }
|
|
}
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_side_set_node_list.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_side_set_node_list.c
|
|
index ef1ed624cb..604ca3696c 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_side_set_node_list.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_side_set_node_list.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2023, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -42,7 +42,7 @@ static int check_valid_side(size_t side_num, size_t max_sides, char *topology, i
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
err_stat = EX_FATAL;
|
|
}
|
|
- return (err_stat);
|
|
+ return err_stat;
|
|
}
|
|
|
|
static void get_nodes(int exoid, void_int *to, size_t ito, void_int *from, size_t ifrom)
|
|
@@ -58,7 +58,6 @@ static void get_nodes(int exoid, void_int *to, size_t ito, void_int *from, size_
|
|
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)
|
|
{
|
|
- size_t ii, i, j;
|
|
int64_t elem, side;
|
|
int64_t num_side_sets, num_elem_blks, num_df, ndim;
|
|
int64_t tot_num_elem = 0, tot_num_ss_elem = 0, elem_num = 0;
|
|
@@ -66,18 +65,18 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
void_int *elem_blk_ids = NULL;
|
|
void_int *connect = NULL;
|
|
void_int *ss_elem_ndx = NULL;
|
|
- int64_t * ss_elem_node_ndx = NULL;
|
|
- int64_t * ss_parm_ndx = NULL;
|
|
+ int64_t *ss_elem_node_ndx = NULL;
|
|
+ int64_t *ss_parm_ndx = NULL;
|
|
void_int *side_set_elem_list = NULL;
|
|
void_int *side_set_side_list = NULL;
|
|
- size_t elem_ctr, node_ctr, elem_num_pos;
|
|
+ int64_t elem_ctr, node_ctr, elem_num_pos;
|
|
size_t num_nodes_per_elem;
|
|
int int_size, ids_size;
|
|
|
|
int err_stat = EX_NOERR;
|
|
int status;
|
|
|
|
- struct ex__elem_blk_parm *elem_blk_parms = NULL;
|
|
+ struct exi_elem_blk_parm *elem_blk_parms = NULL;
|
|
|
|
/* side to node translation tables -
|
|
These tables are used to look up the side number based on the
|
|
@@ -87,136 +86,11 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
tables were generated by following the right-hand rule for determining
|
|
the outward normal.
|
|
*/
|
|
- /* triangle */
|
|
- static int tri_table[3][3] = {
|
|
- {1, 2, 4}, /* side 1 */
|
|
- {2, 3, 5}, /* side 2 */
|
|
- {3, 1, 6} /* side 3 */
|
|
- };
|
|
-
|
|
- /* triangle 3d */
|
|
- static int tri3_table[5][7] = {
|
|
- {1, 2, 3, 4, 5, 6, 7}, /* side 1 (face) */
|
|
- {3, 2, 1, 6, 5, 4, 7}, /* side 2 (face) */
|
|
- {1, 2, 4, 0, 0, 0, 0}, /* side 3 (edge) */
|
|
- {2, 3, 5, 0, 0, 0, 0}, /* side 4 (edge) */
|
|
- {3, 1, 6, 0, 0, 0, 0} /* side 5 (edge) */
|
|
- };
|
|
-
|
|
- /* quad */
|
|
- static int quad_table[4][3] = {
|
|
- {1, 2, 5}, /* side 1 */
|
|
- {2, 3, 6}, /* side 2 */
|
|
- {3, 4, 7}, /* side 3 */
|
|
- {4, 1, 8} /* side 4 */
|
|
- };
|
|
-
|
|
- /* shell */
|
|
- static int shell_table[6][9] = {
|
|
- {1, 2, 3, 4, 5, 6, 7, 8, 9}, /* side 1 (face) */
|
|
- {1, 4, 3, 2, 8, 7, 6, 5, 9}, /* side 2 (face) */
|
|
- {1, 2, 5, 0, 0, 0, 0, 0, 0}, /* side 3 (edge) */
|
|
- {2, 3, 6, 0, 0, 0, 0, 0, 0}, /* side 4 (edge) */
|
|
- {3, 4, 7, 0, 0, 0, 0, 0, 0}, /* side 5 (edge) */
|
|
- {4, 1, 8, 0, 0, 0, 0, 0, 0} /* side 6 (edge) */
|
|
- };
|
|
-
|
|
- /* tetra */
|
|
- static int tetra_table[4][7] = {
|
|
- {1, 2, 4, 5, 9, 8, 14}, /* Side 1 nodes */
|
|
- {2, 3, 4, 6, 10, 9, 12}, /* Side 2 nodes */
|
|
- {1, 4, 3, 8, 10, 7, 13}, /* Side 3 nodes */
|
|
- {1, 3, 2, 7, 6, 5, 11} /* Side 4 nodes */
|
|
- };
|
|
-
|
|
- /* wedge */
|
|
- /* wedge 6 or 7 */
|
|
- static int wedge6_table[5][4] = {
|
|
- {1, 2, 5, 4}, /* Side 1 nodes -- quad */
|
|
- {2, 3, 6, 5}, /* Side 2 nodes -- quad */
|
|
- {1, 4, 6, 3}, /* Side 3 nodes -- quad */
|
|
- {1, 3, 2, 0}, /* Side 4 nodes -- triangle */
|
|
- {4, 5, 6, 0} /* Side 5 nodes -- triangle */
|
|
- };
|
|
-
|
|
- /* wedge 12 -- localization element */
|
|
- static int wedge12_table[5][6] = {
|
|
- {1, 2, 5, 4, 7, 10}, /* Side 1 nodes -- quad */
|
|
- {2, 3, 6, 5, 8, 11}, /* Side 2 nodes -- quad */
|
|
- {1, 4, 6, 3, 9, 12}, /* Side 3 nodes -- quad */
|
|
- {1, 3, 2, 9, 8, 7}, /* Side 4 nodes -- triangle */
|
|
- {4, 5, 6, 10, 11, 12} /* Side 5 nodes -- triangle */
|
|
- };
|
|
-
|
|
- /* wedge 15 or 16 */
|
|
- static int wedge15_table[5][8] = {
|
|
- {1, 2, 5, 4, 7, 11, 13, 10}, /* Side 1 nodes -- quad */
|
|
- {2, 3, 6, 5, 8, 12, 14, 11}, /* Side 2 nodes -- quad */
|
|
- {1, 4, 6, 3, 10, 15, 12, 9}, /* Side 3 nodes -- quad */
|
|
- {1, 3, 2, 9, 8, 7, 0, 0}, /* Side 4 nodes -- triangle */
|
|
- {4, 5, 6, 13, 14, 15, 0, 0} /* Side 5 nodes -- triangle */
|
|
- };
|
|
-
|
|
- /* wedge 20 */
|
|
- static int wedge20_table[5][9] = {
|
|
- {1, 2, 5, 4, 7, 11, 13, 10, 20}, /* Side 1 nodes -- quad */
|
|
- {2, 3, 6, 5, 8, 12, 14, 11, 18}, /* Side 2 nodes -- quad */
|
|
- {1, 4, 6, 3, 10, 15, 12, 9, 19}, /* Side 3 nodes -- quad */
|
|
- {1, 3, 2, 9, 8, 7, 16, 0, 0}, /* Side 4 nodes -- triangle */
|
|
- {4, 5, 6, 13, 14, 15, 17, 0, 0} /* Side 5 nodes -- triangle */
|
|
- };
|
|
-
|
|
- /* wedge 21 */
|
|
- static int wedge21_table[5][9] = {
|
|
- {1, 2, 5, 4, 7, 11, 13, 10, 21}, /* Side 1 nodes -- quad */
|
|
- {2, 3, 6, 5, 8, 12, 14, 11, 19}, /* Side 2 nodes -- quad */
|
|
- {1, 4, 6, 3, 10, 15, 12, 9, 20}, /* Side 3 nodes -- quad */
|
|
- {1, 3, 2, 9, 8, 7, 17, 0, 0}, /* Side 4 nodes -- triangle */
|
|
- {4, 5, 6, 13, 14, 15, 18, 0, 0} /* Side 5 nodes -- triangle */
|
|
- };
|
|
-
|
|
- /* wedge 18 */
|
|
- static int wedge18_table[5][9] = {
|
|
- {1, 2, 5, 4, 7, 11, 13, 10, 16}, /* Side 1 nodes -- quad */
|
|
- {2, 3, 6, 5, 8, 12, 14, 11, 17}, /* Side 2 nodes -- quad */
|
|
- {1, 4, 6, 3, 10, 15, 12, 9, 18}, /* Side 3 nodes -- quad */
|
|
- {1, 3, 2, 9, 8, 7, 0, 0, 0}, /* Side 4 nodes -- triangle */
|
|
- {4, 5, 6, 13, 14, 15, 0, 0, 0} /* Side 5 nodes -- triangle */
|
|
- };
|
|
-
|
|
- /* hex */
|
|
- static int hex_table[6][9] = {
|
|
- {1, 2, 6, 5, 9, 14, 17, 13, 26}, /* side 1 */
|
|
- {2, 3, 7, 6, 10, 15, 18, 14, 25}, /* side 2 */
|
|
- {3, 4, 8, 7, 11, 16, 19, 15, 27}, /* side 3 */
|
|
- {1, 5, 8, 4, 13, 20, 16, 12, 24}, /* side 4 */
|
|
- {1, 4, 3, 2, 12, 11, 10, 9, 22}, /* side 5 */
|
|
- {5, 6, 7, 8, 17, 18, 19, 20, 23} /* side 6 */
|
|
- };
|
|
-
|
|
- /* hex 16 -- localization element */
|
|
- static int hex16_table[6][8] = {
|
|
- {1, 2, 6, 5, 9, 13, 0, 0}, /* side 1 -- 6 node quad */
|
|
- {2, 3, 7, 6, 10, 14, 0, 0}, /* side 2 -- 6 node quad */
|
|
- {3, 4, 8, 7, 11, 15, 0, 0}, /* side 3 -- 6 node quad */
|
|
- {4, 1, 5, 8, 12, 16, 0, 0}, /* side 4 -- 6 node quad */
|
|
- {1, 4, 3, 2, 12, 11, 10, 9}, /* side 5 -- 8 node quad */
|
|
- {5, 6, 7, 8, 13, 14, 15, 16} /* side 6 -- 8 node quad */
|
|
- };
|
|
-
|
|
- /* pyramid */
|
|
- static int pyramid_table[5][9] = {
|
|
- {1, 2, 5, 0, 6, 11, 10, 0, 15}, /* side 1 (tri) */
|
|
- {2, 3, 5, 0, 7, 12, 11, 0, 16}, /* side 2 (tri) */
|
|
- {3, 4, 5, 0, 8, 13, 12, 0, 17}, /* side 3 (tri) */
|
|
- {1, 5, 4, 0, 10, 13, 9, 0, 18}, /* side 4 (tri) */
|
|
- {1, 4, 3, 2, 9, 8, 7, 6, 14} /* side 5 (quad) */
|
|
- };
|
|
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -238,7 +112,7 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
}
|
|
|
|
/* Lookup index of side set id in VAR_SS_IDS array */
|
|
- if (ex__id_lkup(exoid, EX_SIDE_SET, side_set_id) <= 0) {
|
|
+ if (exi_id_lkup(exoid, EX_SIDE_SET, side_set_id) <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
if (status != 0) {
|
|
@@ -353,18 +227,18 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
if (int_size == sizeof(int64_t)) {
|
|
/* Sort side set element list into index array - non-destructive */
|
|
int64_t *elems = (int64_t *)ss_elem_ndx;
|
|
- for (i = 0; i < tot_num_ss_elem; i++) {
|
|
+ for (int i = 0; i < tot_num_ss_elem; i++) {
|
|
elems[i] = i; /* init index array to current position */
|
|
}
|
|
- ex__iqsort64(side_set_elem_list, ss_elem_ndx, tot_num_ss_elem);
|
|
+ exi_iqsort64(side_set_elem_list, ss_elem_ndx, tot_num_ss_elem);
|
|
}
|
|
else {
|
|
/* Sort side set element list into index array - non-destructive */
|
|
int *elems = (int *)ss_elem_ndx;
|
|
- for (i = 0; i < tot_num_ss_elem; i++) {
|
|
+ for (int i = 0; i < tot_num_ss_elem; i++) {
|
|
elems[i] = i; /* init index array to current position */
|
|
}
|
|
- ex__iqsort(side_set_elem_list, ss_elem_ndx, tot_num_ss_elem);
|
|
+ exi_iqsort(side_set_elem_list, ss_elem_ndx, tot_num_ss_elem);
|
|
}
|
|
|
|
/* Allocate space for the element block ids */
|
|
@@ -384,7 +258,7 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
}
|
|
|
|
/* Allocate space for the element block params */
|
|
- if (!(elem_blk_parms = malloc(num_elem_blks * sizeof(struct ex__elem_blk_parm)))) {
|
|
+ if (!(elem_blk_parms = malloc(num_elem_blks * sizeof(struct exi_elem_blk_parm)))) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate space for element block params "
|
|
"for file id %d",
|
|
@@ -395,7 +269,7 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
}
|
|
|
|
elem_ctr = 0;
|
|
- for (i = 0; i < num_elem_blks; i++) {
|
|
+ for (int i = 0; i < num_elem_blks; i++) {
|
|
ex_entity_id id;
|
|
if (ids_size == sizeof(int64_t)) {
|
|
id = ((int64_t *)elem_blk_ids)[i];
|
|
@@ -404,7 +278,7 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
id = ((int *)elem_blk_ids)[i];
|
|
}
|
|
|
|
- err_stat = ex__get_block_param(exoid, id, ndim, &elem_blk_parms[i]);
|
|
+ err_stat = exi_get_block_param(exoid, id, ndim, &elem_blk_parms[i]);
|
|
if (err_stat != EX_NOERR) {
|
|
goto cleanup;
|
|
}
|
|
@@ -440,8 +314,9 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
parameter index.
|
|
*/
|
|
node_ctr = 0;
|
|
- j = 0; /* The current element block... */
|
|
- for (ii = 0; ii < tot_num_ss_elem; ii++) {
|
|
+ int j = 0; /* The current element block... */
|
|
+ for (int64_t ii = 0; ii < tot_num_ss_elem; ii++) {
|
|
+ size_t i = 0;
|
|
if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
i = ((int64_t *)ss_elem_ndx)[ii];
|
|
elem = ((int64_t *)side_set_elem_list)[i];
|
|
@@ -486,7 +361,8 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
if (node_ctr != num_df) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"Warning: In side set %" PRId64 " the distribution factor count (%" PRId64
|
|
- ") does not match the side set node list length (%zu). These should match and this "
|
|
+ ") does not match the side set node list length (%" PRId64
|
|
+ "). These should match and this "
|
|
"may indicate a corrupt database in file %d",
|
|
side_set_id, num_df, node_ctr, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MSG);
|
|
@@ -497,18 +373,18 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
* exclusive scan to determine where the nodes will be put in the list for each face
|
|
*/
|
|
if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
- for (i = 0; i < tot_num_ss_elem; i++) {
|
|
+ for (int64_t i = 0; i < tot_num_ss_elem; i++) {
|
|
((int64_t *)side_set_node_cnt_list)[i] = ss_elem_node_ndx[i];
|
|
}
|
|
}
|
|
else {
|
|
- for (i = 0; i < tot_num_ss_elem; i++) {
|
|
+ for (int64_t i = 0; i < tot_num_ss_elem; i++) {
|
|
((int *)side_set_node_cnt_list)[i] = (int)ss_elem_node_ndx[i];
|
|
}
|
|
}
|
|
|
|
int64_t sum = 0;
|
|
- for (i = 0; i < tot_num_ss_elem; i++) {
|
|
+ for (int64_t i = 0; i < tot_num_ss_elem; i++) {
|
|
int64_t cnt = ss_elem_node_ndx[i];
|
|
ss_elem_node_ndx[i] = sum;
|
|
sum += cnt;
|
|
@@ -606,13 +482,27 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
|
|
case EX_EL_BEAM: { /* Note: no side-node lookup table is used for this
|
|
simple case */
|
|
- for (i = 0; i < num_nodes_per_elem; i++) {
|
|
- get_nodes(exoid, side_set_node_list, node_pos + i, connect, connect_offset + i);
|
|
+ if (side_num == 0) {
|
|
+ for (size_t i = 0; i < num_nodes_per_elem; i++) {
|
|
+ get_nodes(exoid, side_set_node_list, node_pos + i, connect, connect_offset + i);
|
|
+ }
|
|
+ }
|
|
+ else {
|
|
+ for (size_t i = 0; i < num_nodes_per_elem; i++) {
|
|
+ int nn = num_nodes_per_elem - i - 1;
|
|
+ get_nodes(exoid, side_set_node_list, node_pos + i, connect, connect_offset + nn);
|
|
+ }
|
|
}
|
|
break;
|
|
}
|
|
case EX_EL_TRIANGLE: {
|
|
if (ndim == 2) { /* 2d TRIs */
|
|
+ static const int tri_table[3][3] = {
|
|
+ {1, 2, 4}, /* side 1 */
|
|
+ {2, 3, 5}, /* side 2 */
|
|
+ {3, 1, 6} /* side 3 */
|
|
+ };
|
|
+
|
|
if (check_valid_side(side_num, 3, "triangle", exoid) != EX_NOERR) {
|
|
goto cleanup;
|
|
}
|
|
@@ -632,6 +522,14 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
goto cleanup;
|
|
}
|
|
|
|
+ static const int tri3_table[5][7] = {
|
|
+ {1, 2, 3, 4, 5, 6, 7}, /* side 1 (face) */
|
|
+ {3, 2, 1, 6, 5, 4, 7}, /* side 2 (face) */
|
|
+ {1, 2, 4, 0, 0, 0, 0}, /* side 3 (edge) */
|
|
+ {2, 3, 5, 0, 0, 0, 0}, /* side 4 (edge) */
|
|
+ {3, 1, 6, 0, 0, 0, 0} /* side 5 (edge) */
|
|
+ };
|
|
+
|
|
get_nodes(exoid, side_set_node_list, node_pos, connect,
|
|
connect_offset + tri3_table[side_num][0] - 1);
|
|
get_nodes(exoid, side_set_node_list, node_pos + 1, connect,
|
|
@@ -699,6 +597,13 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
goto cleanup;
|
|
}
|
|
|
|
+ static const int quad_table[4][3] = {
|
|
+ {1, 2, 5}, /* side 1 */
|
|
+ {2, 3, 6}, /* side 2 */
|
|
+ {3, 4, 7}, /* side 3 */
|
|
+ {4, 1, 8} /* side 4 */
|
|
+ };
|
|
+
|
|
get_nodes(exoid, side_set_node_list, node_pos + 0, connect,
|
|
connect_offset + quad_table[side_num][0] - 1);
|
|
get_nodes(exoid, side_set_node_list, node_pos + 1, connect,
|
|
@@ -714,6 +619,15 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
goto cleanup;
|
|
}
|
|
|
|
+ static const int shell_table[6][9] = {
|
|
+ {1, 2, 3, 4, 5, 6, 7, 8, 9}, /* side 1 (face) */
|
|
+ {1, 4, 3, 2, 8, 7, 6, 5, 9}, /* side 2 (face) */
|
|
+ {1, 2, 5, 0, 0, 0, 0, 0, 0}, /* side 3 (edge) */
|
|
+ {2, 3, 6, 0, 0, 0, 0, 0, 0}, /* side 4 (edge) */
|
|
+ {3, 4, 7, 0, 0, 0, 0, 0, 0}, /* side 5 (edge) */
|
|
+ {4, 1, 8, 0, 0, 0, 0, 0, 0} /* side 6 (edge) */
|
|
+ };
|
|
+
|
|
get_nodes(exoid, side_set_node_list, node_pos + 0, connect,
|
|
connect_offset + shell_table[side_num][0] - 1);
|
|
get_nodes(exoid, side_set_node_list, node_pos + 1, connect,
|
|
@@ -767,6 +681,13 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
goto cleanup;
|
|
}
|
|
|
|
+ static const int tetra_table[4][7] = {
|
|
+ {1, 2, 4, 5, 9, 8, 14}, /* Side 1 nodes */
|
|
+ {2, 3, 4, 6, 10, 9, 12}, /* Side 2 nodes */
|
|
+ {1, 4, 3, 8, 10, 7, 13}, /* Side 3 nodes */
|
|
+ {1, 3, 2, 7, 6, 5, 11} /* Side 4 nodes */
|
|
+ };
|
|
+
|
|
get_nodes(exoid, side_set_node_list, node_pos + 0, connect,
|
|
connect_offset + tetra_table[side_num][0] - 1);
|
|
get_nodes(exoid, side_set_node_list, node_pos + 1, connect,
|
|
@@ -794,6 +715,13 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
}
|
|
|
|
if (num_nodes_per_elem == 6 || num_nodes_per_elem == 7) {
|
|
+ static const int wedge6_table[5][4] = {
|
|
+ {1, 2, 5, 4}, /* Side 1 nodes -- quad */
|
|
+ {2, 3, 6, 5}, /* Side 2 nodes -- quad */
|
|
+ {1, 4, 6, 3}, /* Side 3 nodes -- quad */
|
|
+ {1, 3, 2, 0}, /* Side 4 nodes -- triangle */
|
|
+ {4, 5, 6, 0} /* Side 5 nodes -- triangle */
|
|
+ };
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
connect_offset + wedge6_table[side_num][node_off++] - 1);
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
@@ -813,6 +741,14 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
}
|
|
|
|
else if (num_nodes_per_elem == 15 || num_nodes_per_elem == 16) {
|
|
+ static const int wedge15_table[5][8] = {
|
|
+ {1, 2, 5, 4, 7, 11, 13, 10}, /* Side 1 nodes -- quad */
|
|
+ {2, 3, 6, 5, 8, 12, 14, 11}, /* Side 2 nodes -- quad */
|
|
+ {1, 4, 6, 3, 10, 15, 12, 9}, /* Side 3 nodes -- quad */
|
|
+ {1, 3, 2, 9, 8, 7, 0, 0}, /* Side 4 nodes -- triangle */
|
|
+ {4, 5, 6, 13, 14, 15, 0, 0} /* Side 5 nodes -- triangle */
|
|
+ };
|
|
+
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
connect_offset + wedge15_table[side_num][node_off++] - 1);
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
@@ -842,6 +778,14 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
else if (num_nodes_per_elem == 12) {
|
|
/* Wedge 12 - 6-node quad faces (0,1,2) and 6-node tri faces (3,4) */
|
|
/* All faces (quad or tri) have 6 nodes */
|
|
+ static const int wedge12_table[5][6] = {
|
|
+ {1, 2, 5, 4, 7, 10}, /* Side 1 nodes -- quad */
|
|
+ {2, 3, 6, 5, 8, 11}, /* Side 2 nodes -- quad */
|
|
+ {1, 4, 6, 3, 9, 12}, /* Side 3 nodes -- quad */
|
|
+ {1, 3, 2, 9, 8, 7}, /* Side 4 nodes -- triangle */
|
|
+ {4, 5, 6, 10, 11, 12} /* Side 5 nodes -- triangle */
|
|
+ };
|
|
+
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
connect_offset + wedge12_table[side_num][node_off++] - 1);
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
@@ -858,6 +802,14 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
}
|
|
|
|
else if (num_nodes_per_elem == 20) {
|
|
+ static const int wedge20_table[5][9] = {
|
|
+ {1, 2, 5, 4, 7, 11, 13, 10, 20}, /* Side 1 nodes -- quad */
|
|
+ {2, 3, 6, 5, 8, 12, 14, 11, 18}, /* Side 2 nodes -- quad */
|
|
+ {1, 4, 6, 3, 10, 15, 12, 9, 19}, /* Side 3 nodes -- quad */
|
|
+ {1, 3, 2, 9, 8, 7, 16, 0, 0}, /* Side 4 nodes -- triangle */
|
|
+ {4, 5, 6, 13, 14, 15, 17, 0, 0} /* Side 5 nodes -- triangle */
|
|
+ };
|
|
+
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
connect_offset + wedge20_table[side_num][node_off++] - 1);
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
@@ -886,6 +838,13 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
}
|
|
}
|
|
else if (num_nodes_per_elem == 21) {
|
|
+ static const int wedge21_table[5][9] = {
|
|
+ {1, 2, 5, 4, 7, 11, 13, 10, 21}, /* Side 1 nodes -- quad */
|
|
+ {2, 3, 6, 5, 8, 12, 14, 11, 19}, /* Side 2 nodes -- quad */
|
|
+ {1, 4, 6, 3, 10, 15, 12, 9, 20}, /* Side 3 nodes -- quad */
|
|
+ {1, 3, 2, 9, 8, 7, 17, 0, 0}, /* Side 4 nodes -- triangle */
|
|
+ {4, 5, 6, 13, 14, 15, 18, 0, 0} /* Side 5 nodes -- triangle */
|
|
+ };
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
connect_offset + wedge21_table[side_num][node_off++] - 1);
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
@@ -915,6 +874,14 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
/* Wedge 18 - 9-node quad faces (0,1,2) and 6-node tri faces (3,4) */
|
|
/* All faces (quad or tri) have at least 6 nodes */
|
|
/* This gets nodes 1-6 */
|
|
+ static const int wedge18_table[5][9] = {
|
|
+ {1, 2, 5, 4, 7, 11, 13, 10, 16}, /* Side 1 nodes -- quad */
|
|
+ {2, 3, 6, 5, 8, 12, 14, 11, 17}, /* Side 2 nodes -- quad */
|
|
+ {1, 4, 6, 3, 10, 15, 12, 9, 18}, /* Side 3 nodes -- quad */
|
|
+ {1, 3, 2, 9, 8, 7, 0, 0, 0}, /* Side 4 nodes -- triangle */
|
|
+ {4, 5, 6, 13, 14, 15, 0, 0, 0} /* Side 5 nodes -- triangle */
|
|
+ };
|
|
+
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
connect_offset + wedge18_table[side_num][node_off++] - 1);
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
@@ -956,6 +923,14 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
goto cleanup;
|
|
}
|
|
|
|
+ static const int pyramid_table[5][9] = {
|
|
+ {1, 2, 5, 0, 6, 11, 10, 0, 15}, /* side 1 (tri) */
|
|
+ {2, 3, 5, 0, 7, 12, 11, 0, 16}, /* side 2 (tri) */
|
|
+ {3, 4, 5, 0, 8, 13, 12, 0, 17}, /* side 3 (tri) */
|
|
+ {1, 5, 4, 0, 10, 13, 9, 0, 18}, /* side 4 (tri) */
|
|
+ {1, 4, 3, 2, 9, 8, 7, 6, 14} /* side 5 (quad) */
|
|
+ };
|
|
+
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
connect_offset + pyramid_table[side_num][0] - 1);
|
|
get_nodes(exoid, side_set_node_list, node_pos++, connect,
|
|
@@ -1008,6 +983,15 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
|
|
if (num_nodes_per_elem == 16) {
|
|
/* Localization element -- four 6-node sides and two 8-node sides */
|
|
+ static const int hex16_table[6][8] = {
|
|
+ {1, 2, 6, 5, 9, 13, 0, 0}, /* side 1 -- 6 node quad */
|
|
+ {2, 3, 7, 6, 10, 14, 0, 0}, /* side 2 -- 6 node quad */
|
|
+ {3, 4, 8, 7, 11, 15, 0, 0}, /* side 3 -- 6 node quad */
|
|
+ {4, 1, 5, 8, 12, 16, 0, 0}, /* side 4 -- 6 node quad */
|
|
+ {1, 4, 3, 2, 12, 11, 10, 9}, /* side 5 -- 8 node quad */
|
|
+ {5, 6, 7, 8, 13, 14, 15, 16} /* side 6 -- 8 node quad */
|
|
+ };
|
|
+
|
|
get_nodes(exoid, side_set_node_list, node_pos + 0, connect,
|
|
connect_offset + hex16_table[side_num][0] - 1);
|
|
get_nodes(exoid, side_set_node_list, node_pos + 1, connect,
|
|
@@ -1028,6 +1012,15 @@ int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, void_int *sid
|
|
}
|
|
}
|
|
else {
|
|
+ static const int hex_table[6][9] = {
|
|
+ {1, 2, 6, 5, 9, 14, 17, 13, 26}, /* side 1 */
|
|
+ {2, 3, 7, 6, 10, 15, 18, 14, 25}, /* side 2 */
|
|
+ {3, 4, 8, 7, 11, 16, 19, 15, 27}, /* side 3 */
|
|
+ {1, 5, 8, 4, 13, 20, 16, 12, 24}, /* side 4 */
|
|
+ {1, 4, 3, 2, 12, 11, 10, 9, 22}, /* side 5 */
|
|
+ {5, 6, 7, 8, 17, 18, 19, 20, 23} /* side 6 */
|
|
+ };
|
|
+
|
|
get_nodes(exoid, side_set_node_list, node_pos + 0, connect,
|
|
connect_offset + hex_table[side_num][0] - 1);
|
|
get_nodes(exoid, side_set_node_list, node_pos + 1, connect,
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_side_set_node_list_len.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_side_set_node_list_len.c
|
|
index aff9b20a94..6e0ac40f98 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_side_set_node_list_len.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_side_set_node_list_len.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2023, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -36,13 +36,13 @@
|
|
int ex_get_side_set_node_list_len(int exoid, ex_entity_id side_set_id,
|
|
void_int *side_set_node_list_len)
|
|
{
|
|
- size_t ii, i, j;
|
|
+ int64_t ii, i, j;
|
|
int64_t num_side_sets, num_elem_blks, num_df, ndim;
|
|
- size_t list_len = 0;
|
|
+ int64_t list_len = 0;
|
|
int64_t tot_num_elem = 0, tot_num_ss_elem = 0;
|
|
void_int *elem_blk_ids = NULL;
|
|
- int * ss_elem_ndx = NULL;
|
|
- int64_t * ss_elem_ndx_64 = NULL;
|
|
+ int *ss_elem_ndx = NULL;
|
|
+ int64_t *ss_elem_ndx_64 = NULL;
|
|
|
|
void_int *side_set_elem_list = NULL;
|
|
void_int *side_set_side_list = NULL;
|
|
@@ -51,16 +51,17 @@ int ex_get_side_set_node_list_len(int exoid, ex_entity_id side_set_id,
|
|
int err_stat = EX_NOERR;
|
|
int status;
|
|
|
|
- struct ex__elem_blk_parm *elem_blk_parms = NULL;
|
|
+ struct exi_elem_blk_parm *elem_blk_parms = NULL;
|
|
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
+ bool ints_64 = ex_int64_status(exoid) & EX_BULK_INT64_API;
|
|
+ if (ints_64) {
|
|
*(int64_t *)side_set_node_list_len = 0; /* default value */
|
|
}
|
|
else {
|
|
@@ -111,7 +112,7 @@ int ex_get_side_set_node_list_len(int exoid, ex_entity_id side_set_id,
|
|
}
|
|
|
|
/* First determine the # of elements in the side set*/
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
+ if (ints_64) {
|
|
status = ex_get_set_param(exoid, EX_SIDE_SET, side_set_id, &tot_num_ss_elem, &num_df);
|
|
}
|
|
else {
|
|
@@ -136,10 +137,8 @@ int ex_get_side_set_node_list_len(int exoid, ex_entity_id side_set_id,
|
|
|
|
/* Allocate space for the side set element list */
|
|
{
|
|
- int int_size = sizeof(int);
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
- int_size = sizeof(int64_t);
|
|
- }
|
|
+ int int_size = ints_64 ? sizeof(int64_t) : sizeof(int);
|
|
+
|
|
if (!(side_set_elem_list = malloc(tot_num_ss_elem * int_size))) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate space for side set element "
|
|
@@ -189,17 +188,17 @@ int ex_get_side_set_node_list_len(int exoid, ex_entity_id side_set_id,
|
|
}
|
|
|
|
/* Sort side set element list into index array - non-destructive */
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
+ if (ints_64) {
|
|
for (i = 0; i < tot_num_ss_elem; i++) {
|
|
ss_elem_ndx_64[i] = i; /* init index array to current position */
|
|
}
|
|
- ex__iqsort64(side_set_elem_list, ss_elem_ndx_64, tot_num_ss_elem);
|
|
+ exi_iqsort64(side_set_elem_list, ss_elem_ndx_64, tot_num_ss_elem);
|
|
}
|
|
else {
|
|
for (i = 0; i < tot_num_ss_elem; i++) {
|
|
ss_elem_ndx[i] = i; /* init index array to current position */
|
|
}
|
|
- ex__iqsort(side_set_elem_list, ss_elem_ndx, tot_num_ss_elem);
|
|
+ exi_iqsort(side_set_elem_list, ss_elem_ndx, tot_num_ss_elem);
|
|
}
|
|
|
|
/* Allocate space for the element block ids */
|
|
@@ -228,7 +227,7 @@ int ex_get_side_set_node_list_len(int exoid, ex_entity_id side_set_id,
|
|
}
|
|
|
|
/* Allocate space for the element block params */
|
|
- if (!(elem_blk_parms = calloc(num_elem_blks, sizeof(struct ex__elem_blk_parm)))) {
|
|
+ if (!(elem_blk_parms = calloc(num_elem_blks, sizeof(struct exi_elem_blk_parm)))) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate space for element block params "
|
|
"for file id %d",
|
|
@@ -248,7 +247,7 @@ int ex_get_side_set_node_list_len(int exoid, ex_entity_id side_set_id,
|
|
id = ((int *)elem_blk_ids)[i];
|
|
}
|
|
|
|
- err_stat = ex__get_block_param(exoid, id, ndim, &elem_blk_parms[i]);
|
|
+ err_stat = exi_get_block_param(exoid, id, ndim, &elem_blk_parms[i]);
|
|
if (err_stat != EX_NOERR) {
|
|
goto cleanup;
|
|
}
|
|
@@ -262,9 +261,9 @@ int ex_get_side_set_node_list_len(int exoid, ex_entity_id side_set_id,
|
|
list_len = 0;
|
|
j = 0; /* The current element block... */
|
|
for (ii = 0; ii < tot_num_ss_elem; ii++) {
|
|
- size_t elem;
|
|
- size_t side;
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
+ int64_t elem;
|
|
+ int64_t side;
|
|
+ if (ints_64) {
|
|
i = ss_elem_ndx_64[ii];
|
|
elem = ((int64_t *)side_set_elem_list)[i];
|
|
side = ((int64_t *)side_set_side_list)[i];
|
|
@@ -291,8 +290,8 @@ int ex_get_side_set_node_list_len(int exoid, ex_entity_id side_set_id,
|
|
|
|
if (j >= num_elem_blks) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: Invalid element number %zu found in side set %" PRId64 " in file %d", elem,
|
|
- side_set_id, exoid);
|
|
+ "ERROR: Invalid element number %" PRId64 " found in side set %" PRId64 " in file %d",
|
|
+ elem, side_set_id, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
err_stat = EX_FATAL;
|
|
goto cleanup;
|
|
@@ -300,7 +299,7 @@ int ex_get_side_set_node_list_len(int exoid, ex_entity_id side_set_id,
|
|
list_len += elem_blk_parms[j].num_nodes_per_side[side - 1];
|
|
}
|
|
|
|
- if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
+ if (ints_64) {
|
|
*(int64_t *)side_set_node_list_len = list_len;
|
|
}
|
|
else {
|
|
@@ -311,7 +310,8 @@ int ex_get_side_set_node_list_len(int exoid, ex_entity_id side_set_id,
|
|
if (list_len != num_df) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"Warning: In side set %" PRId64 " the distribution factor count (%" PRId64
|
|
- ") does not match the side set node list length (%zu). These should match and this "
|
|
+ ") does not match the side set node list length (%" PRId64
|
|
+ "). These should match and this "
|
|
"may indicate a corrupt database in file %d",
|
|
side_set_id, num_df, list_len, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MSG);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_ss_param_global.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_ss_param_global.c
|
|
index 3c776871f9..29c1dad0bf 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_ss_param_global.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_ss_param_global.c
|
|
@@ -35,7 +35,7 @@ int ex_get_ss_param_global(int exoid, void_int *global_ids, void_int *side_cnts,
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_time.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_time.c
|
|
index 45fc9e7b31..08a71b3386 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_time.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_time.c
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__comp_ws, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_comp_ws, etc
|
|
|
|
/*!
|
|
\ingroup ResultsData
|
|
@@ -54,11 +54,11 @@ int ex_get_time(int exoid, int time_step, void *time_value)
|
|
int varid;
|
|
size_t start[1];
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- struct ex__file_item *file = NULL;
|
|
+ struct exi_file_item *file = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- file = ex__find_file_item(exoid);
|
|
+ file = exi_find_file_item(exoid);
|
|
if (!file) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d.", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
@@ -105,7 +105,7 @@ int ex_get_time(int exoid, int time_step, void *time_value)
|
|
/* read time value */
|
|
start[0] = --time_step;
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_var1_float(exoid, varid, start, time_value);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_truth_table.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_truth_table.c
|
|
index a5584e9b30..077f357640 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_truth_table.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_truth_table.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021, 2025 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -22,7 +22,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for ex__get_dimension, EX_FATAL, etc
|
|
+#include "exodusII_int.h" // for exi_get_dimension, EX_FATAL, etc
|
|
|
|
/*!
|
|
* \ingroup ResultsData
|
|
@@ -36,8 +36,11 @@
|
|
|
|
int ex_get_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_var, int *var_tab)
|
|
{
|
|
- int dimid, varid, tabid, i, j, status, status1;
|
|
- size_t num_entity = 0;
|
|
+ int dimid = 0;
|
|
+ int varid = 0;
|
|
+ int tabid = 0;
|
|
+ int status = 0;
|
|
+ int status1 = 0;
|
|
size_t num_var_db = 0;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
@@ -50,70 +53,70 @@ int ex_get_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
const char *var_name = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
switch (obj_type) {
|
|
case EX_EDGE_BLOCK:
|
|
status =
|
|
- ex__get_dimension(exoid, DIM_NUM_EDG_VAR, "edge variables", &num_var_db, &varid, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_EDG_VAR, "edge variables", &num_var_db, &varid, __func__);
|
|
status1 = nc_inq_varid(exoid, VAR_EBLK_TAB, &tabid);
|
|
var_name = "vals_edge_var";
|
|
ent_type = "eb";
|
|
break;
|
|
case EX_FACE_BLOCK:
|
|
status =
|
|
- ex__get_dimension(exoid, DIM_NUM_FAC_VAR, "face variables", &num_var_db, &varid, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_FAC_VAR, "face variables", &num_var_db, &varid, __func__);
|
|
status1 = nc_inq_varid(exoid, VAR_FBLK_TAB, &tabid);
|
|
var_name = "vals_face_var";
|
|
ent_type = "fb";
|
|
break;
|
|
case EX_ELEM_BLOCK:
|
|
- status = ex__get_dimension(exoid, DIM_NUM_ELE_VAR, "element variables", &num_var_db, &varid,
|
|
- __func__);
|
|
+ status = exi_get_dimension(exoid, DIM_NUM_ELE_VAR, "element variables", &num_var_db, &varid,
|
|
+ __func__);
|
|
status1 = nc_inq_varid(exoid, VAR_ELEM_TAB, &tabid);
|
|
var_name = "vals_elem_var";
|
|
ent_type = "eb";
|
|
break;
|
|
case EX_NODE_SET:
|
|
- status = ex__get_dimension(exoid, DIM_NUM_NSET_VAR, "nodeset variables", &num_var_db, &varid,
|
|
- __func__);
|
|
+ status = exi_get_dimension(exoid, DIM_NUM_NSET_VAR, "nodeset variables", &num_var_db, &varid,
|
|
+ __func__);
|
|
status1 = nc_inq_varid(exoid, VAR_NSET_TAB, &tabid);
|
|
var_name = "vals_nset_var";
|
|
ent_type = "ns";
|
|
break;
|
|
case EX_EDGE_SET:
|
|
- status = ex__get_dimension(exoid, DIM_NUM_ESET_VAR, "edgeset variables", &num_var_db, &varid,
|
|
- __func__);
|
|
+ status = exi_get_dimension(exoid, DIM_NUM_ESET_VAR, "edgeset variables", &num_var_db, &varid,
|
|
+ __func__);
|
|
status1 = nc_inq_varid(exoid, VAR_ESET_TAB, &tabid);
|
|
var_name = "vals_eset_var";
|
|
ent_type = "es";
|
|
break;
|
|
case EX_FACE_SET:
|
|
- status = ex__get_dimension(exoid, DIM_NUM_FSET_VAR, "faceset variables", &num_var_db, &varid,
|
|
- __func__);
|
|
+ status = exi_get_dimension(exoid, DIM_NUM_FSET_VAR, "faceset variables", &num_var_db, &varid,
|
|
+ __func__);
|
|
status1 = nc_inq_varid(exoid, VAR_FSET_TAB, &tabid);
|
|
var_name = "vals_fset_var";
|
|
ent_type = "fs";
|
|
break;
|
|
case EX_SIDE_SET:
|
|
- status = ex__get_dimension(exoid, DIM_NUM_SSET_VAR, "sideset variables", &num_var_db, &varid,
|
|
- __func__);
|
|
+ status = exi_get_dimension(exoid, DIM_NUM_SSET_VAR, "sideset variables", &num_var_db, &varid,
|
|
+ __func__);
|
|
status1 = nc_inq_varid(exoid, VAR_SSET_TAB, &tabid);
|
|
var_name = "vals_sset_var";
|
|
ent_type = "ss";
|
|
break;
|
|
case EX_ELEM_SET:
|
|
- status = ex__get_dimension(exoid, DIM_NUM_ELSET_VAR, "elemset variables", &num_var_db, &varid,
|
|
- __func__);
|
|
+ status = exi_get_dimension(exoid, DIM_NUM_ELSET_VAR, "elemset variables", &num_var_db, &varid,
|
|
+ __func__);
|
|
status1 = nc_inq_varid(exoid, VAR_ELSET_TAB, &tabid);
|
|
var_name = "vals_elset_var";
|
|
ent_type = "es";
|
|
break;
|
|
case EX_BLOB:
|
|
status =
|
|
- ex__get_dimension(exoid, DIM_NUM_BLOB_VAR, "blob variables", &num_var_db, &varid, __func__);
|
|
+ exi_get_dimension(exoid, DIM_NUM_BLOB_VAR, "blob variables", &num_var_db, &varid, __func__);
|
|
status1 = nc_inq_varid(exoid, VAR_BLOB_TAB, &tabid);
|
|
var_name = "vals_blob_var";
|
|
ent_type = "blob";
|
|
@@ -129,11 +132,12 @@ int ex_get_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
EX_FUNC_LEAVE(EX_WARN);
|
|
}
|
|
|
|
+ size_t num_entity = 0;
|
|
if (obj_type == EX_BLOB) {
|
|
num_entity = ex_inquire_int(exoid, EX_INQ_BLOB);
|
|
}
|
|
else {
|
|
- status = ex__get_dimension(exoid, ex__dim_num_objects(obj_type), ex_name_of_object(obj_type),
|
|
+ status = exi_get_dimension(exoid, exi_dim_num_objects(obj_type), ex_name_of_object(obj_type),
|
|
&num_entity, &dimid, __func__);
|
|
if (status != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -157,11 +161,11 @@ int ex_get_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
|
|
if (status1 != NC_NOERR) {
|
|
/* since truth table isn't stored in the data file, derive it dynamically */
|
|
- for (j = 0; j < num_blk; j++) {
|
|
+ for (int j = 0; j < num_blk; j++) {
|
|
|
|
- for (i = 0; i < num_var; i++) {
|
|
+ for (int i = 0; i < num_var; i++) {
|
|
/* NOTE: names are 1-based */
|
|
- if (nc_inq_varid(exoid, ex__catstr2(var_name, i + 1, ent_type, j + 1), &tabid) ==
|
|
+ if (nc_inq_varid(exoid, exi_catstr2(var_name, i + 1, ent_type, j + 1), &tabid) ==
|
|
NC_NOERR) {
|
|
/* variable exists; put a 1 in the truth table */
|
|
var_tab[j * num_var + i] = 1;
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_var.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_var.c
|
|
index ee882e682c..5b4033cd6b 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_var.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_var.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2023 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
-#include "exodusII_int.h" // for ex__check_valid_file_id, etc
|
|
+#include "exodusII_int.h" // for exi_check_valid_file_id, etc
|
|
|
|
/*!
|
|
\ingroup ResultsData
|
|
@@ -68,79 +68,6 @@ error = ex_get_var (idexo, time_step, EX_ELEM_BLOCK, var_index, blk_id,
|
|
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)
|
|
{
|
|
- int status;
|
|
- int varid, obj_id_ndx;
|
|
- size_t start[2], count[2];
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
- EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
- }
|
|
-
|
|
- if (var_type == EX_NODAL) {
|
|
- /* FIXME: Special case: ignore obj_id, possible large_file complications,
|
|
- * etc. */
|
|
- status = ex__get_nodal_var(exoid, time_step, var_index, num_entry_this_obj, var_vals);
|
|
- EX_FUNC_LEAVE(status);
|
|
- }
|
|
- if (var_type == EX_GLOBAL) {
|
|
- /* FIXME: Special case: all vars stored in 2-D single array. */
|
|
- status = ex__get_glob_vars(exoid, time_step, num_entry_this_obj, var_vals);
|
|
- EX_FUNC_LEAVE(status);
|
|
- }
|
|
-
|
|
- /* Determine index of obj_id in VAR_ID_EL_BLK array */
|
|
- obj_id_ndx = ex__id_lkup(exoid, var_type, obj_id);
|
|
- if (obj_id_ndx <= 0) {
|
|
- ex_get_err(NULL, NULL, &status);
|
|
-
|
|
- if (status != 0) {
|
|
- if (status == EX_NULLENTITY) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "Warning: no %s variables for NULL block %" PRId64 " in file id %d",
|
|
- ex_name_of_object(var_type), obj_id, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_NULLENTITY);
|
|
- EX_FUNC_LEAVE(EX_WARN);
|
|
- }
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to locate %s id %" PRId64 " in id variable in file id %d",
|
|
- ex_name_of_object(var_type), obj_id, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
- }
|
|
- }
|
|
-
|
|
- /* inquire previously defined variable */
|
|
-
|
|
- if ((status = nc_inq_varid(exoid, ex__name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
- &varid)) != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s %" PRId64 " var %d in file id %d",
|
|
- ex_name_of_object(var_type), obj_id, var_index, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
- }
|
|
-
|
|
- /* read values of element variable */
|
|
- start[0] = --time_step;
|
|
- start[1] = 0;
|
|
-
|
|
- count[0] = 1;
|
|
- count[1] = num_entry_this_obj;
|
|
-
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
- status = nc_get_vara_float(exoid, varid, start, count, var_vals);
|
|
- }
|
|
- else {
|
|
- status = nc_get_vara_double(exoid, varid, start, count, var_vals);
|
|
- }
|
|
-
|
|
- if (status != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to get %s %" PRId64 " variable %d in file id %d",
|
|
- ex_name_of_object(var_type), obj_id, var_index, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
- }
|
|
- EX_FUNC_LEAVE(EX_NOERR);
|
|
+ return ex_get_var_multi_time(exoid, var_type, var_index, obj_id, num_entry_this_obj, time_step,
|
|
+ time_step, var_vals);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_var_multi_time.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_var_multi_time.c
|
|
new file mode 100644
|
|
index 0000000000..984ee9b5f8
|
|
--- /dev/null
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_var_multi_time.c
|
|
@@ -0,0 +1,148 @@
|
|
+/*
|
|
+ * Copyright(C) 1999-2020, 2023 National Technology & Engineering Solutions
|
|
+ * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
+ * NTESS, the U.S. Government retains certain rights in this software.
|
|
+ *
|
|
+ * See packages/seacas/LICENSE for details
|
|
+ */
|
|
+
|
|
+#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
+#include "exodusII_int.h" // for exi_check_valid_file_id, etc
|
|
+
|
|
+/*!
|
|
+\ingroup ResultsData
|
|
+
|
|
+The function ex_get_var() reads the values of the
|
|
+selected entity variables for a single time step. Memory must be allocated for
|
|
+the variables values array before this function is invoked.
|
|
+
|
|
+Because variables are floating point values, the application
|
|
+code must declare the array passed to be the appropriate type
|
|
+(float or double) to match the compute word size passed in
|
|
+ex_create() or ex_open().
|
|
+
|
|
+In case of an error, ex_get_var() 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()
|
|
+ - variable does not exist for the desired block or set.
|
|
+ - invalid block or set.
|
|
+ - no variables of the selected type stored in the file.
|
|
+ - a warning value is returned if no variables of the selected entity type are stored in the file.
|
|
+
|
|
+\param[in] exoid exodus file ID returned from a previous call to
|
|
+ex_create() or ex_open().
|
|
+
|
|
+\param[in] var_type block/variable type node, edge/face/element block, or
|
|
+ node/edge/face/side/element set of type ex_entity_type.
|
|
+\param[in] var_index variable index; 1-based
|
|
+\param[in] obj_id object id, see ex_get_ids()
|
|
+\param[in] num_entry_this_obj The number of entities in this object stored in the database.
|
|
+\param[in] beg_time_step The first time step to access variable data from. 1-based.
|
|
+\param[in] end_time_step The last time step to access variable data from. 1-based.
|
|
+
|
|
+\param[out] var_vals Returned array of num_entry_this_obj variable values
|
|
+ for the time_step'th time step.
|
|
+
|
|
+The following is an example code segment that reads the 10th element
|
|
+variable for element block with id 100 over all 10 time steps. There
|
|
+are 'num_elements_this_block' elements in element block 100.
|
|
+
|
|
+~~~{.c}
|
|
+int num_elements_this_block, error, time_step;
|
|
+int var_index = 10;
|
|
+int blk_id = 100;
|
|
+int num_time_step = 10;
|
|
+int num_variables;
|
|
+float *var_values;
|
|
+
|
|
+var_values = (float *) calloc(num_elements_this_block * num_time_step, sizeof(float));
|
|
+error = ex_get_var_multi_time (idexo, EX_ELEM_BLOCK, var_index, blk_id,
|
|
+ num_elements_this_block, 1, num_time_step, var_values);
|
|
+~~~
|
|
+
|
|
+ */
|
|
+
|
|
+int ex_get_var_multi_time(int exoid, ex_entity_type var_type, int var_index, ex_entity_id obj_id,
|
|
+ int64_t num_entry_this_obj, int beg_time_step, int end_time_step,
|
|
+ void *var_vals)
|
|
+{
|
|
+ int status;
|
|
+ int varid, obj_id_ndx;
|
|
+ size_t start[2], count[2];
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+
|
|
+ EX_FUNC_ENTER();
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ if (var_type == EX_NODAL) {
|
|
+ /* FIXME: Special case: ignore obj_id, possible large_file complications,
|
|
+ * etc. */
|
|
+ status = exi_get_nodal_var_multi_time(exoid, var_index, num_entry_this_obj, beg_time_step,
|
|
+ end_time_step, var_vals);
|
|
+ EX_FUNC_LEAVE(status);
|
|
+ }
|
|
+ if (var_type == EX_GLOBAL) {
|
|
+ /* FIXME: Special case: all vars stored in 2-D single array. */
|
|
+ status = exi_get_glob_vars_multi_time(exoid, num_entry_this_obj, beg_time_step, end_time_step,
|
|
+ var_vals);
|
|
+ EX_FUNC_LEAVE(status);
|
|
+ }
|
|
+
|
|
+ /* Determine index of obj_id in VAR_ID_EL_BLK array */
|
|
+ obj_id_ndx = exi_id_lkup(exoid, var_type, obj_id);
|
|
+ if (obj_id_ndx <= 0) {
|
|
+ ex_get_err(NULL, NULL, &status);
|
|
+
|
|
+ if (status != 0) {
|
|
+ if (status == EX_NULLENTITY) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "Warning: no %s variables for NULL block %" PRId64 " in file id %d",
|
|
+ ex_name_of_object(var_type), obj_id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_NULLENTITY);
|
|
+ EX_FUNC_LEAVE(EX_WARN);
|
|
+ }
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to locate %s id %" PRId64 " in id variable in file id %d",
|
|
+ ex_name_of_object(var_type), obj_id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ /* inquire previously defined variable */
|
|
+
|
|
+ if ((status = nc_inq_varid(exoid, exi_name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
+ &varid)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s %" PRId64 " var %d in file id %d",
|
|
+ ex_name_of_object(var_type), obj_id, var_index, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ /* read values of element variable */
|
|
+ start[0] = --beg_time_step;
|
|
+ start[1] = 0;
|
|
+
|
|
+ count[0] = end_time_step - beg_time_step;
|
|
+ count[1] = num_entry_this_obj;
|
|
+
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
+ status = nc_get_vara_float(exoid, varid, start, count, var_vals);
|
|
+ }
|
|
+ else {
|
|
+ status = nc_get_vara_double(exoid, varid, start, count, var_vals);
|
|
+ }
|
|
+
|
|
+ if (status != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to get %s %" PRId64 " variable %d in file id %d",
|
|
+ ex_name_of_object(var_type), obj_id, var_index, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ EX_FUNC_LEAVE(EX_NOERR);
|
|
+}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_var_time.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_var_time.c
|
|
index 279e95756e..ddff7941f4 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_var_time.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_var_time.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2023, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -46,9 +46,8 @@ int ex_get_var_time(int exoid, ex_entity_type var_type, int var_index, int64_t i
|
|
{
|
|
int dimid, varid;
|
|
int status;
|
|
- int * stat_vals = NULL;
|
|
- size_t numel = 0;
|
|
- size_t offset;
|
|
+ int *stat_vals = NULL;
|
|
+ int64_t numel = 0;
|
|
size_t num_obj, i;
|
|
size_t num_entries_this_obj = 0;
|
|
size_t start[2], count[2];
|
|
@@ -57,16 +56,16 @@ int ex_get_var_time(int exoid, ex_entity_type var_type, int var_index, int64_t i
|
|
const char *varobstat;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
switch (var_type) {
|
|
case EX_GLOBAL:
|
|
- status = ex__get_glob_var_time(exoid, var_index, beg_time_step, end_time_step, var_vals);
|
|
+ status = exi_get_glob_var_time(exoid, var_index, beg_time_step, end_time_step, var_vals);
|
|
EX_FUNC_LEAVE(status);
|
|
case EX_NODAL:
|
|
- status = ex__get_nodal_var_time(exoid, var_index, id, beg_time_step, end_time_step, var_vals);
|
|
+ status = exi_get_nodal_var_time(exoid, var_index, id, beg_time_step, end_time_step, var_vals);
|
|
EX_FUNC_LEAVE(status);
|
|
case EX_EDGE_BLOCK:
|
|
varobjids = VAR_ID_ED_BLK;
|
|
@@ -115,7 +114,7 @@ int ex_get_var_time(int exoid, ex_entity_type var_type, int var_index, int64_t i
|
|
/* find what object the entry is in */
|
|
|
|
/* first, find out how many objects there are */
|
|
- status = ex__get_dimension(exoid, ex__dim_num_objects(var_type), ex_name_of_object(var_type),
|
|
+ status = exi_get_dimension(exoid, exi_dim_num_objects(var_type), ex_name_of_object(var_type),
|
|
&num_obj, &dimid, __func__);
|
|
if (status != NC_NOERR) {
|
|
EX_FUNC_LEAVE(status);
|
|
@@ -170,7 +169,7 @@ int ex_get_var_time(int exoid, ex_entity_type var_type, int var_index, int64_t i
|
|
|
|
i = 0;
|
|
if (stat_vals[i] != 0) {
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_entries_in_object(var_type, i + 1), &dimid)) !=
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_entries_in_object(var_type, i + 1), &dimid)) !=
|
|
NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to locate number of entries in %zuth %s in file id %d", i,
|
|
@@ -194,7 +193,7 @@ int ex_get_var_time(int exoid, ex_entity_type var_type, int var_index, int64_t i
|
|
|
|
while (numel <= id) {
|
|
if (stat_vals[++i] != 0) {
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_entries_in_object(var_type, i + 1), &dimid)) !=
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_entries_in_object(var_type, i + 1), &dimid)) !=
|
|
NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to locate number of entries in %zuth %s in file id %d", i,
|
|
@@ -215,10 +214,10 @@ int ex_get_var_time(int exoid, ex_entity_type var_type, int var_index, int64_t i
|
|
numel += num_entries_this_obj;
|
|
}
|
|
}
|
|
- offset = id - (numel - num_entries_this_obj);
|
|
+ size_t offset = id - (numel - num_entries_this_obj);
|
|
|
|
/* inquire previously defined variable */
|
|
- if ((status = nc_inq_varid(exoid, ex__name_var_of_object(var_type, var_index, i + 1), &varid)) !=
|
|
+ if ((status = nc_inq_varid(exoid, exi_name_var_of_object(var_type, var_index, i + 1), &varid)) !=
|
|
NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to locate variable %zu for %dth %s in file id %d", i, var_index,
|
|
@@ -275,7 +274,7 @@ int ex_get_var_time(int exoid, ex_entity_type var_type, int var_index, int64_t i
|
|
count[0] = end_time_step - beg_time_step + 1;
|
|
count[1] = 1;
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_get_vara_float(exoid, varid, start, count, var_vals);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_variable_name.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_variable_name.c
|
|
index 8ff88c8c2e..8b5d2f2e58 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_variable_name.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_variable_name.c
|
|
@@ -40,7 +40,7 @@ int ex_get_variable_name(int exoid, ex_entity_type obj_type, int var_num, char *
|
|
const char *vname = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -79,7 +79,7 @@ int ex_get_variable_name(int exoid, ex_entity_type obj_type, int var_num, char *
|
|
int api_name_size = ex_inquire_int(exoid, EX_INQ_MAX_READ_NAME_LENGTH);
|
|
int name_size = db_name_size < api_name_size ? db_name_size : api_name_size;
|
|
|
|
- status = ex__get_name(exoid, varid, var_num - 1, var_name, name_size, obj_type, __func__);
|
|
+ status = exi_get_name(exoid, varid, var_num - 1, var_name, name_size, obj_type, __func__);
|
|
if (status != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_variable_names.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_variable_names.c
|
|
index 88f6314e3b..b35bd4d9ea 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_variable_names.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_variable_names.c
|
|
@@ -71,7 +71,7 @@ int ex_get_variable_names(int exoid, ex_entity_type obj_type, int num_vars, char
|
|
const char *vvarname;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -104,7 +104,7 @@ int ex_get_variable_names(int exoid, ex_entity_type obj_type, int num_vars, char
|
|
}
|
|
|
|
/* read the variable names */
|
|
- status = ex__get_names(exoid, varid, num_vars, var_names, obj_type, __func__);
|
|
+ status = exi_get_names(exoid, varid, num_vars, var_names, obj_type, __func__);
|
|
if (status != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_get_variable_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_get_variable_param.c
|
|
index 54ebf13a23..e02b17490e 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_get_variable_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_get_variable_param.c
|
|
@@ -79,7 +79,7 @@ int ex_get_variable_param(int exoid, ex_entity_type obj_type, int *num_vars)
|
|
int status;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_inquire.c b/ThirdParty/exodusII/vtkexodusII/src/ex_inquire.c
|
|
index 5035f1e0c3..885b465cd4 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_inquire.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_inquire.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -10,106 +10,108 @@
|
|
#include "exodusII_int.h"
|
|
|
|
/*! \cond INTERNAL */
|
|
-static int ex__get_dimension_value(int exoid, int64_t *var, int default_value,
|
|
+static int exi_get_dimension_value(int exoid, int64_t *var, int default_value,
|
|
const char *dimension_name, int missing_ok)
|
|
{
|
|
- int status;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- size_t idum;
|
|
- int dimid;
|
|
+ int status;
|
|
+ int dimid;
|
|
|
|
if ((status = nc_inq_dimid(exoid, dimension_name, &dimid)) != NC_NOERR) {
|
|
*var = default_value;
|
|
if (missing_ok) {
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to retrieve dimension %s for file id %d",
|
|
dimension_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
+ size_t idum;
|
|
if ((status = nc_inq_dimlen(exoid, dimid, &idum)) != NC_NOERR) {
|
|
*var = default_value;
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to retrieve value for dimension %s for file id %d", dimension_name,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*var = idum;
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
static int ex_get_concat_set_len(int exoid, int64_t *set_length, const char *set_name,
|
|
const char *set_num_dim, const char *set_stat_var,
|
|
const char *set_size_root, int missing_ok)
|
|
{
|
|
- int i;
|
|
- int status;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- size_t idum;
|
|
- int dimid, varid;
|
|
- size_t num_sets;
|
|
- int * stat_vals = NULL;
|
|
-
|
|
*set_length = 0; /* default return value */
|
|
|
|
- if ((status = nc_inq_dimid(exoid, set_num_dim, &dimid)) == NC_NOERR) {
|
|
+ int dimid;
|
|
+ if (nc_inq_dimid(exoid, set_num_dim, &dimid) == NC_NOERR) {
|
|
+ int status;
|
|
+ size_t num_sets;
|
|
if ((status = nc_inq_dimlen(exoid, dimid, &num_sets)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of %s sets in file id %d",
|
|
set_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* Allocate space for stat array */
|
|
+ int *stat_vals = NULL;
|
|
if (!(stat_vals = malloc((int)num_sets * sizeof(int)))) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate memory for %s set status "
|
|
"array for file id %d",
|
|
set_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* get variable id of status array */
|
|
- if ((status = nc_inq_varid(exoid, set_stat_var, &varid)) == NC_NOERR) {
|
|
+ int varid;
|
|
+ if (nc_inq_varid(exoid, set_stat_var, &varid) == NC_NOERR) {
|
|
/* if status array exists, use it, otherwise assume, object exists
|
|
to be backward compatible */
|
|
if ((status = nc_get_var_int(exoid, varid, stat_vals)) != NC_NOERR) {
|
|
free(stat_vals);
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get %s set status array from file id %d",
|
|
set_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
else { /* default: status is true */
|
|
- for (i = 0; i < num_sets; i++) {
|
|
+ for (size_t i = 0; i < num_sets; i++) {
|
|
stat_vals[i] = 1;
|
|
}
|
|
}
|
|
|
|
- for (i = 0; i < num_sets; i++) {
|
|
+ for (size_t i = 0; i < num_sets; i++) {
|
|
if (stat_vals[i] == 0) { /* is this object null? */
|
|
continue;
|
|
}
|
|
|
|
- if ((status = nc_inq_dimid(exoid, ex__catstr(set_size_root, i + 1), &dimid)) != NC_NOERR) {
|
|
+ size_t idum;
|
|
+ if (nc_inq_dimid(exoid, exi_catstr(set_size_root, i + 1), &dimid) != NC_NOERR) {
|
|
if (missing_ok) {
|
|
idum = 0;
|
|
}
|
|
else {
|
|
*set_length = 0;
|
|
free(stat_vals);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
else {
|
|
- if ((status = nc_inq_dimlen(exoid, dimid, &idum)) != NC_NOERR) {
|
|
+ if (nc_inq_dimlen(exoid, dimid, &idum) != NC_NOERR) {
|
|
*set_length = 0;
|
|
free(stat_vals);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
|
|
@@ -118,7 +120,7 @@ static int ex_get_concat_set_len(int exoid, int64_t *set_length, const char *set
|
|
|
|
free(stat_vals);
|
|
}
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
static void flt_cvt(float *xptr, double x) { *xptr = (float)x; }
|
|
@@ -127,19 +129,16 @@ static void flt_cvt(float *xptr, double x) { *xptr = (float)x; }
|
|
static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float *ret_float,
|
|
char *ret_char)
|
|
{
|
|
- int dimid, varid, rootid;
|
|
- void_int *ids = NULL;
|
|
- size_t i;
|
|
- size_t ldum = 0;
|
|
- size_t num_sets, idum;
|
|
- int * stat_vals;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int status;
|
|
- char tmp_title[2048];
|
|
- int num_var;
|
|
-
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
- return (EX_FATAL);
|
|
+ int dimid, varid;
|
|
+ size_t ldum = 0;
|
|
+ size_t num_sets, idum;
|
|
+ int *stat_vals;
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ int status;
|
|
+ int num_var;
|
|
+
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if (ret_char) {
|
|
@@ -148,19 +147,19 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
if (!ret_int) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: integer argument is NULL which is not allowed.");
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
- rootid = exoid & EX_FILE_ID_MASK;
|
|
+ int rootid = exoid & EX_FILE_ID_MASK;
|
|
|
|
switch (req_info) {
|
|
case EX_INQ_FILE_TYPE:
|
|
|
|
/* obsolete call */
|
|
- /*returns "r" for regular EXODUS file or "h" for history EXODUS file*/
|
|
+ /*return "r" for regular EXODUS file or "h" for history EXODUS file*/
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: file type inquire is obsolete");
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- return (EX_WARN);
|
|
+ return EX_WARN;
|
|
|
|
case EX_INQ_API_VERS:
|
|
/* returns the EXODUS API version number */
|
|
@@ -169,7 +168,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
"Warning: float argument is NULL for EX_INQ_API_VERS "
|
|
"which is not allowed.");
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if (nc_get_att_float(rootid, NC_GLOBAL, ATT_API_VERSION, ret_float) !=
|
|
@@ -179,7 +178,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get EXODUS API version for file id %d",
|
|
rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
|
|
@@ -192,14 +191,14 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
"Warning: float argument is NULL for EX_INQ_DB_VERS "
|
|
"which is not allowed.");
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if ((status = nc_get_att_float(rootid, NC_GLOBAL, ATT_VERSION, ret_float)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to get EXODUS database version for file id %d", rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
break;
|
|
|
|
@@ -212,9 +211,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
flt_cvt(ret_float, version);
|
|
}
|
|
|
|
- if (ret_int) {
|
|
- *ret_int = EX_API_VERS_NODOT;
|
|
- }
|
|
+ *ret_int = EX_API_VERS_NODOT;
|
|
break;
|
|
|
|
case EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH:
|
|
@@ -222,7 +219,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
It will not include the space for the trailing null, so if it
|
|
is defined as 33 on the database, 32 will be returned.
|
|
*/
|
|
- if ((status = nc_inq_dimid(rootid, DIM_STR_NAME, &dimid)) != NC_NOERR) {
|
|
+ if (nc_inq_dimid(rootid, DIM_STR_NAME, &dimid) != NC_NOERR) {
|
|
/* If not found, then an older database */
|
|
*ret_int = 32;
|
|
}
|
|
@@ -233,7 +230,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get name string length in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
*ret_int = name_length - 1;
|
|
@@ -272,7 +269,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
* default if not set by the client is 32 characters. The value
|
|
* does not include the trailing null.
|
|
*/
|
|
- struct ex__file_item *file = ex__find_file_item(rootid);
|
|
+ struct exi_file_item *file = exi_find_file_item(rootid);
|
|
|
|
if (!file) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d for ex_inquire_int().", rootid);
|
|
@@ -291,17 +288,18 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
"for file id %d",
|
|
rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
else {
|
|
/* returns the title of the database */
|
|
/* Title is stored at root level... */
|
|
+ char tmp_title[2048];
|
|
if ((status = nc_get_att_text(rootid, NC_GLOBAL, ATT_TITLE, tmp_title)) != NC_NOERR) {
|
|
*ret_char = '\0';
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get database title for file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
ex_copy_string(ret_char, tmp_title, MAX_LINE_LENGTH + 1);
|
|
}
|
|
@@ -309,9 +307,9 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_DIM:
|
|
/* returns the dimensionality (2 or 3, for 2-d or 3-d) of the database */
|
|
- if (ex__get_dimension(exoid, DIM_NUM_DIM, "database dimensionality", &ldum, &dimid, __func__) !=
|
|
+ if (exi_get_dimension(exoid, DIM_NUM_DIM, "database dimensionality", &ldum, &dimid, __func__) !=
|
|
NC_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*ret_int = ldum;
|
|
break;
|
|
@@ -320,7 +318,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
/* returns the number of assemblies */
|
|
{
|
|
*ret_int = 0;
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
if (file) {
|
|
*ret_int = file->assembly_count;
|
|
}
|
|
@@ -331,7 +329,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
/* returns the number of blobs */
|
|
{
|
|
*ret_int = 0;
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
if (file) {
|
|
*ret_int = file->blob_count;
|
|
}
|
|
@@ -340,7 +338,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_NODES:
|
|
/* returns the number of nodes */
|
|
- if (ex__get_dimension(exoid, DIM_NUM_NODES, "nodes", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
+ if (exi_get_dimension(exoid, DIM_NUM_NODES, "nodes", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
*ret_int = 0;
|
|
}
|
|
else {
|
|
@@ -350,7 +348,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_ELEM:
|
|
/* returns the number of elements */
|
|
- if (ex__get_dimension(exoid, DIM_NUM_ELEM, "elements", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
+ if (exi_get_dimension(exoid, DIM_NUM_ELEM, "elements", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
*ret_int = 0;
|
|
}
|
|
else {
|
|
@@ -360,7 +358,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_ELEM_BLK:
|
|
/* returns the number of element blocks */
|
|
- if (ex__get_dimension(exoid, DIM_NUM_EL_BLK, "element blocks", &ldum, &dimid, NULL) !=
|
|
+ if (exi_get_dimension(exoid, DIM_NUM_EL_BLK, "element blocks", &ldum, &dimid, NULL) !=
|
|
NC_NOERR) {
|
|
*ret_int = 0;
|
|
}
|
|
@@ -371,7 +369,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_NODE_SETS:
|
|
/* returns the number of node sets */
|
|
- if (ex__get_dimension(exoid, DIM_NUM_NS, "node sets", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
+ if (exi_get_dimension(exoid, DIM_NUM_NS, "node sets", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
*ret_int = 0;
|
|
}
|
|
else {
|
|
@@ -404,10 +402,10 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of node sets in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
- for (i = 0; i < num_sets; i++) {
|
|
+ for (size_t i = 0; i < num_sets; i++) {
|
|
if ((status = nc_inq_varid(exoid, VAR_FACT_NS(i + 1), &varid)) != NC_NOERR) {
|
|
if (status == NC_ENOTVAR) {
|
|
idum = 0; /* this dist factor doesn't exist */
|
|
@@ -419,7 +417,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
"ERROR: failed to locate number of dist fact for %zu'th node set in file id %d", i,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
else {
|
|
@@ -429,7 +427,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
"ERROR: failed to locate number of nodes in %zu'th node set in file id %d", i,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
if ((status = nc_inq_dimlen(exoid, dimid, &idum)) != NC_NOERR) {
|
|
*ret_int = 0;
|
|
@@ -437,7 +435,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
"ERROR: failed to get number of nodes in %zu'th node set in file id %d", i,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
*ret_int += idum;
|
|
@@ -448,7 +446,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_SIDE_SETS:
|
|
/* returns the number of side sets */
|
|
- if (ex__get_dimension(exoid, DIM_NUM_SS, "side sets", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
+ if (exi_get_dimension(exoid, DIM_NUM_SS, "side sets", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
*ret_int = 0;
|
|
}
|
|
else {
|
|
@@ -467,22 +465,23 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of side sets in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
+ int *ids = NULL;
|
|
if (!(ids = malloc(num_sets * sizeof(int64_t)))) { /* May be getting 2x what is
|
|
needed, but should be OK */
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate memory for side set ids for file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if (ex_get_ids(exoid, EX_SIDE_SET, ids) == EX_FATAL) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get side set ids in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_LASTERR);
|
|
free(ids);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* allocate space for stat array */
|
|
@@ -493,10 +492,10 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
"array for file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
/* get variable id of status array */
|
|
- if ((status = nc_inq_varid(exoid, VAR_SS_STAT, &varid)) == NC_NOERR) {
|
|
+ if (nc_inq_varid(exoid, VAR_SS_STAT, &varid) == NC_NOERR) {
|
|
/* if status array exists, use it, otherwise assume, object exists
|
|
to be backward compatible */
|
|
|
|
@@ -506,18 +505,18 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to get element block status array from file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
else { /* default: status is true */
|
|
- for (i = 0; i < num_sets; i++) {
|
|
+ for (size_t i = 0; i < num_sets; i++) {
|
|
stat_vals[i] = 1;
|
|
}
|
|
}
|
|
|
|
/* walk id list, get each side set node length and sum for total */
|
|
|
|
- for (i = 0; i < num_sets; i++) {
|
|
+ for (size_t i = 0; i < num_sets; i++) {
|
|
ex_entity_id id;
|
|
if (stat_vals[i] == 0) { /* is this object null? */
|
|
continue;
|
|
@@ -547,7 +546,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(stat_vals);
|
|
free(ids);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
|
|
@@ -584,10 +583,10 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of side sets in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
- for (i = 0; i < num_sets; i++) {
|
|
+ for (size_t i = 0; i < num_sets; i++) {
|
|
if ((status = nc_inq_dimid(exoid, DIM_NUM_DF_SS(i + 1), &dimid)) != NC_NOERR) {
|
|
if (status == NC_EBADDIM) {
|
|
ldum = 0; /* this dist factor doesn't exist */
|
|
@@ -599,7 +598,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
"ERROR: failed to locate number of dist fact for %zu'th side set in file id %d", i,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
else {
|
|
@@ -609,7 +608,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
"ERROR: failed to get number of dist factors in %zu'th side set in file id %d",
|
|
i, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
*ret_int += ldum;
|
|
@@ -620,7 +619,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_QA:
|
|
/* returns the number of QA records */
|
|
- if (ex__get_dimension(rootid, DIM_NUM_QA, "QA records", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
+ if (exi_get_dimension(rootid, DIM_NUM_QA, "QA records", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
*ret_int = 0;
|
|
}
|
|
else {
|
|
@@ -630,7 +629,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_INFO:
|
|
/* returns the number of information records */
|
|
- if (ex__get_dimension(rootid, DIM_NUM_INFO, "info records", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
+ if (exi_get_dimension(rootid, DIM_NUM_INFO, "info records", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
*ret_int = 0;
|
|
}
|
|
else {
|
|
@@ -640,8 +639,8 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_TIME:
|
|
/* returns the number of time steps stored in the database */
|
|
- if (ex__get_dimension(exoid, DIM_TIME, "time dimension", &ldum, &dimid, __func__) != NC_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if (exi_get_dimension(exoid, DIM_TIME, "time dimension", &ldum, &dimid, __func__) != NC_NOERR) {
|
|
+ return EX_FATAL;
|
|
}
|
|
*ret_int = ldum;
|
|
break;
|
|
@@ -663,7 +662,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_ELEM_MAP:
|
|
/* returns the number of element maps */
|
|
- if (ex__get_dimension(exoid, DIM_NUM_EM, "element maps", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
+ if (exi_get_dimension(exoid, DIM_NUM_EM, "element maps", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
*ret_int = 0;
|
|
}
|
|
else {
|
|
@@ -678,7 +677,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_NODE_MAP:
|
|
/* returns the number of node maps */
|
|
- if (ex__get_dimension(exoid, DIM_NUM_NM, "node maps", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
+ if (exi_get_dimension(exoid, DIM_NUM_NM, "node maps", &ldum, &dimid, NULL) != NC_NOERR) {
|
|
*ret_int = 0;
|
|
}
|
|
else {
|
|
@@ -693,22 +692,22 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_EDGE:
|
|
/* returns the number of edges (defined across all edge blocks). */
|
|
- if (ex__get_dimension_value(exoid, ret_int, 0, DIM_NUM_EDGE, 1) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if (exi_get_dimension_value(exoid, ret_int, 0, DIM_NUM_EDGE, 1) != EX_NOERR) {
|
|
+ return EX_FATAL;
|
|
}
|
|
break;
|
|
|
|
case EX_INQ_EDGE_BLK:
|
|
/* returns the number of edge blocks. */
|
|
- if (ex__get_dimension_value(exoid, ret_int, 0, DIM_NUM_ED_BLK, 1) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if (exi_get_dimension_value(exoid, ret_int, 0, DIM_NUM_ED_BLK, 1) != EX_NOERR) {
|
|
+ return EX_FATAL;
|
|
}
|
|
break;
|
|
|
|
case EX_INQ_EDGE_SETS:
|
|
/* returns the number of edge sets. */
|
|
- if (ex__get_dimension_value(exoid, ret_int, 0, DIM_NUM_ES, 1) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if (exi_get_dimension_value(exoid, ret_int, 0, DIM_NUM_ES, 1) != EX_NOERR) {
|
|
+ return EX_FATAL;
|
|
}
|
|
break;
|
|
|
|
@@ -737,22 +736,22 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_FACE:
|
|
/* returns the number of faces (defined across all face blocks). */
|
|
- if (ex__get_dimension_value(exoid, ret_int, 0, DIM_NUM_FACE, 1) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if (exi_get_dimension_value(exoid, ret_int, 0, DIM_NUM_FACE, 1) != EX_NOERR) {
|
|
+ return EX_FATAL;
|
|
}
|
|
break;
|
|
|
|
case EX_INQ_FACE_BLK:
|
|
/* returns the number of face blocks. */
|
|
- if (ex__get_dimension_value(exoid, ret_int, 0, DIM_NUM_FA_BLK, 1) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if (exi_get_dimension_value(exoid, ret_int, 0, DIM_NUM_FA_BLK, 1) != EX_NOERR) {
|
|
+ return EX_FATAL;
|
|
}
|
|
break;
|
|
|
|
case EX_INQ_FACE_SETS:
|
|
/* returns the number of face sets. */
|
|
- if (ex__get_dimension_value(exoid, ret_int, 0, DIM_NUM_FS, 1) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if (exi_get_dimension_value(exoid, ret_int, 0, DIM_NUM_FS, 1) != EX_NOERR) {
|
|
+ return EX_FATAL;
|
|
}
|
|
break;
|
|
|
|
@@ -781,8 +780,8 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_ELEM_SETS:
|
|
/* returns the number of element sets. */
|
|
- if (ex__get_dimension_value(exoid, ret_int, 0, DIM_NUM_ELS, 1) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if (exi_get_dimension_value(exoid, ret_int, 0, DIM_NUM_ELS, 1) != EX_NOERR) {
|
|
+ return EX_FATAL;
|
|
}
|
|
break;
|
|
|
|
@@ -804,92 +803,92 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
|
|
case EX_INQ_EDGE_MAP:
|
|
/* returns the number of edge maps. */
|
|
- if (ex__get_dimension_value(exoid, ret_int, 0, DIM_NUM_EDM, 1) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if (exi_get_dimension_value(exoid, ret_int, 0, DIM_NUM_EDM, 1) != EX_NOERR) {
|
|
+ return EX_FATAL;
|
|
}
|
|
break;
|
|
|
|
case EX_INQ_FACE_MAP:
|
|
/* returns the number of face maps. */
|
|
- if (ex__get_dimension_value(exoid, ret_int, 0, DIM_NUM_FAM, 1) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if (exi_get_dimension_value(exoid, ret_int, 0, DIM_NUM_FAM, 1) != EX_NOERR) {
|
|
+ return EX_FATAL;
|
|
}
|
|
break;
|
|
|
|
case EX_INQ_NUM_NODE_VAR:
|
|
if (ex_get_variable_param(exoid, EX_NODAL, &num_var) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*ret_int = num_var;
|
|
break;
|
|
|
|
case EX_INQ_NUM_EDGE_BLOCK_VAR:
|
|
if (ex_get_variable_param(exoid, EX_EDGE_BLOCK, &num_var) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*ret_int = num_var;
|
|
break;
|
|
|
|
case EX_INQ_NUM_FACE_BLOCK_VAR:
|
|
if (ex_get_variable_param(exoid, EX_FACE_BLOCK, &num_var) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*ret_int = num_var;
|
|
break;
|
|
|
|
case EX_INQ_NUM_ELEM_BLOCK_VAR:
|
|
if (ex_get_variable_param(exoid, EX_ELEM_BLOCK, &num_var) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*ret_int = num_var;
|
|
break;
|
|
|
|
case EX_INQ_NUM_NODE_SET_VAR:
|
|
if (ex_get_variable_param(exoid, EX_NODE_SET, &num_var) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*ret_int = num_var;
|
|
break;
|
|
|
|
case EX_INQ_NUM_EDGE_SET_VAR:
|
|
if (ex_get_variable_param(exoid, EX_EDGE_SET, &num_var) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*ret_int = num_var;
|
|
break;
|
|
|
|
case EX_INQ_NUM_FACE_SET_VAR:
|
|
if (ex_get_variable_param(exoid, EX_FACE_SET, &num_var) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*ret_int = num_var;
|
|
break;
|
|
|
|
case EX_INQ_NUM_ELEM_SET_VAR:
|
|
if (ex_get_variable_param(exoid, EX_ELEM_SET, &num_var) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*ret_int = num_var;
|
|
break;
|
|
|
|
case EX_INQ_NUM_SIDE_SET_VAR:
|
|
if (ex_get_variable_param(exoid, EX_SIDE_SET, &num_var) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*ret_int = num_var;
|
|
break;
|
|
|
|
case EX_INQ_NUM_GLOBAL_VAR:
|
|
if (ex_get_variable_param(exoid, EX_GLOBAL, &num_var) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
*ret_int = num_var;
|
|
break;
|
|
|
|
case EX_INQ_COORD_FRAMES:
|
|
/* return the number of coordinate frames */
|
|
- if (ex__get_dimension_value(exoid, ret_int, 0, DIM_NUM_CFRAMES, 1) != EX_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if (exi_get_dimension_value(exoid, ret_int, 0, DIM_NUM_CFRAMES, 1) != EX_NOERR) {
|
|
+ return EX_FATAL;
|
|
}
|
|
break;
|
|
|
|
@@ -937,7 +936,7 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
"null for file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
#if NC_HAS_HDF5
|
|
nc_inq_grpname(exoid, ret_char);
|
|
@@ -969,13 +968,21 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
"null for file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
#if NC_HAS_HDF5
|
|
nc_inq_grpname_full(exoid, NULL, ret_char);
|
|
#endif
|
|
break;
|
|
|
|
+ case EX_INQ_FILE_FORMAT: {
|
|
+ /* return netCDF file format.
|
|
+ */
|
|
+ int nc_format = 0;
|
|
+ nc_inq_format(exoid, &nc_format);
|
|
+ *ret_int = nc_format;
|
|
+ } break;
|
|
+
|
|
case EX_INQ_THREADSAFE:
|
|
/* Return 1 if the library was compiled in thread-safe mode.
|
|
* Return 0 otherwise
|
|
@@ -991,9 +998,9 @@ static int ex_inquire_internal(int exoid, int req_info, int64_t *ret_int, float
|
|
*ret_int = 0;
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: invalid inquiry %d", req_info);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
/*!
|
|
@@ -1021,7 +1028,7 @@ int num_block = ex_inquire_int(exoid, EX_INQ_ELEM_BLK);
|
|
*/
|
|
int64_t ex_inquire_int(int exoid, ex_inquiry req_info)
|
|
{
|
|
- char * cdummy = NULL; /* Needed just for function call, unused. */
|
|
+ char *cdummy = NULL; /* Needed just for function call, unused. */
|
|
float fdummy = 0; /* Needed just for function call, unused. */
|
|
int64_t ret_val = 0;
|
|
int error;
|
|
@@ -1095,7 +1102,7 @@ int ex_inquire(int exoid, ex_inquiry req_info, void_int *ret_int, float *ret_flo
|
|
}
|
|
/* ret_int is a 32-bit int */
|
|
int64_t tmp_int;
|
|
- int * return_int = ret_int;
|
|
+ int *return_int = ret_int;
|
|
|
|
EX_FUNC_ENTER();
|
|
ierr = ex_inquire_internal(exoid, req_info, &tmp_int, ret_float, ret_char);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_int_get_block_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_int_get_block_param.c
|
|
index 7b33bc4b41..647e1e2d5b 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_int_get_block_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_int_get_block_param.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -11,33 +11,31 @@
|
|
#include <ctype.h>
|
|
|
|
/* Generic error message for element type/node count mapping...*/
|
|
-static int el_node_count_error(int exoid, struct ex__elem_blk_parm elem_blk_parms)
|
|
+static int el_node_count_error(int exoid, struct exi_elem_blk_parm elem_blk_parms)
|
|
{
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: An element of type '%s' with %d nodes is not valid.",
|
|
elem_blk_parms.elem_type, elem_blk_parms.num_nodes_per_elem);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MSG);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
-int ex__get_block_param(int exoid, ex_entity_id id, int ndim,
|
|
- struct ex__elem_blk_parm *elem_blk_parm)
|
|
+int exi_get_block_param(int exoid, ex_entity_id id, int ndim,
|
|
+ struct exi_elem_blk_parm *elem_blk_parm)
|
|
{
|
|
- size_t m;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
EX_FUNC_ENTER();
|
|
|
|
ex_block block;
|
|
block.id = id;
|
|
block.type = EX_ELEM_BLOCK;
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* read in an element block parameter */
|
|
if ((ex_get_block_param(exoid, &block)) != EX_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to get element block %" PRId64 " parameters in file id %d", block.id,
|
|
exoid);
|
|
@@ -50,6 +48,7 @@ int ex__get_block_param(int exoid, ex_entity_id id, int ndim,
|
|
elem_blk_parm->num_attr = block.num_attribute;
|
|
elem_blk_parm->elem_blk_id = block.id;
|
|
|
|
+ size_t m;
|
|
for (m = 0; m < strlen(block.topology); m++) {
|
|
elem_blk_parm->elem_type[m] = toupper(block.topology[m]);
|
|
}
|
|
@@ -80,6 +79,12 @@ int ex__get_block_param(int exoid, ex_entity_id id, int ndim,
|
|
elem_blk_parm->num_nodes_per_side[2] = 3;
|
|
elem_blk_parm->num_nodes_per_side[3] = 3;
|
|
}
|
|
+ else if (elem_blk_parm->num_nodes_per_elem == 12 || elem_blk_parm->num_nodes_per_elem == 16) {
|
|
+ elem_blk_parm->num_nodes_per_side[0] = 4;
|
|
+ elem_blk_parm->num_nodes_per_side[1] = 4;
|
|
+ elem_blk_parm->num_nodes_per_side[2] = 4;
|
|
+ elem_blk_parm->num_nodes_per_side[3] = 4;
|
|
+ }
|
|
else {
|
|
EX_FUNC_LEAVE(el_node_count_error(exoid, *elem_blk_parm));
|
|
}
|
|
@@ -100,6 +105,15 @@ int ex__get_block_param(int exoid, ex_entity_id id, int ndim,
|
|
elem_blk_parm->num_nodes_per_side[1] = 3;
|
|
elem_blk_parm->num_nodes_per_side[2] = 3;
|
|
}
|
|
+ else if (elem_blk_parm->num_nodes_per_elem == 9 || /* Tri9 */
|
|
+ elem_blk_parm->num_nodes_per_elem == 13) { /* Tri13 */
|
|
+ elem_blk_parm->num_nodes_per_side[0] = 4;
|
|
+ elem_blk_parm->num_nodes_per_side[1] = 4;
|
|
+ elem_blk_parm->num_nodes_per_side[2] = 4;
|
|
+ }
|
|
+ else {
|
|
+ EX_FUNC_LEAVE(el_node_count_error(exoid, *elem_blk_parm));
|
|
+ }
|
|
}
|
|
else if (ndim == 3) { /* 3d TRIs -- triangular shell*/
|
|
elem_blk_parm->num_sides = 5; /* 2 Faces and 3 Edges */
|
|
@@ -117,6 +131,13 @@ int ex__get_block_param(int exoid, ex_entity_id id, int ndim,
|
|
elem_blk_parm->num_nodes_per_side[3] = 3;
|
|
elem_blk_parm->num_nodes_per_side[4] = 3;
|
|
}
|
|
+ else if (elem_blk_parm->num_nodes_per_elem == 9 || elem_blk_parm->num_nodes_per_elem == 13) {
|
|
+ elem_blk_parm->num_nodes_per_side[0] = elem_blk_parm->num_nodes_per_elem;
|
|
+ elem_blk_parm->num_nodes_per_side[1] = elem_blk_parm->num_nodes_per_elem;
|
|
+ elem_blk_parm->num_nodes_per_side[2] = 4;
|
|
+ elem_blk_parm->num_nodes_per_side[3] = 4;
|
|
+ elem_blk_parm->num_nodes_per_side[4] = 4;
|
|
+ }
|
|
else {
|
|
EX_FUNC_LEAVE(el_node_count_error(exoid, *elem_blk_parm));
|
|
}
|
|
@@ -197,6 +218,22 @@ int ex__get_block_param(int exoid, ex_entity_id id, int ndim,
|
|
elem_blk_parm->num_nodes_per_side[4] = 9;
|
|
elem_blk_parm->num_nodes_per_side[5] = 9;
|
|
}
|
|
+ else if (elem_blk_parm->num_nodes_per_elem == 32) {
|
|
+ elem_blk_parm->num_nodes_per_side[0] = 12;
|
|
+ elem_blk_parm->num_nodes_per_side[1] = 12;
|
|
+ elem_blk_parm->num_nodes_per_side[2] = 12;
|
|
+ elem_blk_parm->num_nodes_per_side[3] = 12;
|
|
+ elem_blk_parm->num_nodes_per_side[4] = 12;
|
|
+ elem_blk_parm->num_nodes_per_side[5] = 12;
|
|
+ }
|
|
+ else if (elem_blk_parm->num_nodes_per_elem == 64) {
|
|
+ elem_blk_parm->num_nodes_per_side[0] = 16;
|
|
+ elem_blk_parm->num_nodes_per_side[1] = 16;
|
|
+ elem_blk_parm->num_nodes_per_side[2] = 16;
|
|
+ elem_blk_parm->num_nodes_per_side[3] = 16;
|
|
+ elem_blk_parm->num_nodes_per_side[4] = 16;
|
|
+ elem_blk_parm->num_nodes_per_side[5] = 16;
|
|
+ }
|
|
else {
|
|
EX_FUNC_LEAVE(el_node_count_error(exoid, *elem_blk_parm));
|
|
}
|
|
@@ -229,6 +266,18 @@ int ex__get_block_param(int exoid, ex_entity_id id, int ndim,
|
|
elem_blk_parm->num_nodes_per_side[2] = 7;
|
|
elem_blk_parm->num_nodes_per_side[3] = 7;
|
|
}
|
|
+ else if (elem_blk_parm->num_nodes_per_elem == 16) {
|
|
+ elem_blk_parm->num_nodes_per_side[0] = 9;
|
|
+ elem_blk_parm->num_nodes_per_side[1] = 9;
|
|
+ elem_blk_parm->num_nodes_per_side[2] = 9;
|
|
+ elem_blk_parm->num_nodes_per_side[3] = 9;
|
|
+ }
|
|
+ else if (elem_blk_parm->num_nodes_per_elem == 40) {
|
|
+ elem_blk_parm->num_nodes_per_side[0] = 13;
|
|
+ elem_blk_parm->num_nodes_per_side[1] = 13;
|
|
+ elem_blk_parm->num_nodes_per_side[2] = 13;
|
|
+ elem_blk_parm->num_nodes_per_side[3] = 13;
|
|
+ }
|
|
else {
|
|
EX_FUNC_LEAVE(el_node_count_error(exoid, *elem_blk_parm));
|
|
}
|
|
@@ -250,7 +299,7 @@ int ex__get_block_param(int exoid, ex_entity_id id, int ndim,
|
|
elem_blk_parm->num_nodes_per_side[3] = 6; /* 6-node tri faces */
|
|
elem_blk_parm->num_nodes_per_side[4] = 6;
|
|
}
|
|
- else if (elem_blk_parm->num_nodes_per_elem == 15) {
|
|
+ else if (elem_blk_parm->num_nodes_per_elem == 15 || elem_blk_parm->num_nodes_per_elem == 16) {
|
|
elem_blk_parm->num_nodes_per_side[0] = 8;
|
|
elem_blk_parm->num_nodes_per_side[1] = 8;
|
|
elem_blk_parm->num_nodes_per_side[2] = 8;
|
|
@@ -271,6 +320,20 @@ int ex__get_block_param(int exoid, ex_entity_id id, int ndim,
|
|
elem_blk_parm->num_nodes_per_side[3] = 7;
|
|
elem_blk_parm->num_nodes_per_side[4] = 7;
|
|
}
|
|
+ else if (elem_blk_parm->num_nodes_per_elem == 24) {
|
|
+ elem_blk_parm->num_nodes_per_side[0] = 12;
|
|
+ elem_blk_parm->num_nodes_per_side[1] = 12;
|
|
+ elem_blk_parm->num_nodes_per_side[2] = 12;
|
|
+ elem_blk_parm->num_nodes_per_side[3] = 9;
|
|
+ elem_blk_parm->num_nodes_per_side[4] = 9;
|
|
+ }
|
|
+ else if (elem_blk_parm->num_nodes_per_elem == 52) {
|
|
+ elem_blk_parm->num_nodes_per_side[0] = 16;
|
|
+ elem_blk_parm->num_nodes_per_side[1] = 16;
|
|
+ elem_blk_parm->num_nodes_per_side[2] = 16;
|
|
+ elem_blk_parm->num_nodes_per_side[3] = 13;
|
|
+ elem_blk_parm->num_nodes_per_side[4] = 13;
|
|
+ }
|
|
else {
|
|
EX_FUNC_LEAVE(el_node_count_error(exoid, *elem_blk_parm));
|
|
}
|
|
@@ -322,6 +385,10 @@ int ex__get_block_param(int exoid, ex_entity_id id, int ndim,
|
|
elem_blk_parm->num_nodes_per_side[0] = 3;
|
|
elem_blk_parm->num_nodes_per_side[1] = 3;
|
|
}
|
|
+ else if (elem_blk_parm->num_nodes_per_elem == 4) {
|
|
+ elem_blk_parm->num_nodes_per_side[0] = 4;
|
|
+ elem_blk_parm->num_nodes_per_side[1] = 4;
|
|
+ }
|
|
else {
|
|
EX_FUNC_LEAVE(el_node_count_error(exoid, *elem_blk_parm));
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_ne_util.c b/ThirdParty/exodusII/vtkexodusII/src/ex_ne_util.c
|
|
index 8854d626fa..be897605db 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_ne_util.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_ne_util.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -11,11 +11,11 @@
|
|
/*****************************************************************************/
|
|
/* Function(s) contained in this file:
|
|
*
|
|
- * ex__leavedef()
|
|
- * ne__id_lkup()
|
|
- * ex__get_file_type()
|
|
- * ex__put_nemesis_version()
|
|
- * ne__check_file_version()
|
|
+ * exi_leavedef()
|
|
+ * nei_id_lkup()
|
|
+ * exi_get_file_type()
|
|
+ * exi_put_nemesis_version()
|
|
+ * nei_check_file_version()
|
|
* ex_get_idx()
|
|
*
|
|
*****************************************************************************
|
|
@@ -37,62 +37,64 @@ char *ne_ret_string;
|
|
/* Note: This function assumes a 1-d vector of data for "ne_var_name".
|
|
*/
|
|
/*****************************************************************************/
|
|
-int ne__id_lkup(int exoid, const char *ne_var_name, int64_t *idx, ex_entity_id ne_var_id)
|
|
+int nei_id_lkup(int exoid, const char *ne_var_name, int64_t *idx, ex_entity_id ne_var_id)
|
|
{
|
|
- int status;
|
|
- int varid, ndims, dimid[1], ret = -1;
|
|
- nc_type var_type;
|
|
- size_t length, start[1];
|
|
- int64_t my_index, begin, end;
|
|
- long long id_val;
|
|
-
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
+ int status;
|
|
+ int varid;
|
|
if ((status = nc_inq_varid(exoid, ne_var_name, &varid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to find variable ID for \"%s\" in file ID %d",
|
|
ne_var_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* check if I need the length for this variable */
|
|
if (idx[1] == -1) {
|
|
/* Get the dimension IDs for this variable */
|
|
- if ((status = nc_inq_var(exoid, varid, (char *)0, &var_type, &ndims, dimid, (int *)0)) !=
|
|
- NC_NOERR) {
|
|
+ int ndims;
|
|
+ int dimid[1];
|
|
+ nc_type var_type;
|
|
+ if ((status = nc_inq_var(exoid, varid, NULL, &var_type, &ndims, dimid, NULL)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to find dimension ID for variable \"%s\" "
|
|
"in file ID %d",
|
|
ne_var_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* Get the length of this variable */
|
|
+ size_t length;
|
|
if ((status = nc_inq_dimlen(exoid, dimid[0], &length)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to find dimension for variable \"%s\" in file ID %d", ne_var_name,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
idx[1] = length;
|
|
} /* End "if (idx[1] == -1)" */
|
|
|
|
- begin = idx[0];
|
|
- end = idx[1];
|
|
+ int64_t begin = idx[0];
|
|
+ int64_t end = idx[1];
|
|
|
|
/* Find the index by looping over each entry */
|
|
- for (my_index = begin; my_index < end; my_index++) {
|
|
- start[0] = my_index;
|
|
- status = nc_get_var1_longlong(exoid, varid, start, &id_val);
|
|
+ int ret = -1;
|
|
+ for (int64_t my_index = begin; my_index < end; my_index++) {
|
|
+ size_t start[] = {my_index};
|
|
+ long long id_val;
|
|
+ status = nc_get_var1_longlong(exoid, varid, start, &id_val);
|
|
|
|
if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to find variable \"%s\" in file ID %d",
|
|
ne_var_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if (id_val == ne_var_id) {
|
|
@@ -100,7 +102,7 @@ int ne__id_lkup(int exoid, const char *ne_var_name, int64_t *idx, ex_entity_id n
|
|
break;
|
|
}
|
|
}
|
|
- return (ret);
|
|
+ return ret;
|
|
}
|
|
|
|
/*****************************************************************************/
|
|
@@ -109,17 +111,12 @@ int ne__id_lkup(int exoid, const char *ne_var_name, int64_t *idx, ex_entity_id n
|
|
/* This function retrieves the file type from a Nemesis file.
|
|
*/
|
|
/*****************************************************************************/
|
|
-int ex__get_file_type(int exoid, char *ftype)
|
|
+int exi_get_file_type(int exoid, char *ftype)
|
|
{
|
|
- int status;
|
|
- int varid;
|
|
- int lftype;
|
|
-
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
EX_FUNC_ENTER();
|
|
|
|
- if ((status = nc_inq_varid(exoid, VAR_FILE_TYPE, &varid)) != NC_NOERR) {
|
|
+ int varid;
|
|
+ if (nc_inq_varid(exoid, VAR_FILE_TYPE, &varid) != NC_NOERR) {
|
|
|
|
/* If no file type is found, assume parallel */
|
|
ftype[0] = 'p';
|
|
@@ -128,7 +125,10 @@ int ex__get_file_type(int exoid, char *ftype)
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
}
|
|
|
|
+ int status;
|
|
+ int lftype;
|
|
if ((status = nc_get_var1_int(exoid, varid, NULL, &lftype)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get variable \"%s\" from file ID %d",
|
|
VAR_FILE_TYPE, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -152,24 +152,20 @@ int ex__get_file_type(int exoid, char *ftype)
|
|
/* This function outputs the Nemesis version information to the file.
|
|
*/
|
|
/*****************************************************************************/
|
|
-int ex__put_nemesis_version(int exoid)
|
|
+int exi_put_nemesis_version(int exoid)
|
|
{
|
|
- int status;
|
|
- float file_ver, api_ver;
|
|
-
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
EX_FUNC_ENTER();
|
|
|
|
- file_ver = NEMESIS_FILE_VERSION;
|
|
- api_ver = NEMESIS_API_VERSION;
|
|
+ float file_ver = NEMESIS_FILE_VERSION;
|
|
|
|
/* Check to see if the nemesis file version is already in the file */
|
|
if (nc_get_att_float(exoid, NC_GLOBAL, "nemesis_file_version", &file_ver) != NC_NOERR) {
|
|
|
|
/* Output the Nemesis file version */
|
|
+ int status;
|
|
if ((status = nc_put_att_float(exoid, NC_GLOBAL, ATT_NEM_FILE_VERSION, NC_FLOAT, 1,
|
|
&file_ver)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to output nemesis file version in file ID %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -177,8 +173,10 @@ int ex__put_nemesis_version(int exoid)
|
|
}
|
|
|
|
/* Output the Nemesis API version */
|
|
+ float api_ver = NEMESIS_API_VERSION;
|
|
if ((status = nc_put_att_float(exoid, NC_GLOBAL, ATT_NEM_API_VERSION, NC_FLOAT, 1, &api_ver)) !=
|
|
NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to output nemesis api version in file ID %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -194,7 +192,7 @@ int ex__put_nemesis_version(int exoid)
|
|
/* This function checks that the version info is correct.
|
|
*/
|
|
/*****************************************************************************/
|
|
-int ne__check_file_version(int exoid)
|
|
+int nei_check_file_version(int exoid)
|
|
{
|
|
#if 0
|
|
float file_ver;
|
|
@@ -235,7 +233,6 @@ int ne__check_file_version(int exoid)
|
|
/*****************************************************************************/
|
|
int ex_get_idx(int exoid, const char *ne_var_name, int64_t *my_index, int pos)
|
|
{
|
|
- int status;
|
|
int varid;
|
|
size_t start[1], count[1];
|
|
#if NC_HAS_HDF5
|
|
@@ -256,7 +253,7 @@ int ex_get_idx(int exoid, const char *ne_var_name, int64_t *my_index, int pos)
|
|
* means that this is a parallel file, and the index does
|
|
* not exists. This is not an error
|
|
*/
|
|
- if ((status = nc_inq_varid(exoid, ne_var_name, &varid)) == NC_NOERR) {
|
|
+ if (nc_inq_varid(exoid, ne_var_name, &varid) == NC_NOERR) {
|
|
/* check if we are at the beginning of the index vector */
|
|
if (pos == 0) {
|
|
start[0] = pos;
|
|
@@ -268,9 +265,9 @@ int ex_get_idx(int exoid, const char *ne_var_name, int64_t *my_index, int pos)
|
|
}
|
|
|
|
#if NC_HAS_HDF5
|
|
- status = nc_get_vara_longlong(exoid, varid, start, count, varidx);
|
|
+ int status = nc_get_vara_longlong(exoid, varid, start, count, varidx);
|
|
#else
|
|
- status = nc_get_vara_int(exoid, varid, start, count, varidx);
|
|
+ int status = nc_get_vara_int(exoid, varid, start, count, varidx);
|
|
#endif
|
|
if (status != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to find variable \"%s\" in file ID %d",
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_open.c b/ThirdParty/exodusII/vtkexodusII/src/ex_open.c
|
|
index 37be0822e5..91901eb62b 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_open.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_open.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -27,6 +27,7 @@
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
#include "exodusII_int.h" // for EX_FATAL, etc
|
|
+#include <stdlib.h>
|
|
/*!
|
|
\ingroup Utilities
|
|
|
|
@@ -101,13 +102,11 @@ exoid = ex_open ("test.exo", \co{filename path}
|
|
int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *version,
|
|
int run_version)
|
|
{
|
|
- int exoid = -1;
|
|
- int status = 0, stat_att = 0, stat_dim = 0;
|
|
+ int exoid = -1;
|
|
+ int status = 0;
|
|
nc_type att_type = NC_NAT;
|
|
- size_t att_len = 0;
|
|
int old_fill = 0;
|
|
int file_wordsize = 0;
|
|
- int dim_str_name = 0;
|
|
int int64_status = 0;
|
|
int nc_mode = 0;
|
|
|
|
@@ -119,7 +118,7 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
/* set error handling mode to no messages, non-fatal errors */
|
|
ex_opts(exoptval); /* call required to set ncopts first time through */
|
|
|
|
- ex__check_version(run_version);
|
|
+ exi_check_version(run_version);
|
|
|
|
if ((mode & EX_READ) && (mode & EX_WRITE)) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Cannot specify both EX_READ and EX_WRITE");
|
|
@@ -127,12 +126,21 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ if (!path || strlen(path) == 0) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Filename is not specified.");
|
|
+ ex_err(__func__, errmsg, EX_BADFILEMODE);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ char *canon_path = exi_canonicalize_filename(path);
|
|
+
|
|
/* Verify that this file is not already open for read or write...
|
|
In theory, should be ok for the file to be open multiple times
|
|
for read, but bad things can happen if being read and written
|
|
at the same time...
|
|
*/
|
|
- if (ex__check_multiple_open(path, mode, __func__)) {
|
|
+ if (exi_check_multiple_open(canon_path, mode, __func__)) {
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -146,7 +154,7 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
}
|
|
#endif
|
|
|
|
- if ((status = nc_open(path, nc_mode, &exoid)) != NC_NOERR) {
|
|
+ if ((status = nc_open(canon_path, nc_mode, &exoid)) != NC_NOERR) {
|
|
/* NOTE: netCDF returns an id of -1 on an error - but no error code! */
|
|
/* It is possible that the user is trying to open a netcdf4
|
|
file, but the netcdf4 capabilities aren't available in the
|
|
@@ -168,7 +176,7 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
int type = 0;
|
|
ex_opts(EX_VERBOSE);
|
|
|
|
- ex__check_file_type(path, &type);
|
|
+ exi_check_file_type(canon_path, &type);
|
|
|
|
if (type == 0) {
|
|
/* Error message printed at lower level */
|
|
@@ -180,8 +188,10 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
"file:\n\t'%s'\n\tfailed. The netcdf library supports "
|
|
"netcdf-4 so there must be a filesystem or some other "
|
|
"issue.\n",
|
|
- path);
|
|
+ canon_path);
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
#else
|
|
/* This is an hdf5 (netcdf4) file. If NC_HAS_HDF5 is not defined,
|
|
then we either don't have hdf5 support in this netcdf version,
|
|
@@ -196,8 +206,10 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
"file:\n\t'%s'.\n\tEither the netcdf library does not "
|
|
"support netcdf-4 or there is a filesystem or some "
|
|
"other issue.\n",
|
|
- path);
|
|
+ canon_path);
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
#endif
|
|
}
|
|
else if (type == 4) {
|
|
@@ -207,8 +219,10 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
"file:\n\t'%s'\n\tfailed. The netcdf library supports "
|
|
"CDF5-type files so there must be a filesystem or some other "
|
|
"issue \n",
|
|
- path);
|
|
+ canon_path);
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
#else
|
|
/* This is an cdf5 (64BIT_DATA) file. If NC_64BIT_DATA is not defined,
|
|
then we either don't have cdf5 support in this netcdf version,
|
|
@@ -223,33 +237,36 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
"file:\n\t'%s'.\n\tEither the netcdf library does not "
|
|
"support CDF5 or there is a filesystem or some "
|
|
"other issue \n",
|
|
- path);
|
|
+ canon_path);
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
|
|
#endif
|
|
}
|
|
else if (type == 1) {
|
|
- /* Possibly an issue with an older file created by a Java-based NetCDF library which wrote
|
|
- * corrupted data which is now being checked by newer releases of the NetCDF library...
|
|
- * SEE: https://github.com/Unidata/netcdf-c/issues/1115
|
|
- */
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to open '%s' of type %d for reading.\n"
|
|
- "\t\tIf this is an old file, it is possible that it has some internal corruption\n"
|
|
- "\t\tthat is now being checked by recent versions of the NetCDF library.\n"
|
|
- "\t\tTo fix, you can find an older version of `nccopy` (prior to 4.6.0)\n"
|
|
- "\t\tthen try `nccopy bad_file.g fixed_file.g`.",
|
|
- path, type);
|
|
- ex_err(__func__, errmsg, status);
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
-
|
|
+ /* Possibly an issue with an older file created by a Java-based NetCDF library which wrote
|
|
+ * corrupted data which is now being checked by newer releases of the NetCDF library...
|
|
+ * SEE: https://github.com/Unidata/netcdf-c/issues/1115
|
|
+ */
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to open '%s' of type %d for reading.\n"
|
|
+ "\t\tIf this is an old file, it is possible that it has some internal corruption\n"
|
|
+ "\t\tthat is now being checked by recent versions of the NetCDF library.\n"
|
|
+ "\t\tTo fix, you can find an older version of `nccopy` (prior to 4.6.0)\n"
|
|
+ "\t\tthen try `nccopy bad_file.g fixed_file.g`.",
|
|
+ canon_path, type);
|
|
+ ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to open %s of type %d for reading. Either "
|
|
- "the file does not exist,\n\tor there is a permission or file "
|
|
+ "ERROR: failed to open %s of type %d for reading.\n\t\tThe "
|
|
+ "file does not exist, or there is a permission or file "
|
|
"format issue.",
|
|
- path, type);
|
|
+ canon_path, type);
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
@@ -263,32 +280,38 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
#endif
|
|
}
|
|
#endif
|
|
- if ((status = nc_open(path, nc_mode, &exoid)) != NC_NOERR) {
|
|
+ if ((status = nc_open(canon_path, nc_mode, &exoid)) != NC_NOERR) {
|
|
/* NOTE: netCDF returns an id of -1 on an error - but no error code! */
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to open %s for read/write. Either the file "
|
|
+ "ERROR: failed to open %s for read/write.\n\tEither the file "
|
|
"does not exist,\n\tor there is a permission or file format "
|
|
"issue.",
|
|
- path);
|
|
+ canon_path);
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* turn off automatic filling of netCDF variables */
|
|
if ((status = nc_set_fill(exoid, NC_NOFILL, &old_fill)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to set nofill mode in file id %d named %s",
|
|
- exoid, path);
|
|
+ exoid, canon_path);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(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);
|
|
+ size_t att_len = 0;
|
|
+ int stat_att = nc_inq_att(exoid, NC_GLOBAL, ATT_MAX_NAME_LENGTH, &att_type, &att_len);
|
|
+ int dim_str_name = 0;
|
|
+ int stat_dim = nc_inq_dimid(exoid, DIM_STR_NAME, &dim_str_name);
|
|
if (stat_att != NC_NOERR || stat_dim != NC_NOERR) {
|
|
+ /* This must still be nc_redef */
|
|
if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to place file id %d named %s into define mode", exoid, path);
|
|
+ "ERROR: failed to place file id %d named %s into define mode", exoid, canon_path);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -299,6 +322,7 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to add maximum_name_length attribute in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
@@ -307,16 +331,20 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
* 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;
|
|
+ int max_name = exi_default_max_name_length < 32 ? 32 : exi_default_max_name_length;
|
|
if ((status = nc_def_dim(exoid, DIM_STR_NAME, max_name + 1, &dim_str_name)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to define string name dimension in file id %d named %s", exoid,
|
|
- path);
|
|
+ canon_path);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = nc_enddef(exoid)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode in file id %d", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
@@ -330,6 +358,7 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get database version for file id: %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -338,6 +367,7 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Unsupported file version %.2f in file id: %d",
|
|
*version, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -348,6 +378,7 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get file wordsize from file id: %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
@@ -372,26 +403,30 @@ int ex_open_int(const char *path, int mode, int *comp_ws, int *io_ws, float *ver
|
|
not know that file was closed and possibly new file opened for
|
|
this exoid
|
|
*/
|
|
- if (ex__find_file_item(exoid) != NULL) {
|
|
+ if (exi_find_file_item(exoid) != NULL) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: There is an existing file already using the file "
|
|
"id %d which was also assigned to file %s.\n\tWas "
|
|
"nc_close() called instead of ex_close() on an open Exodus "
|
|
"file?\n",
|
|
- exoid, path);
|
|
+ exoid, canon_path);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
nc_close(exoid);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* initialize floating point and integer size conversion. */
|
|
- if (ex__conv_init(exoid, comp_ws, io_ws, file_wordsize, int64_status, false, false, false,
|
|
+ if (exi_conv_init(exoid, comp_ws, io_ws, file_wordsize, int64_status, false, false, false,
|
|
mode & EX_WRITE) != EX_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to initialize conversion routines in file id %d named %s", exoid, path);
|
|
+ "ERROR: failed to initialize conversion routines in file id %d named %s", exoid,
|
|
+ canon_path);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_LASTERR);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(exoid);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_open_par.c b/ThirdParty/exodusII/vtkexodusII/src/ex_open_par.c
|
|
index d195088e46..5fd2eec4c2 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_open_par.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_open_par.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -31,6 +31,7 @@
|
|
#include "exodusII.h"
|
|
#include "exodusII_int.h"
|
|
#include <vtk_mpi.h>
|
|
+#include <stdlib.h>
|
|
/*!
|
|
\ingroup Utilities
|
|
|
|
@@ -97,7 +98,7 @@ exoid = ex_open_par ("test.exo", \co{filename path}
|
|
&CPU_word_size, \co{CPU word size}
|
|
&IO_word_size, \co{IO word size}
|
|
&version, \co{ExodusII library version
|
|
- MPI_COMM_WORLD,
|
|
+ MPI_COMM_WORLD, // CHECK: ALLOW MPI_COMM_WORLD
|
|
MPI_INFO_NULL);}
|
|
~~~
|
|
*/
|
|
@@ -119,18 +120,16 @@ struct ncvar /* variable */
|
|
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 = -1;
|
|
- int status = 0, stat_att = 0, stat_dim = 0;
|
|
- nc_type att_type = NC_NAT;
|
|
- size_t att_len = 0;
|
|
- int nc_mode = 0;
|
|
- int old_fill = 0;
|
|
- int file_wordsize = 0;
|
|
- int dim_str_name = 0;
|
|
- int int64_status = 0;
|
|
- bool is_hdf5 = false;
|
|
- bool is_pnetcdf = false;
|
|
- bool in_redef = false;
|
|
+ int exoid = -1;
|
|
+ int status = 0;
|
|
+ int nc_mode = 0;
|
|
+ int old_fill = 0;
|
|
+ int file_wordsize = 0;
|
|
+ int dim_str_name = 0;
|
|
+ int int64_status = 0;
|
|
+ bool is_hdf5 = false;
|
|
+ bool is_pnetcdf = false;
|
|
+ bool in_redef = false;
|
|
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
@@ -139,7 +138,7 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
/* set error handling mode to no messages, non-fatal errors */
|
|
ex_opts(exoptval); /* call required to set ncopts first time through */
|
|
|
|
- ex__check_version(run_version);
|
|
+ exi_check_version(run_version);
|
|
|
|
if ((mode & EX_READ) && (mode & EX_WRITE)) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Cannot specify both EX_READ and EX_WRITE");
|
|
@@ -147,12 +146,21 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ if (!path || strlen(path) == 0) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Filename is not specified.");
|
|
+ ex_err(__func__, errmsg, EX_BADFILEMODE);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ char *canon_path = exi_canonicalize_filename(path);
|
|
+
|
|
/* Verify that this file is not already open for read or write...
|
|
In theory, should be ok for the file to be open multiple times
|
|
for read, but bad things can happen if being read and written
|
|
at the same time...
|
|
*/
|
|
- if (ex__check_multiple_open(path, mode, __func__)) {
|
|
+ if (exi_check_multiple_open(canon_path, mode, __func__)) {
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -172,7 +180,16 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
else {
|
|
nc_mode = (NC_NOWRITE | NC_SHARE | NC_MPIIO);
|
|
}
|
|
- if ((status = nc_open_par(path, nc_mode, comm, info, &exoid)) != NC_NOERR) {
|
|
+ /* There is an issue on some versions of mpi that limit the length of the path to <250 characters
|
|
+ * Check for that here and use `path` if `canon_path` is >=250 characters...
|
|
+ */
|
|
+ if (strlen(canon_path) >= 250) {
|
|
+ status = nc_open_par(path, nc_mode, comm, info, &exoid);
|
|
+ }
|
|
+ else {
|
|
+ status = nc_open_par(canon_path, nc_mode, comm, info, &exoid);
|
|
+ }
|
|
+ if (status != NC_NOERR) {
|
|
/* 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
|
|
@@ -191,7 +208,7 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
we have the define that shows it is enabled, then assume other error...
|
|
*/
|
|
int type = 0;
|
|
- ex__check_file_type(path, &type);
|
|
+ exi_check_file_type(path, &type);
|
|
|
|
if (type == 0) {
|
|
/* Error message printed at lower level */
|
|
@@ -203,8 +220,10 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
"file:\n\t'%s'\n\tfailed. The netcdf library supports "
|
|
"netcdf-4 so there must be a filesystem or some other "
|
|
"issue \n",
|
|
- path);
|
|
+ canon_path);
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
#else
|
|
/* This is an hdf5 (netcdf4) file. If NC_HAS_HDF5 is not defined,
|
|
then we either don't have hdf5 support in this netcdf version,
|
|
@@ -219,8 +238,10 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
"file:\n\t'%s'\n\tEither the netcdf library does not "
|
|
"support netcdf-4 or there is a filesystem or some "
|
|
"other issue \n",
|
|
- path);
|
|
+ canon_path);
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
#endif
|
|
}
|
|
else if (type == 4) {
|
|
@@ -230,8 +251,10 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
"file:\n\t'%s'\n\tfailed. The netcdf library supports "
|
|
"CDF5-type files so there must be a filesystem or some other "
|
|
"issue \n",
|
|
- path);
|
|
+ canon_path);
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
#else
|
|
/* This is an cdf5 (64BIT_DATA) file. If NC_64BIT_DATA is not defined,
|
|
then we either don't have cdf5 support in this netcdf version,
|
|
@@ -246,8 +269,10 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
"file:\n\t'%s'\n\tEither the netcdf library does not "
|
|
"support CDF5 or there is a filesystem or some "
|
|
"other issue \n",
|
|
- path);
|
|
+ canon_path);
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
#endif
|
|
}
|
|
else if (type == 1 || type == 2) {
|
|
@@ -255,11 +280,13 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"EXODUS: ERROR: Attempting to open the classic NetCDF "
|
|
"file:\n\t'%s'\n\tfailed. The netcdf library supports "
|
|
- "PNetCDF files as required for parallel readinf of this "
|
|
+ "PNetCDF files as required for parallel reading of this "
|
|
"file type, so there must be a filesystem or some other "
|
|
"issue \n",
|
|
- path);
|
|
+ canon_path);
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
#else
|
|
/* This is an normal NetCDF format file, for parallel reading, the PNetCDF
|
|
library is required but that is not compiled into this version.
|
|
@@ -268,23 +295,26 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
"EXODUS: ERROR: Attempting to open the NetCDF "
|
|
"file:\n\t'%s'\n\tThe NetCDF library was not "
|
|
"built with PNetCDF support as required for parallel access to this file.\n",
|
|
- path);
|
|
+ canon_path);
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
#endif
|
|
}
|
|
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to open %s for read/write. Either the file "
|
|
- "does not exist,\n\tor there is a permission or file format "
|
|
- "issue.",
|
|
- path);
|
|
+ "ERROR: failed to open %s of type %d for reading.\n\t\tThe "
|
|
+ "file does not exist, or there is a permission or file "
|
|
+ "format issue.",
|
|
+ canon_path, type);
|
|
ex_err(__func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* File opened correctly */
|
|
int type = 0;
|
|
- ex__check_file_type(path, &type);
|
|
+ exi_check_file_type(canon_path, &type);
|
|
if (type == 5) {
|
|
is_hdf5 = true;
|
|
}
|
|
@@ -295,9 +325,10 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
if (mode & EX_WRITE) { /* Appending */
|
|
/* turn off automatic filling of netCDF variables */
|
|
if (is_pnetcdf) {
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
in_redef = true;
|
|
@@ -306,17 +337,21 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
if ((status = nc_set_fill(exoid, NC_NOFILL, &old_fill)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to set nofill mode in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(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);
|
|
+ nc_type att_type = NC_NAT;
|
|
+ size_t att_len = 0;
|
|
+ int stat_att = nc_inq_att(exoid, NC_GLOBAL, ATT_MAX_NAME_LENGTH, &att_type, &att_len);
|
|
+ int stat_dim = nc_inq_dimid(exoid, DIM_STR_NAME, &dim_str_name);
|
|
if (stat_att != NC_NOERR || stat_dim != NC_NOERR) {
|
|
if (!in_redef) {
|
|
if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
in_redef = true;
|
|
@@ -330,17 +365,27 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
* 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;
|
|
+ int max_name = exi_default_max_name_length < 32 ? 32 : exi_default_max_name_length;
|
|
nc_def_dim(exoid, DIM_STR_NAME, max_name + 1, &dim_str_name);
|
|
}
|
|
}
|
|
|
|
if (in_redef) {
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = nc_enddef(exoid)) != NC_NOERR) {
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- in_redef = false;
|
|
}
|
|
+ } /* End of (mode & EX_WRITE) */
|
|
+
|
|
+ /* If this is a `pnetcdf` file (non HDF5), then we can't set the
|
|
+ * collective vs independent setting on a per-variable basis -- it
|
|
+ * is set for the entire file. Several apps rely on being able to
|
|
+ * access some set or other data in an independent mode, so we can't
|
|
+ * set any vars to collective or it sets the file to collective and
|
|
+ * we potentially hang...
|
|
+ */
|
|
+ if (!is_pnetcdf) {
|
|
|
|
/* If this is a parallel execution and we are appending, then we
|
|
* need to set the parallel access method for all transient variables to NC_COLLECTIVE since
|
|
@@ -351,29 +396,22 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
int ngatts; /* number of global attributes */
|
|
int recdimid; /* id of unlimited dimension */
|
|
|
|
- int varid;
|
|
-
|
|
/* Determine number of variables on the database... */
|
|
nc_inq(exoid, &ndims, &nvars, &ngatts, &recdimid);
|
|
|
|
- for (varid = 0; varid < nvars; varid++) {
|
|
+ for (int varid = 0; varid < nvars; varid++) {
|
|
struct ncvar var;
|
|
nc_inq_var(exoid, varid, var.name, &var.type, &var.ndims, var.dims, &var.natts);
|
|
|
|
- if ((strcmp(var.name, VAR_GLO_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, "vals_", 5) == 0) && (strncmp(var.name, "vals_red_", 9) != 0)) ||
|
|
+ (strcmp(var.name, VAR_WHOLE_TIME) == 0) || (strncmp(var.name, "coord", 5) == 0) ||
|
|
+ (strcmp(var.name, "connect") == 0) || (strcmp(var.name, "edgconn") == 0) ||
|
|
+ (strcmp(var.name, "ebconn") == 0) || (strcmp(var.name, "facconn") == 0) ||
|
|
+ (strcmp(var.name, "fbconn") == 0) || (strcmp(var.name, "attrib") == 0)) {
|
|
nc_var_par_access(exoid, varid, NC_COLLECTIVE);
|
|
}
|
|
}
|
|
- } /* End of (mode & EX_WRITE) */
|
|
+ }
|
|
|
|
/* determine version of EXODUS file, and the word size of
|
|
* floating point and integer values stored in the file
|
|
@@ -383,6 +421,7 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get database version for file id: %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -391,6 +430,7 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Unsupported file version %.2f in file id: %d",
|
|
*version, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -401,6 +441,7 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get file wordsize from file id: %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
@@ -425,27 +466,30 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
not know that file was closed and possibly new file opened for
|
|
this exoid
|
|
*/
|
|
- if (ex__find_file_item(exoid) != NULL) {
|
|
+ if (exi_find_file_item(exoid) != NULL) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: There is an existing file already using the file "
|
|
"id %d which was also assigned to file %s.\n\tWas "
|
|
"nc_close() called instead of ex_close() on an open Exodus "
|
|
"file?\n",
|
|
- exoid, path);
|
|
+ exoid, canon_path);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
nc_close(exoid);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* initialize floating point and integer size conversion. */
|
|
- if (ex__conv_init(exoid, comp_ws, io_ws, file_wordsize, int64_status, 1, is_hdf5, is_pnetcdf,
|
|
+ if (exi_conv_init(exoid, comp_ws, io_ws, file_wordsize, int64_status, 1, is_hdf5, is_pnetcdf,
|
|
mode & EX_WRITE) != EX_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to initialize conversion routines in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_LASTERR);
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ free(canon_path);
|
|
EX_FUNC_LEAVE(exoid);
|
|
}
|
|
#else
|
|
@@ -453,5 +497,5 @@ int ex_open_par_int(const char *path, int mode, int *comp_ws, int *io_ws, float
|
|
* Prevent warning in some versions of ranlib(1) because the object
|
|
* file has no symbols.
|
|
*/
|
|
-const char exodus_unused_symbol_dummy_ex_open_par;
|
|
+extern const char exodus_unused_symbol_dummy_ex_open_par;
|
|
#endif
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_opts.c b/ThirdParty/exodusII/vtkexodusII/src/ex_opts.c
|
|
index 51f364183e..74664ec451 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_opts.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_opts.c
|
|
@@ -10,7 +10,7 @@
|
|
#include "exodusII_int.h"
|
|
|
|
/*! \cond INTERNAL */
|
|
-int ex__default_max_name_length = 32; /* For default compatibility with older clients */
|
|
+int exi_default_max_name_length = 32; /* For default compatibility with older clients */
|
|
|
|
#if defined(VERBOSE)
|
|
int exoptval = EX_VERBOSE; /* loud mode: set EX_VERBOSE */
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_all_var_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_all_var_param.c
|
|
index 5879804796..00a3e19194 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_all_var_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_all_var_param.c
|
|
@@ -42,8 +42,8 @@
|
|
* \param *sset_var_tab sideset variable truth table array
|
|
*/
|
|
|
|
-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)
|
|
+int ex_put_all_var_param(int exoid, int num_g, int num_n, int num_e, const int *elem_var_tab,
|
|
+ int num_m, const int *nset_var_tab, int num_s, const int *sset_var_tab)
|
|
{
|
|
ex_var_params vparam;
|
|
|
|
@@ -54,15 +54,15 @@ int ex_put_all_var_param(int exoid, int num_g, int num_n, int num_e, int *elem_v
|
|
vparam.num_face = 0;
|
|
vparam.face_var_tab = 0;
|
|
vparam.num_elem = num_e;
|
|
- vparam.elem_var_tab = elem_var_tab;
|
|
+ vparam.elem_var_tab = (int *)elem_var_tab;
|
|
vparam.num_nset = num_m;
|
|
- vparam.nset_var_tab = nset_var_tab;
|
|
+ vparam.nset_var_tab = (int *)nset_var_tab;
|
|
vparam.num_eset = 0;
|
|
vparam.eset_var_tab = 0;
|
|
vparam.num_fset = 0;
|
|
vparam.fset_var_tab = 0;
|
|
vparam.num_sset = num_s;
|
|
- vparam.sset_var_tab = sset_var_tab;
|
|
+ vparam.sset_var_tab = (int *)sset_var_tab;
|
|
vparam.num_elset = 0;
|
|
vparam.elset_var_tab = 0;
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_all_var_param_ext.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_all_var_param_ext.c
|
|
index 981a20d32c..be763293f4 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_all_var_param_ext.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_all_var_param_ext.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -19,7 +19,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for ex__get_dimension, etc
|
|
+#include "exodusII_int.h" // for exi_get_dimension, etc
|
|
|
|
static int define_dimension(int exoid, const char *DIMENSION, int count, const char *label,
|
|
int *dimid);
|
|
@@ -29,15 +29,15 @@ static int *get_status_array(int exoid, int var_count, const char *VARIABLE, con
|
|
static int put_truth_table(int exoid, int varid, int *table, const char *label);
|
|
static int define_truth_table(ex_entity_type obj_type, int exoid, int num_ent, int num_var,
|
|
int *var_tab, int *status_tab, void_int *ids, const char *label);
|
|
-static int ex_define_vars(int exoid, ex_entity_type obj_type, const char *entity_name,
|
|
- const char *entity_blk_name, int numvar, const char *DNAME, int dimid1,
|
|
- int dimid2, int DVAL, void_int **entity_ids, const char *VNOV,
|
|
- const char *VTV, int **status_var, int *truth_table,
|
|
- int *truth_table_var);
|
|
+static int exi_define_vars(int exoid, ex_entity_type obj_type, const char *entity_name,
|
|
+ const char *entity_blk_name, int numvar, const char *DNAME, int dimid1,
|
|
+ int dimid2, int DVAL, void_int **entity_ids, const char *VNOV,
|
|
+ const char *VTV, int **status_var, int *truth_table,
|
|
+ int *truth_table_var);
|
|
|
|
#define EX_GET_IDS_STATUS(TNAME, NUMVAR, DNAME, DID, DVAL, VIDS, EIDS, VSTAT, VSTATVAL) \
|
|
if (NUMVAR > 0) { \
|
|
- status = ex__get_dimension(exoid, DNAME, TNAME "s", &DVAL, &DID, __func__); \
|
|
+ status = exi_get_dimension(exoid, DNAME, TNAME "s", &DVAL, &DID, __func__); \
|
|
if (status != NC_NOERR) \
|
|
goto error_ret; \
|
|
\
|
|
@@ -103,7 +103,7 @@ int ex_put_all_var_param_ext(int exoid, const ex_var_params *vp)
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -115,7 +115,7 @@ int ex_put_all_var_param_ext(int exoid, const ex_var_params *vp)
|
|
goto error_ret;
|
|
}
|
|
|
|
- if ((status = nc_inq_dimid(exoid, DIM_NUM_NODES, &num_nod_dim)) != NC_NOERR) {
|
|
+ if (nc_inq_dimid(exoid, DIM_NUM_NODES, &num_nod_dim) != NC_NOERR) {
|
|
num_nod_dim = -1; /* There is probably no nodes on this file */
|
|
}
|
|
|
|
@@ -144,7 +144,7 @@ int ex_put_all_var_param_ext(int exoid, const ex_var_params *vp)
|
|
EX_ELEM_SET, VAR_ELS_STAT, elset_stat);
|
|
|
|
/* put file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret;
|
|
@@ -166,7 +166,7 @@ int ex_put_all_var_param_ext(int exoid, const ex_var_params *vp)
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 2);
|
|
+ exi_compress_variable(exoid, varid, 2);
|
|
|
|
/* Now define global variable name variable */
|
|
if (define_variable_name_variable(exoid, VAR_NAME_GLO_VAR, dimid, "global") != NC_NOERR) {
|
|
@@ -190,7 +190,7 @@ int ex_put_all_var_param_ext(int exoid, const ex_var_params *vp)
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 2);
|
|
+ exi_compress_variable(exoid, varid, 2);
|
|
}
|
|
}
|
|
|
|
@@ -200,66 +200,62 @@ int ex_put_all_var_param_ext(int exoid, const ex_var_params *vp)
|
|
}
|
|
}
|
|
|
|
- if ((status =
|
|
- ex_define_vars(exoid, EX_EDGE_BLOCK, "edge", "edge block", vp->num_edge, DIM_NUM_EDG_VAR,
|
|
- numedblkdim, numedvardim, num_edge_blk, &edblk_ids, VAR_NAME_EDG_VAR,
|
|
- VAR_EBLK_TAB, &edblk_stat, vp->edge_var_tab, &edblk_varid)) != EX_NOERR) {
|
|
+ if (exi_define_vars(exoid, EX_EDGE_BLOCK, "edge", "edge block", vp->num_edge, DIM_NUM_EDG_VAR,
|
|
+ numedblkdim, numedvardim, num_edge_blk, &edblk_ids, VAR_NAME_EDG_VAR,
|
|
+ VAR_EBLK_TAB, &edblk_stat, vp->edge_var_tab, &edblk_varid) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
|
|
- if ((status =
|
|
- ex_define_vars(exoid, EX_FACE_BLOCK, "face", "face block", vp->num_face, DIM_NUM_FAC_VAR,
|
|
- numfablkdim, numfavardim, num_face_blk, &fablk_ids, VAR_NAME_FAC_VAR,
|
|
- VAR_FBLK_TAB, &fablk_stat, vp->face_var_tab, &fablk_varid)) != EX_NOERR) {
|
|
+ if (exi_define_vars(exoid, EX_FACE_BLOCK, "face", "face block", vp->num_face, DIM_NUM_FAC_VAR,
|
|
+ numfablkdim, numfavardim, num_face_blk, &fablk_ids, VAR_NAME_FAC_VAR,
|
|
+ VAR_FBLK_TAB, &fablk_stat, vp->face_var_tab, &fablk_varid) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
|
|
- if ((status = ex_define_vars(exoid, EX_ELEM_BLOCK, "element", "element block", vp->num_elem,
|
|
- DIM_NUM_ELE_VAR, numelblkdim, numelvardim, num_elem_blk, &eblk_ids,
|
|
- VAR_NAME_ELE_VAR, VAR_ELEM_TAB, &eblk_stat, vp->elem_var_tab,
|
|
- &eblk_varid)) != EX_NOERR) {
|
|
+ if (exi_define_vars(exoid, EX_ELEM_BLOCK, "element", "element block", vp->num_elem,
|
|
+ DIM_NUM_ELE_VAR, numelblkdim, numelvardim, num_elem_blk, &eblk_ids,
|
|
+ VAR_NAME_ELE_VAR, VAR_ELEM_TAB, &eblk_stat, vp->elem_var_tab,
|
|
+ &eblk_varid) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
|
|
- if ((status =
|
|
- ex_define_vars(exoid, EX_NODE_SET, "nodeset", "node set", vp->num_nset, DIM_NUM_NSET_VAR,
|
|
- numnsetdim, nsetvardim, num_nset, &nset_ids, VAR_NAME_NSET_VAR,
|
|
- VAR_NSET_TAB, &nset_stat, vp->nset_var_tab, &nset_varid)) != EX_NOERR) {
|
|
+ if (exi_define_vars(exoid, EX_NODE_SET, "nodeset", "node set", vp->num_nset, DIM_NUM_NSET_VAR,
|
|
+ numnsetdim, nsetvardim, num_nset, &nset_ids, VAR_NAME_NSET_VAR, VAR_NSET_TAB,
|
|
+ &nset_stat, vp->nset_var_tab, &nset_varid) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
|
|
- if ((status =
|
|
- ex_define_vars(exoid, EX_EDGE_SET, "edgeset", "edge set", vp->num_eset, DIM_NUM_ESET_VAR,
|
|
- numesetdim, esetvardim, num_eset, &eset_ids, VAR_NAME_ESET_VAR,
|
|
- VAR_ESET_TAB, &eset_stat, vp->eset_var_tab, &eset_varid)) != EX_NOERR) {
|
|
+ if (exi_define_vars(exoid, EX_EDGE_SET, "edgeset", "edge set", vp->num_eset, DIM_NUM_ESET_VAR,
|
|
+ numesetdim, esetvardim, num_eset, &eset_ids, VAR_NAME_ESET_VAR, VAR_ESET_TAB,
|
|
+ &eset_stat, vp->eset_var_tab, &eset_varid) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
|
|
- if ((status =
|
|
- ex_define_vars(exoid, EX_FACE_SET, "faceset", "face set", vp->num_fset, DIM_NUM_FSET_VAR,
|
|
- numfsetdim, fsetvardim, num_fset, &fset_ids, VAR_NAME_FSET_VAR,
|
|
- VAR_FSET_TAB, &fset_stat, vp->fset_var_tab, &fset_varid)) != EX_NOERR) {
|
|
+ if (exi_define_vars(exoid, EX_FACE_SET, "faceset", "face set", vp->num_fset, DIM_NUM_FSET_VAR,
|
|
+ numfsetdim, fsetvardim, num_fset, &fset_ids, VAR_NAME_FSET_VAR, VAR_FSET_TAB,
|
|
+ &fset_stat, vp->fset_var_tab, &fset_varid) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
|
|
- if ((status =
|
|
- ex_define_vars(exoid, EX_SIDE_SET, "sideset", "side set", vp->num_sset, DIM_NUM_SSET_VAR,
|
|
- numssetdim, ssetvardim, num_sset, &sset_ids, VAR_NAME_SSET_VAR,
|
|
- VAR_SSET_TAB, &sset_stat, vp->sset_var_tab, &sset_varid)) != EX_NOERR) {
|
|
+ if (exi_define_vars(exoid, EX_SIDE_SET, "sideset", "side set", vp->num_sset, DIM_NUM_SSET_VAR,
|
|
+ numssetdim, ssetvardim, num_sset, &sset_ids, VAR_NAME_SSET_VAR, VAR_SSET_TAB,
|
|
+ &sset_stat, vp->sset_var_tab, &sset_varid) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
|
|
- if ((status = ex_define_vars(exoid, EX_ELEM_SET, "elemset", "element set", vp->num_elset,
|
|
- DIM_NUM_ELSET_VAR, numelsetdim, elsetvardim, num_elset, &elset_ids,
|
|
- VAR_NAME_ELSET_VAR, VAR_ELSET_TAB, &elset_stat, vp->elset_var_tab,
|
|
- &elset_varid)) != EX_NOERR) {
|
|
+ if (exi_define_vars(exoid, EX_ELEM_SET, "elemset", "element set", vp->num_elset,
|
|
+ DIM_NUM_ELSET_VAR, numelsetdim, elsetvardim, num_elset, &elset_ids,
|
|
+ VAR_NAME_ELSET_VAR, VAR_ELSET_TAB, &elset_stat, vp->elset_var_tab,
|
|
+ &elset_varid) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
|
|
/* leave define mode */
|
|
|
|
in_define = 0;
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret;
|
|
}
|
|
|
|
@@ -317,7 +313,7 @@ int ex_put_all_var_param_ext(int exoid, const ex_var_params *vp)
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
if (in_define == 1) {
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
}
|
|
free(eblk_ids);
|
|
free(edblk_ids);
|
|
@@ -343,10 +339,10 @@ error_ret:
|
|
static int define_dimension(int exoid, const char *DIMENSION, int count, const char *label,
|
|
int *dimid)
|
|
{
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int status;
|
|
+ int status;
|
|
if ((status = nc_def_dim(exoid, DIMENSION, count, dimid)) != NC_NOERR) {
|
|
if (status == NC_ENAMEINUSE) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: %s variable name parameters are already defined "
|
|
"in file id %d",
|
|
@@ -354,78 +350,77 @@ static int define_dimension(int exoid, const char *DIMENSION, int count, const c
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
else {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to define number of %s variables in file id %d", label, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
}
|
|
- return (status);
|
|
+ return status;
|
|
}
|
|
|
|
static int define_variable_name_variable(int exoid, const char *VARIABLE, int dimension,
|
|
const char *label)
|
|
{
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int dims[2];
|
|
- int variable;
|
|
- int status;
|
|
-#if NC_HAS_HDF5
|
|
- int fill = NC_FILL_CHAR;
|
|
-#endif
|
|
-
|
|
+ int dims[2];
|
|
dims[0] = dimension;
|
|
(void)nc_inq_dimid(exoid, DIM_STR_NAME, &dims[1]); /* Checked earlier, so known to exist */
|
|
|
|
+ int variable;
|
|
+ int status;
|
|
if ((status = nc_def_var(exoid, VARIABLE, NC_CHAR, 2, dims, &variable)) != NC_NOERR) {
|
|
if (status == NC_ENAMEINUSE) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: %s variable names are already defined in file id %d",
|
|
label, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
else {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define %s variable names in file id %d",
|
|
label, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
}
|
|
- ex__set_compact_storage(exoid, variable);
|
|
-#if NC_HAS_HDF5
|
|
+ exi_set_compact_storage(exoid, variable);
|
|
+#if defined(EX_CAN_USE_NC_DEF_VAR_FILL)
|
|
+ int fill = NC_FILL_CHAR;
|
|
nc_def_var_fill(exoid, variable, 0, &fill);
|
|
#endif
|
|
- return (status);
|
|
+ return status;
|
|
}
|
|
|
|
static int *get_status_array(int exoid, int var_count, const char *VARIABLE, const char *label)
|
|
{
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int varid;
|
|
- int status;
|
|
int *stat_vals = NULL;
|
|
|
|
if (!(stat_vals = malloc(var_count * sizeof(int)))) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate memory for %s status array for file id %d", label, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
|
|
- return (NULL);
|
|
+ return NULL;
|
|
}
|
|
|
|
/* get variable id of status array */
|
|
+ int varid;
|
|
if ((nc_inq_varid(exoid, VARIABLE, &varid)) == NC_NOERR) {
|
|
/* if status array exists (V 2.01+), use it, otherwise assume
|
|
object exists to be backward compatible */
|
|
|
|
+ int status;
|
|
if ((status = nc_get_var_int(exoid, varid, stat_vals)) != NC_NOERR) {
|
|
free(stat_vals);
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get %s status array from file id %d",
|
|
label, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (NULL);
|
|
+ return NULL;
|
|
}
|
|
}
|
|
else {
|
|
/* status array doesn't exist (V2.00), dummy one up for later checking */
|
|
- int i;
|
|
- for (i = 0; i < var_count; i++) {
|
|
+ for (int i = 0; i < var_count; i++) {
|
|
stat_vals[i] = 1;
|
|
}
|
|
}
|
|
@@ -434,12 +429,10 @@ static int *get_status_array(int exoid, int var_count, const char *VARIABLE, con
|
|
|
|
static int put_truth_table(int exoid, int varid, int *table, const char *label)
|
|
{
|
|
- int iresult = 0;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
- iresult = nc_put_var_int(exoid, varid, table);
|
|
+ int iresult = nc_put_var_int(exoid, varid, table);
|
|
|
|
if (iresult != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to store %s variable truth table in file id %d",
|
|
label, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, iresult);
|
|
@@ -450,28 +443,27 @@ static int put_truth_table(int exoid, int varid, int *table, const char *label)
|
|
static int define_truth_table(ex_entity_type obj_type, int exoid, int num_ent, int num_var,
|
|
int *var_tab, int *status_tab, void_int *ids, const char *label)
|
|
{
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int k = 0;
|
|
- int i, j;
|
|
- int time_dim;
|
|
- int dims[2];
|
|
- int varid;
|
|
- int status;
|
|
+ int time_dim;
|
|
+ int varid;
|
|
+ int status;
|
|
|
|
if ((status = nc_inq_dimid(exoid, DIM_TIME, &time_dim)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate time dimension in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
return -1;
|
|
}
|
|
|
|
if (var_tab == NULL) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: %s variable truth table is NULL in file id %d", label,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
return -1;
|
|
}
|
|
|
|
- for (i = 0; i < num_ent; i++) {
|
|
+ int k = 0;
|
|
+ for (int i = 0; i < num_ent; i++) {
|
|
int64_t id;
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
|
|
id = ((int64_t *)ids)[i];
|
|
@@ -480,22 +472,24 @@ static int define_truth_table(ex_entity_type obj_type, int exoid, int num_ent, i
|
|
id = ((int *)ids)[i];
|
|
}
|
|
|
|
- for (j = 1; j <= num_var; j++) {
|
|
+ for (int j = 1; j <= num_var; j++) {
|
|
|
|
/* check if variables are to be put out for this block */
|
|
if (var_tab[k] != 0) {
|
|
if (status_tab[i] != 0) { /* only define variable if active */
|
|
+ int dims[2];
|
|
dims[0] = time_dim;
|
|
|
|
/* Determine number of entities in entity */
|
|
/* Need way to make this more generic... */
|
|
- status = nc_inq_dimid(exoid, ex__dim_num_entries_in_object(obj_type, i + 1), &dims[1]);
|
|
+ status = nc_inq_dimid(exoid, exi_dim_num_entries_in_object(obj_type, i + 1), &dims[1]);
|
|
if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to locate number of entities in %s %" PRId64 " in file id %d",
|
|
label, id, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (status);
|
|
+ return status;
|
|
}
|
|
|
|
/* define netCDF variable to store variable values;
|
|
@@ -503,36 +497,35 @@ static int define_truth_table(ex_entity_type obj_type, int exoid, int num_ent, i
|
|
* that the index of the EXODUS variable (which is part of
|
|
* the name of the netCDF variable) will begin at 1 instead of 0
|
|
*/
|
|
- status = nc_def_var(exoid, ex__name_var_of_object(obj_type, j, i + 1), nc_flt_code(exoid),
|
|
+ status = nc_def_var(exoid, exi_name_var_of_object(obj_type, j, i + 1), nc_flt_code(exoid),
|
|
2, dims, &varid);
|
|
if (status != NC_NOERR) {
|
|
if (status != NC_ENAMEINUSE) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to define %s variable for %s %" PRId64 " in file id %d",
|
|
label, label, id, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (status);
|
|
+ return status;
|
|
}
|
|
}
|
|
- ex__compress_variable(exoid, varid, 2);
|
|
+ exi_compress_variable(exoid, varid, 2);
|
|
}
|
|
- } /* if */
|
|
+ } /* if */
|
|
k++; /* increment truth table pointer */
|
|
- } /* for j */
|
|
- } /* for i */
|
|
+ } /* for j */
|
|
+ } /* for i */
|
|
return NC_NOERR;
|
|
}
|
|
|
|
-static int ex_define_vars(int exoid, ex_entity_type obj_type, const char *entity_name,
|
|
- const char *entity_blk_name, int numvar, const char *DNAME, int dimid1,
|
|
- int dimid2, int DVAL, void_int **entity_ids, const char *VNOV,
|
|
- const char *VTV, int **status_var, int *truth_table, int *truth_table_var)
|
|
+static int exi_define_vars(int exoid, ex_entity_type obj_type, const char *entity_name,
|
|
+ const char *entity_blk_name, int numvar, const char *DNAME, int dimid1,
|
|
+ int dimid2, int DVAL, void_int **entity_ids, const char *VNOV,
|
|
+ const char *VTV, int **status_var, int *truth_table,
|
|
+ int *truth_table_var)
|
|
{
|
|
- int status = 0;
|
|
- int dims[2];
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
if (numvar > 0) {
|
|
+ int status;
|
|
if ((status = define_dimension(exoid, DNAME, numvar, entity_name, &dimid2)) != NC_NOERR) {
|
|
return status;
|
|
}
|
|
@@ -556,16 +549,15 @@ static int ex_define_vars(int exoid, ex_entity_type obj_type, const char *entity
|
|
* table
|
|
*/
|
|
|
|
- dims[0] = dimid1;
|
|
- dims[1] = dimid2;
|
|
-
|
|
+ int dims[] = {dimid1, dimid2};
|
|
if ((status = nc_def_var(exoid, VTV, NC_INT, 2, dims, truth_table_var)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to define %s variable truth table in file id %d", entity_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
return status;
|
|
}
|
|
- ex__set_compact_storage(exoid, *truth_table_var);
|
|
+ exi_set_compact_storage(exoid, *truth_table_var);
|
|
}
|
|
return NC_NOERR;
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_assemblies.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_assemblies.c
|
|
index d8fd46a889..a8ee3e14d4 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_assemblies.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_assemblies.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -25,7 +25,7 @@ int ex_put_assemblies(int exoid, size_t count, const struct ex_assembly *assembl
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -37,15 +37,15 @@ int ex_put_assemblies(int exoid, size_t count, const struct ex_assembly *assembl
|
|
|
|
int *entlst_id = (int *)calloc(count, sizeof(int));
|
|
|
|
- int max_name_len = 0;
|
|
- bool in_define = false;
|
|
+ size_t max_name_len = 0;
|
|
+ bool in_define = false;
|
|
for (size_t i = 0; i < count; i++) {
|
|
/* See if an assembly with this id has already been defined or exists on file... */
|
|
if (nc_inq_varid(exoid, VAR_ENTITY_ASSEMBLY(assemblies[i].id), &entlst_id[i]) != NC_NOERR) {
|
|
/* Assembly has not already been defined */
|
|
/* put netcdf file into define mode */
|
|
if (!in_define) {
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -106,7 +106,7 @@ int ex_put_assemblies(int exoid, size_t count, const struct ex_assembly *assembl
|
|
}
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, entlst_id[i], 1);
|
|
+ exi_compress_variable(exoid, entlst_id[i], 1);
|
|
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_DB) {
|
|
long long tmp = assemblies[i].id;
|
|
@@ -158,7 +158,7 @@ int ex_put_assemblies(int exoid, size_t count, const struct ex_assembly *assembl
|
|
}
|
|
|
|
/* Increment assembly count */
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
if (file) {
|
|
file->assembly_count++;
|
|
}
|
|
@@ -166,14 +166,19 @@ int ex_put_assemblies(int exoid, size_t count, const struct ex_assembly *assembl
|
|
}
|
|
/* leave define mode */
|
|
if (in_define) {
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode in file id %d", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(entlst_id);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
+ in_define = false;
|
|
}
|
|
|
|
/* Update the maximum_name_length attribute on the file. */
|
|
- ex__update_max_name_length(exoid, max_name_len - 1);
|
|
+ if (max_name_len > 0) {
|
|
+ exi_update_max_name_length(exoid, max_name_len - 1);
|
|
+ }
|
|
|
|
/* Assembly are now all defined; see if any set data needs to be output... */
|
|
for (size_t i = 0; i < count; i++) {
|
|
@@ -195,7 +200,7 @@ int ex_put_assemblies(int exoid, size_t count, const struct ex_assembly *assembl
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
if (in_define) {
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
}
|
|
free(entlst_id);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_attr.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_attr.c
|
|
index 60fc667a0c..846011c8a8 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_attr.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_attr.c
|
|
@@ -24,7 +24,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__comp_ws, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_comp_ws, etc
|
|
|
|
/*!
|
|
* writes the attributes for an edge/face/element block
|
|
@@ -41,13 +41,13 @@ int ex_put_attr(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, const v
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
if (blk_type != EX_NODAL) {
|
|
/* Determine index of blk_id in VAR_ID_EL_BLK array */
|
|
- blk_id_ndx = ex__id_lkup(exoid, blk_type, blk_id);
|
|
+ blk_id_ndx = exi_id_lkup(exoid, blk_type, blk_id);
|
|
if (blk_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -94,7 +94,7 @@ int ex_put_attr(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, const v
|
|
}
|
|
|
|
/* write out the attributes */
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_var_float(exoid, attrid, attrib);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_attr_names.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_attr_names.c
|
|
index e1b3b96a9d..8954f73750 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_attr_names.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_attr_names.c
|
|
@@ -25,7 +25,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__id_lkup, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_id_lkup, etc
|
|
|
|
/*!
|
|
* writes the attribute names for a block
|
|
@@ -43,11 +43,11 @@ int ex_put_attr_names(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, c
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- blk_id_ndx = ex__id_lkup(exoid, blk_type, blk_id);
|
|
+ blk_id_ndx = exi_id_lkup(exoid, blk_type, blk_id);
|
|
if (blk_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -136,7 +136,7 @@ int ex_put_attr_names(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, c
|
|
}
|
|
|
|
/* write out the attributes */
|
|
- status = ex__put_names(exoid, varid, num_attr, names, blk_type, "attribute", __func__);
|
|
+ status = exi_put_names(exoid, varid, num_attr, names, blk_type, "attribute", __func__);
|
|
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_attr_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_attr_param.c
|
|
index 34ac9bd393..dd7847c7da 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_attr_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_attr_param.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2023 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -46,12 +46,9 @@ int ex_put_attr_param(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, i
|
|
int numobjentdim;
|
|
int obj_id_ndx;
|
|
int numattrdim;
|
|
-#if NC_HAS_HDF5
|
|
- int fill = NC_FILL_CHAR;
|
|
-#endif
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -60,7 +57,7 @@ int ex_put_attr_param(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, i
|
|
obj_id_ndx = 0;
|
|
}
|
|
else {
|
|
- obj_id_ndx = ex__id_lkup(exoid, obj_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, obj_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -152,7 +149,7 @@ int ex_put_attr_param(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, i
|
|
}
|
|
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -176,7 +173,7 @@ int ex_put_attr_param(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, i
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 2);
|
|
+ exi_compress_variable(exoid, varid, 2);
|
|
|
|
/* inquire previously defined dimensions */
|
|
if ((status = nc_inq_dimid(exoid, DIM_STR_NAME, &strdim)) != NC_NOERR) {
|
|
@@ -196,12 +193,13 @@ int ex_put_attr_param(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, i
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
-#if NC_HAS_HDF5
|
|
+#if defined(EX_CAN_USE_NC_DEF_VAR_FILL)
|
|
+ int fill = NC_FILL_CHAR;
|
|
nc_def_var_fill(exoid, varid, 0, &fill);
|
|
#endif
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -209,6 +207,6 @@ int ex_put_attr_param(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, i
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_attribute.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_attribute.c
|
|
index 8ba6e29ecc..a63b09cc81 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_attribute.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_attribute.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -9,123 +9,36 @@
|
|
#include "exodusII.h" // for ex_err, etc
|
|
#include "exodusII_int.h" // for EX_FATAL, etc
|
|
|
|
-/* An assembly attribute is similar to an IOSS property consisting of
|
|
+/* An entity attribute is similar to an IOSS property consisting of
|
|
a name, a type, and a value or values. It is not a value per entity
|
|
- in the assembly, but a value for the assembly. For now, they types
|
|
+ in the entity, but a value for the entity itself. For now, the types
|
|
will be limited to text, integer, and double to provide capability
|
|
without the complexity of supporting the many types available in
|
|
NetCDF-4 including user-defined types. Note that an attribute can
|
|
have multiple values, for example if the attribute is a range, it
|
|
could have the value {1.0, 100.0}
|
|
|
|
- NOTE: This type of attribute (value on entity instead of value per
|
|
- entities members, for example nodes in a nodeset) will also be added
|
|
- to the other entity types (blocks and sets) when implemented for
|
|
- assemblies.
|
|
-
|
|
NOTE: Need a better name or way of distinguishing from the
|
|
attributes which are currently supported in Exodus.
|
|
*/
|
|
|
|
-static int ex__get_varid(int exoid, ex_entity_type obj_type, ex_entity_id id)
|
|
-{
|
|
- const char *entryptr = NULL;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
- int id_ndx = 0;
|
|
- int status = 0;
|
|
- int varid = 0;
|
|
-
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
- }
|
|
-
|
|
- if (obj_type == EX_GLOBAL) {
|
|
- return NC_GLOBAL;
|
|
- }
|
|
-
|
|
- if (obj_type == EX_ASSEMBLY) {
|
|
- if ((status = nc_inq_varid(exoid, VAR_ENTITY_ASSEMBLY(id), &varid)) != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to locate %s id %" PRId64 " in id array in file id %d",
|
|
- ex_name_of_object(obj_type), id, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return EX_FATAL;
|
|
- }
|
|
- return varid;
|
|
- }
|
|
-
|
|
- if (obj_type == EX_BLOB) {
|
|
- if ((status = nc_inq_varid(exoid, VAR_ENTITY_BLOB(id), &varid)) != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to locate %s id %" PRId64 " in id array in file id %d",
|
|
- ex_name_of_object(obj_type), id, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return EX_FATAL;
|
|
- }
|
|
- return varid;
|
|
- }
|
|
-
|
|
- /* Everything else ... */
|
|
- /* First, locate index of this objects id `obj_type` id array */
|
|
- id_ndx = ex__id_lkup(exoid, obj_type, id);
|
|
- if (id_ndx <= 0) {
|
|
- ex_get_err(NULL, NULL, &status);
|
|
- if (status != 0) {
|
|
- if (status == EX_NULLENTITY) { /* NULL object? */
|
|
- return EX_NOERR;
|
|
- }
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to locate %s id %" PRId64 " in id array in file id %d",
|
|
- ex_name_of_object(obj_type), id, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return EX_FATAL;
|
|
- }
|
|
- }
|
|
-
|
|
- switch (obj_type) {
|
|
- case EX_NODE_SET: entryptr = VAR_NODE_NS(id_ndx); break;
|
|
- case EX_EDGE_SET: entryptr = VAR_EDGE_ES(id_ndx); break;
|
|
- case EX_FACE_SET: entryptr = VAR_FACE_FS(id_ndx); break;
|
|
- case EX_SIDE_SET: entryptr = VAR_ELEM_SS(id_ndx); break;
|
|
- case EX_ELEM_SET: entryptr = VAR_ELEM_ELS(id_ndx); break;
|
|
- case EX_EDGE_BLOCK: entryptr = VAR_EBCONN(id_ndx); break;
|
|
- case EX_FACE_BLOCK: entryptr = VAR_FBCONN(id_ndx); break;
|
|
- case EX_ELEM_BLOCK: entryptr = VAR_CONN(id_ndx); break;
|
|
- default:
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: object type %d not supported in call to %s", obj_type,
|
|
- __func__);
|
|
- ex_err(__func__, errmsg, EX_BADPARAM);
|
|
- return EX_FATAL;
|
|
- }
|
|
-
|
|
- if ((status = nc_inq_varid(exoid, entryptr, &varid)) != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to locate entity list array for %s %" PRId64 " in file id %d",
|
|
- ex_name_of_object(obj_type), id, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return EX_FATAL;
|
|
- }
|
|
- return varid;
|
|
-}
|
|
-
|
|
/* define and output a double attribute */
|
|
int ex_put_double_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id,
|
|
- const char *atr_name, int num_values, double *values)
|
|
+ const char *atr_name, int num_values, const double *values)
|
|
{
|
|
int status;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
int varid;
|
|
|
|
EX_FUNC_ENTER();
|
|
- varid = ex__get_varid(exoid, obj_type, id);
|
|
+ varid = exi_get_varid(exoid, obj_type, id);
|
|
if (varid <= 0 && obj_type != EX_GLOBAL) {
|
|
- /* Error message handled in ex__get_varid */
|
|
+ /* Error message handled in exi_get_varid */
|
|
EX_FUNC_LEAVE(varid);
|
|
}
|
|
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -141,7 +54,9 @@ int ex_put_double_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id,
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -149,27 +64,27 @@ int ex_put_double_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id,
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* define and output an integer attribute */
|
|
int ex_put_integer_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id,
|
|
- const char *atr_name, int num_values, void_int *values)
|
|
+ const char *atr_name, int num_values, const void_int *values)
|
|
{
|
|
int status;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
int varid;
|
|
|
|
EX_FUNC_ENTER();
|
|
- varid = ex__get_varid(exoid, obj_type, id);
|
|
+ varid = exi_get_varid(exoid, obj_type, id);
|
|
if (varid <= 0 && obj_type != EX_GLOBAL) {
|
|
- /* Error message handled in ex__get_varid */
|
|
+ /* Error message handled in exi_get_varid */
|
|
EX_FUNC_LEAVE(varid);
|
|
}
|
|
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -191,7 +106,9 @@ int ex_put_integer_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -199,7 +116,7 @@ int ex_put_integer_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -213,14 +130,14 @@ int ex_put_text_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id, c
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- varid = ex__get_varid(exoid, obj_type, id);
|
|
+ varid = exi_get_varid(exoid, obj_type, id);
|
|
if (varid <= 0 && obj_type != EX_GLOBAL) {
|
|
- /* Error message handled in ex__get_varid */
|
|
+ /* Error message handled in exi_get_varid */
|
|
EX_FUNC_LEAVE(varid);
|
|
}
|
|
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -235,7 +152,9 @@ int ex_put_text_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id, c
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -243,7 +162,7 @@ int ex_put_text_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id, c
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -273,7 +192,7 @@ int ex_put_attribute(int exoid, ex_attribute attribute)
|
|
}
|
|
|
|
/*! Define and output the specified attributes. */
|
|
-int ex_put_attributes(int exoid, size_t attr_count, ex_attribute *attr)
|
|
+int ex_put_attributes(int exoid, size_t attr_count, const ex_attribute *attr)
|
|
{
|
|
for (size_t i = 0; i < attr_count; i++) {
|
|
int status = ex_put_attribute(exoid, attr[i]);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_blobs.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_blobs.c
|
|
index 5eb9e44d95..89c22537bb 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_blobs.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_blobs.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -23,13 +23,13 @@ int ex_put_blobs(int exoid, size_t count, const struct ex_blob *blobs)
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
int *entlst_id = (int *)calloc(count, sizeof(int));
|
|
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(entlst_id);
|
|
@@ -85,7 +85,7 @@ int ex_put_blobs(int exoid, size_t count, const struct ex_blob *blobs)
|
|
}
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, entlst_id[i], 1);
|
|
+ exi_compress_variable(exoid, entlst_id[i], 1);
|
|
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_DB) {
|
|
long long id = blobs[i].id;
|
|
@@ -111,13 +111,15 @@ int ex_put_blobs(int exoid, size_t count, const struct ex_blob *blobs)
|
|
}
|
|
|
|
/* Increment blob count */
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
if (file) {
|
|
file->blob_count++;
|
|
}
|
|
}
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode in file id %d", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(entlst_id);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -139,7 +141,7 @@ int ex_put_blobs(int exoid, size_t count, const struct ex_blob *blobs)
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
free(entlst_id);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_block_params.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_block_params.c
|
|
index ee31c0fe21..a30774b2d5 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_block_params.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_block_params.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -35,9 +35,9 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
int connid = 0;
|
|
int npeid;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- char * entity_type1 = NULL;
|
|
- char * entity_type2 = NULL;
|
|
- int * blocks_to_define = NULL;
|
|
+ char *entity_type1 = NULL;
|
|
+ char *entity_type2 = NULL;
|
|
+ int *blocks_to_define = NULL;
|
|
const char *dnumblk = NULL;
|
|
const char *vblkids = NULL;
|
|
const char *vblksta = NULL;
|
|
@@ -53,16 +53,13 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
const char *dnnpe = NULL;
|
|
const char *dnepe = NULL;
|
|
const char *dnfpe = NULL;
|
|
-#if NC_HAS_HDF5
|
|
- int fill = NC_FILL_CHAR;
|
|
-#endif
|
|
|
|
if (block_count == 0) {
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -115,16 +112,16 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- if ((status = ex__get_dimension(exoid, dnumblk, ex_name_of_object(last_type), &num_blk, &dimid,
|
|
+ if ((status = exi_get_dimension(exoid, dnumblk, ex_name_of_object(last_type), &num_blk, &dimid,
|
|
__func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: No %ss defined in file id %d",
|
|
ex_name_of_object(last_type), exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_LASTERR);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
if (block_count == num_blk) {
|
|
- status = ex__put_homogenous_block_params(exoid, block_count, blocks);
|
|
+ status = exi_put_homogenous_block_params(exoid, block_count, blocks);
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
}
|
|
@@ -165,11 +162,11 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
}
|
|
|
|
/* first check if any blocks of that type are specified */
|
|
- if ((status = ex__get_dimension(exoid, dnumblk, ex_name_of_object(blocks[i].type), &num_blk,
|
|
+ if ((status = exi_get_dimension(exoid, dnumblk, ex_name_of_object(blocks[i].type), &num_blk,
|
|
&dimid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: No %ss defined in file id %d",
|
|
ex_name_of_object(blocks[i].type), exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_LASTERR);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(blocks_to_define);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -189,7 +186,7 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- status = ex__id_lkup(exoid, blocks[i].type, blocks[i].id);
|
|
+ status = exi_id_lkup(exoid, blocks[i].type, blocks[i].id);
|
|
if (-status != EX_LOOKUPFAIL) { /* found the element block id */
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: %s id %" PRId64 " already exists in file id %d",
|
|
ex_name_of_object(blocks[i].type), blocks[i].id, exoid);
|
|
@@ -200,10 +197,10 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
|
|
/* Keep track of the total number of element blocks defined using a counter
|
|
stored in a linked list keyed by exoid.
|
|
- NOTE: ex__get_file_item is a function that finds the number of element
|
|
+ NOTE: exi_get_file_item is a function that finds the number of element
|
|
blocks for a specific file and returns that value.
|
|
*/
|
|
- cur_num_blk = ex__get_file_item(exoid, ex__get_counter_list(blocks[i].type));
|
|
+ cur_num_blk = exi_get_file_item(exoid, exi_get_counter_list(blocks[i].type));
|
|
if (cur_num_blk >= (int)num_blk) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: exceeded number of %ss (%d) defined in file id %d",
|
|
ex_name_of_object(blocks[i].type), (int)num_blk, exoid);
|
|
@@ -212,9 +209,9 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- /* NOTE: ex__inc_file_item is a function that finds the number of element
|
|
+ /* NOTE: exi_inc_file_item is a function that finds the number of element
|
|
blocks for a specific file and returns that value incremented. */
|
|
- cur_num_blk = ex__inc_file_item(exoid, ex__get_counter_list(blocks[i].type));
|
|
+ cur_num_blk = exi_inc_file_item(exoid, exi_get_counter_list(blocks[i].type));
|
|
start[0] = cur_num_blk;
|
|
|
|
/* write out block id to previously defined id array variable*/
|
|
@@ -256,7 +253,7 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
}
|
|
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(blocks_to_define);
|
|
@@ -274,27 +271,27 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
case EX_EDGE_BLOCK:
|
|
dneblk = DIM_NUM_ED_IN_EBLK(blk_id_ndx);
|
|
dnnpe = DIM_NUM_NOD_PER_ED(blk_id_ndx);
|
|
- dnepe = 0;
|
|
- dnfpe = 0;
|
|
+ dnepe = NULL;
|
|
+ dnfpe = NULL;
|
|
dnape = DIM_NUM_ATT_IN_EBLK(blk_id_ndx);
|
|
vblkatt = VAR_EATTRIB(blk_id_ndx);
|
|
vattnam = VAR_NAME_EATTRIB(blk_id_ndx);
|
|
vnodcon = VAR_EBCONN(blk_id_ndx);
|
|
- vedgcon = 0;
|
|
- vfaccon = 0;
|
|
+ vedgcon = NULL;
|
|
+ vfaccon = NULL;
|
|
break;
|
|
case EX_FACE_BLOCK:
|
|
dneblk = DIM_NUM_FA_IN_FBLK(blk_id_ndx);
|
|
dnnpe = DIM_NUM_NOD_PER_FA(blk_id_ndx);
|
|
- dnepe = 0;
|
|
- dnfpe = 0;
|
|
+ dnepe = NULL;
|
|
+ dnfpe = NULL;
|
|
dnape = DIM_NUM_ATT_IN_FBLK(blk_id_ndx);
|
|
vblkatt = VAR_FATTRIB(blk_id_ndx);
|
|
vattnam = VAR_NAME_FATTRIB(blk_id_ndx);
|
|
vnodcon = VAR_FBCONN(blk_id_ndx);
|
|
vnpecnt = VAR_FBEPEC(blk_id_ndx);
|
|
- vedgcon = 0;
|
|
- vfaccon = 0;
|
|
+ vedgcon = NULL;
|
|
+ vfaccon = NULL;
|
|
break;
|
|
case EX_ELEM_BLOCK:
|
|
dneblk = DIM_NUM_EL_IN_BLK(blk_id_ndx);
|
|
@@ -383,22 +380,7 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 2);
|
|
-
|
|
-#if defined(PARALLEL_AWARE_EXODUS)
|
|
- /*
|
|
- * There is currently a bug in netcdf-4.5.1-devel and earlier
|
|
- * for partial parallel output of strided arrays in collective
|
|
- * mode for netcdf-4-based output. If the number of attributes >
|
|
- * 1 and in parallel mode, set the mode to independent.
|
|
- */
|
|
- if (blocks[i].num_attribute > 1) {
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
- if (file->is_parallel && file->is_hdf5) {
|
|
- nc_var_par_access(exoid, varid, NC_INDEPENDENT);
|
|
- }
|
|
- }
|
|
-#endif
|
|
+ exi_compress_variable(exoid, varid, 2);
|
|
|
|
/* inquire previously defined dimensions */
|
|
if ((status = nc_inq_dimid(exoid, DIM_STR_NAME, &strdim)) != NC_NOERR) {
|
|
@@ -418,7 +400,8 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
-#if NC_HAS_HDF5
|
|
+#if defined(EX_CAN_USE_NC_DEF_VAR_FILL)
|
|
+ int fill = NC_FILL_CHAR;
|
|
nc_def_var_fill(exoid, att_name_varid, 0, &fill);
|
|
#endif
|
|
}
|
|
@@ -531,7 +514,7 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, connid, 1);
|
|
+ exi_compress_variable(exoid, connid, 1);
|
|
}
|
|
}
|
|
/* store element type as attribute of connectivity variable */
|
|
@@ -579,7 +562,9 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
free(blocks_to_define);
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -598,14 +583,13 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
write anything; avoids corruption in some cases.
|
|
*/
|
|
size_t count[2];
|
|
- char * text = "";
|
|
- size_t j;
|
|
+ char *text = "";
|
|
|
|
count[0] = 1;
|
|
start[1] = 0;
|
|
count[1] = strlen(text) + 1;
|
|
|
|
- for (j = 0; j < blocks[i].num_attribute; j++) {
|
|
+ for (int64_t j = 0; j < blocks[i].num_attribute; j++) {
|
|
start[0] = j;
|
|
nc_put_vara_text(exoid, att_name_varid, start, count, text);
|
|
}
|
|
@@ -618,6 +602,6 @@ int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *bl
|
|
error_ret:
|
|
free(blocks_to_define);
|
|
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_cmap_params.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_cmap_params.c
|
|
index 5707511790..196d1966bf 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_cmap_params.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_cmap_params.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -33,38 +33,34 @@
|
|
/*****************************************************************************/
|
|
|
|
#include <exodusII.h> // for ex_err, etc
|
|
-#include <exodusII_int.h> // for EX_FATAL, ex__leavedef, etc
|
|
+#include <exodusII_int.h> // for EX_FATAL, exi_leavedef, etc
|
|
|
|
-int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_node_cnts,
|
|
- void_int *elem_cmap_ids, void_int *elem_cmap_elem_cnts, int64_t processor)
|
|
+int ex_put_cmap_params(int exoid, const void_int *node_cmap_ids,
|
|
+ const void_int *node_cmap_node_cnts, const void_int *elem_cmap_ids,
|
|
+ const void_int *elem_cmap_elem_cnts, int64_t processor)
|
|
{
|
|
- size_t num_n_comm_maps, num_e_comm_maps;
|
|
- size_t ncnt_cmap, ecnt_cmap;
|
|
- size_t icm;
|
|
- int varid, dimid[1], n_varid, e_varid, status;
|
|
- int n_varid_idx, e_varid_idx;
|
|
- size_t start[1];
|
|
- char ftype[2];
|
|
- int64_t nl_ncnt_cmap, nl_ecnt_cmap;
|
|
- int nmstat;
|
|
+ int dimid[1];
|
|
+ size_t start[1];
|
|
+ char ftype[2];
|
|
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
- int index_type = NC_INT;
|
|
- int id_type = NC_INT;
|
|
- int format;
|
|
-
|
|
EX_UNUSED(processor);
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ int format;
|
|
nc_inq_format(exoid, &format);
|
|
+
|
|
+ int index_type = NC_INT;
|
|
if ((ex_int64_status(exoid) & EX_BULK_INT64_DB) || (format == NC_FORMAT_NETCDF4)) {
|
|
index_type = NC_INT64;
|
|
}
|
|
+
|
|
+ int id_type = NC_INT;
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_DB) {
|
|
id_type = NC_INT64;
|
|
}
|
|
@@ -75,7 +71,7 @@ int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
** be used for writing a parallel file
|
|
*/
|
|
/* Get the file type */
|
|
- if (ex__get_file_type(exoid, ftype) != EX_NOERR) {
|
|
+ if (exi_get_file_type(exoid, ftype) != EX_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get file type from file ID %d\n", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MSG);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -90,14 +86,16 @@ int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
}
|
|
|
|
/* Put NetCDF file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ int status;
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to file ID %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Check to see if there are nodal communications maps in the file */
|
|
- if ((status = nc_inq_dimid(exoid, DIM_NUM_N_CMAPS, &dimid[0])) != NC_NOERR) {
|
|
+ size_t num_n_comm_maps;
|
|
+ if (nc_inq_dimid(exoid, DIM_NUM_N_CMAPS, &dimid[0]) != NC_NOERR) {
|
|
num_n_comm_maps = 0;
|
|
}
|
|
else {
|
|
@@ -114,6 +112,7 @@ int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
* Add dimensions for the size of the number of nodal
|
|
* communication maps.
|
|
*/
|
|
+ int n_varid_idx;
|
|
if (num_n_comm_maps > 0) {
|
|
|
|
/* add the communications data index variable */
|
|
@@ -123,20 +122,20 @@ int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
VAR_N_COMM_DATA_IDX, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Add dimensions for all of the nodal communication maps */
|
|
- ncnt_cmap = 0;
|
|
+ int ncnt_cmap = 0;
|
|
if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
- for (icm = 0; icm < num_n_comm_maps; icm++) {
|
|
+ for (size_t icm = 0; icm < num_n_comm_maps; icm++) {
|
|
ncnt_cmap += ((int64_t *)node_cmap_node_cnts)[icm];
|
|
}
|
|
}
|
|
else {
|
|
- for (icm = 0; icm < num_n_comm_maps; icm++) {
|
|
+ for (size_t icm = 0; icm < num_n_comm_maps; icm++) {
|
|
ncnt_cmap += ((int *)node_cmap_node_cnts)[icm];
|
|
}
|
|
}
|
|
@@ -146,38 +145,40 @@ int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
DIM_NCNT_CMAP, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Define variables for the nodal IDS and processor vectors */
|
|
+ int varid;
|
|
if ((status = nc_def_var(exoid, VAR_N_COMM_NIDS, id_type, 1, dimid, &varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to add variable \"%s\" in file ID %d",
|
|
VAR_N_COMM_NIDS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
if ((status = nc_def_var(exoid, VAR_N_COMM_PROC, NC_INT, 1, dimid, &varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to add variable \"%s\" in file ID %d",
|
|
VAR_N_COMM_PROC, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
} /* End "if (num_n_comm_maps > 0)" */
|
|
|
|
/* Check to see if there are elemental communications maps in the file */
|
|
- if ((status = nc_inq_dimid(exoid, DIM_NUM_E_CMAPS, &dimid[0])) != NC_NOERR) {
|
|
+ size_t num_e_comm_maps;
|
|
+ if (nc_inq_dimid(exoid, DIM_NUM_E_CMAPS, &dimid[0]) != NC_NOERR) {
|
|
num_e_comm_maps = 0;
|
|
}
|
|
else {
|
|
@@ -194,6 +195,7 @@ int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
* Add dimensions for the size of the number of elemental
|
|
* communication maps.
|
|
*/
|
|
+ int e_varid_idx;
|
|
if (num_e_comm_maps > 0) {
|
|
|
|
/* add the communications data index variable */
|
|
@@ -203,20 +205,20 @@ int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
VAR_E_COMM_DATA_IDX, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Add dimensions for each of the nodal communication maps */
|
|
- ecnt_cmap = 0;
|
|
+ int ecnt_cmap = 0;
|
|
if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
- for (icm = 0; icm < num_e_comm_maps; icm++) {
|
|
+ for (size_t icm = 0; icm < num_e_comm_maps; icm++) {
|
|
ecnt_cmap += ((int64_t *)elem_cmap_elem_cnts)[icm];
|
|
}
|
|
}
|
|
else {
|
|
- for (icm = 0; icm < num_e_comm_maps; icm++) {
|
|
+ for (size_t icm = 0; icm < num_e_comm_maps; icm++) {
|
|
ecnt_cmap += ((int *)elem_cmap_elem_cnts)[icm];
|
|
}
|
|
}
|
|
@@ -225,53 +227,55 @@ int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
DIM_ECNT_CMAP, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Define variables for the element IDS and processor vectors */
|
|
+ int varid;
|
|
if ((status = nc_def_var(exoid, VAR_E_COMM_EIDS, id_type, 1, dimid, &varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to add variable \"%s\" in file ID %d",
|
|
VAR_E_COMM_EIDS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
if ((status = nc_def_var(exoid, VAR_E_COMM_PROC, NC_INT, 1, dimid, &varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to add variable \"%s\" in file ID %d",
|
|
VAR_E_COMM_PROC, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
if ((status = nc_def_var(exoid, VAR_E_COMM_SIDS, NC_INT, 1, dimid, &varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to add variable \"%s\" in file ID %d",
|
|
VAR_E_COMM_SIDS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
} /* End "if (num_e_comm_maps > 0)" */
|
|
|
|
/* Exit define mode */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
/* Set the status of the nodal communication maps */
|
|
if (num_n_comm_maps > 0) {
|
|
|
|
+ int n_varid;
|
|
if ((status = nc_inq_varid(exoid, VAR_N_COMM_STAT, &n_varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to find variable ID for \"%s\" in file ID %d",
|
|
VAR_N_COMM_STAT, exoid);
|
|
@@ -279,8 +283,8 @@ int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- nl_ncnt_cmap = 0; /* reset this for index */
|
|
- for (icm = 0; icm < num_n_comm_maps; icm++) {
|
|
+ int64_t nl_ncnt_cmap = 0; /* reset this for index */
|
|
+ for (size_t icm = 0; icm < num_n_comm_maps; icm++) {
|
|
|
|
size_t ncnc;
|
|
if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
@@ -290,13 +294,8 @@ int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
ncnc = ((int *)node_cmap_node_cnts)[icm];
|
|
}
|
|
|
|
- start[0] = icm;
|
|
- if (ncnc > 0) {
|
|
- nmstat = 1;
|
|
- }
|
|
- else {
|
|
- nmstat = 0;
|
|
- }
|
|
+ int nmstat = ncnc > 0 ? 1 : 0;
|
|
+ start[0] = icm;
|
|
|
|
if ((status = nc_put_var1_int(exoid, n_varid, start, &nmstat)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unable to output variable in file ID %d", exoid);
|
|
@@ -344,6 +343,7 @@ int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
if (num_e_comm_maps > 0) {
|
|
|
|
/* Get variable ID for elemental status vector */
|
|
+ int e_varid;
|
|
if ((status = nc_inq_varid(exoid, VAR_E_COMM_STAT, &e_varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to find variable ID for \"%s\" in file ID %d",
|
|
VAR_E_COMM_STAT, exoid);
|
|
@@ -351,8 +351,8 @@ int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- nl_ecnt_cmap = 0; /* reset this for index */
|
|
- for (icm = 0; icm < num_e_comm_maps; icm++) {
|
|
+ int64_t nl_ecnt_cmap = 0; /* reset this for index */
|
|
+ for (size_t icm = 0; icm < num_e_comm_maps; icm++) {
|
|
size_t ecec;
|
|
if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
ecec = ((int64_t *)elem_cmap_elem_cnts)[icm];
|
|
@@ -360,13 +360,8 @@ int ex_put_cmap_params(int exoid, void_int *node_cmap_ids, void_int *node_cmap_n
|
|
else {
|
|
ecec = ((int *)elem_cmap_elem_cnts)[icm];
|
|
}
|
|
- start[0] = icm;
|
|
- if (ecec > 0) {
|
|
- nmstat = 1;
|
|
- }
|
|
- else {
|
|
- nmstat = 0;
|
|
- }
|
|
+ start[0] = icm;
|
|
+ int nmstat = ecec > 0 ? 1 : 0;
|
|
|
|
if ((status = nc_put_var1_int(exoid, e_varid, start, &nmstat)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unable to output variable in file ID %d", exoid);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_cmap_params_cc.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_cmap_params_cc.c
|
|
index 607af5d6fc..1df47f1eee 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_cmap_params_cc.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_cmap_params_cc.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -33,19 +33,20 @@
|
|
/*****************************************************************************/
|
|
/*****************************************************************************/
|
|
#include <exodusII.h> // for ex_err, etc
|
|
-#include <exodusII_int.h> // for EX_FATAL, ex__leavedef, etc
|
|
+#include <exodusII_int.h> // for EX_FATAL, exi_leavedef, etc
|
|
|
|
-int ex_put_cmap_params_cc(int exoid, void_int *node_cmap_ids, void_int *node_cmap_node_cnts,
|
|
- void_int *node_proc_ptrs, void_int *elem_cmap_ids,
|
|
- void_int *elem_cmap_elem_cnts, void_int *elem_proc_ptrs)
|
|
+int ex_put_cmap_params_cc(int exoid, const void_int *node_cmap_ids,
|
|
+ const void_int *node_cmap_node_cnts, const void_int *node_proc_ptrs,
|
|
+ const void_int *elem_cmap_ids, const void_int *elem_cmap_elem_cnts,
|
|
+ const void_int *elem_proc_ptrs)
|
|
{
|
|
- size_t num_n_comm_maps, num_e_comm_maps, num_procs_in_file;
|
|
- int status, icm, n_varid[2], e_varid[2], iproc;
|
|
+ size_t num_n_comm_maps, num_e_comm_maps;
|
|
+ int status, n_varid[2], e_varid[2];
|
|
int varid, n_dimid[1], e_dimid[1];
|
|
int n_varid_idx, e_varid_idx;
|
|
int num_icm;
|
|
size_t start[1], count[1];
|
|
- size_t ecnt_cmap, ncnt_cmap;
|
|
+ size_t iproc;
|
|
|
|
long long nl_ecnt_cmap, nl_ncnt_cmap;
|
|
void_int *n_var_idx = NULL;
|
|
@@ -54,16 +55,16 @@ int ex_put_cmap_params_cc(int exoid, void_int *node_cmap_ids, void_int *node_cma
|
|
int nmstat;
|
|
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- int format;
|
|
int index_type, bulk_type;
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* See if using NC_FORMAT_NETCDF4 format... */
|
|
+ int format;
|
|
nc_inq_format(exoid, &format);
|
|
if ((ex_int64_status(exoid) & EX_BULK_INT64_DB) || (format == NC_FORMAT_NETCDF4)) {
|
|
index_type = NC_INT64;
|
|
@@ -86,6 +87,7 @@ int ex_put_cmap_params_cc(int exoid, void_int *node_cmap_ids, void_int *node_cma
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ size_t num_procs_in_file;
|
|
if ((status = nc_inq_dimlen(exoid, n_dimid[0], &num_procs_in_file)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to find length of dimension \"%s\" in file ID %d", DIM_NUM_PROCS_F,
|
|
@@ -158,7 +160,7 @@ file ID %d",
|
|
} /* "if (num_n_comm_maps > 0)" */
|
|
|
|
/* Check to see if there are elemental communications maps in the file */
|
|
- if ((status = nc_inq_dimid(exoid, DIM_NUM_E_CMAPS, &e_dimid[0])) != NC_NOERR) {
|
|
+ if (nc_inq_dimid(exoid, DIM_NUM_E_CMAPS, &e_dimid[0]) != NC_NOERR) {
|
|
num_e_comm_maps = 0;
|
|
}
|
|
else {
|
|
@@ -213,7 +215,7 @@ file ID %d",
|
|
} /* "if (num_e_comm_maps >0)" */
|
|
|
|
/* Put NetCDF file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file ID %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -231,13 +233,13 @@ file ID %d",
|
|
VAR_N_COMM_DATA_IDX, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* now add up all of the nodal communications maps */
|
|
- ncnt_cmap = 0;
|
|
+ size_t ncnt_cmap = 0;
|
|
for (iproc = 0; iproc < num_procs_in_file; iproc++) {
|
|
if (index_type == NC_INT64) {
|
|
num_icm = ((int64_t *)n_var_idx)[iproc + 1] - ((int64_t *)n_var_idx)[iproc];
|
|
@@ -245,7 +247,7 @@ file ID %d",
|
|
else {
|
|
num_icm = ((int *)n_var_idx)[iproc + 1] - ((int *)n_var_idx)[iproc];
|
|
}
|
|
- for (icm = 0; icm < num_icm; icm++) {
|
|
+ for (int icm = 0; icm < num_icm; icm++) {
|
|
if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
ncnt_cmap += ((int64_t *)node_cmap_node_cnts)[((int64_t *)node_proc_ptrs)[iproc] + icm];
|
|
}
|
|
@@ -261,7 +263,7 @@ file ID %d",
|
|
ncnt_cmap, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -272,22 +274,22 @@ file ID %d",
|
|
VAR_N_COMM_NIDS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
if ((status = nc_def_var(exoid, VAR_N_COMM_PROC, NC_INT, 1, n_dimid, &varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to add variable \"%s\" in file ID %d",
|
|
VAR_N_COMM_PROC, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
} /* End "if (num_n_comm_maps > 0)" */
|
|
|
|
@@ -303,13 +305,13 @@ file ID %d",
|
|
VAR_E_COMM_DATA_IDX, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* now add up all of the nodal communications maps */
|
|
- ecnt_cmap = 0;
|
|
+ size_t ecnt_cmap = 0;
|
|
for (iproc = 0; iproc < num_procs_in_file; iproc++) {
|
|
if (index_type == NC_INT64) {
|
|
num_icm = ((int64_t *)e_var_idx)[iproc + 1] - ((int64_t *)e_var_idx)[iproc];
|
|
@@ -317,7 +319,7 @@ file ID %d",
|
|
else {
|
|
num_icm = ((int *)e_var_idx)[iproc + 1] - ((int *)e_var_idx)[iproc];
|
|
}
|
|
- for (icm = 0; icm < num_icm; icm++) {
|
|
+ for (int icm = 0; icm < num_icm; icm++) {
|
|
if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
ecnt_cmap += ((int64_t *)elem_cmap_elem_cnts)[((int64_t *)elem_proc_ptrs)[iproc] + icm];
|
|
}
|
|
@@ -333,7 +335,7 @@ file ID %d",
|
|
DIM_ECNT_CMAP, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -344,38 +346,38 @@ file ID %d",
|
|
VAR_E_COMM_EIDS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
if ((status = nc_def_var(exoid, VAR_E_COMM_PROC, NC_INT, 1, e_dimid, &varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to add variable \"%s\" in file ID %d",
|
|
VAR_E_COMM_PROC, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
if ((status = nc_def_var(exoid, VAR_E_COMM_SIDS, bulk_type, 1, e_dimid, &varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to add variable \"%s\" in file ID %d",
|
|
VAR_E_COMM_SIDS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
} /* End "if (num_e_comm_maps > 0)" */
|
|
|
|
/* Exit define mode */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
/* Set the status of the nodal communication maps */
|
|
if (num_n_comm_maps > 0) {
|
|
@@ -415,7 +417,7 @@ file ID %d",
|
|
else {
|
|
num_icm = ((int *)n_var_idx)[iproc + 1] - ((int *)n_var_idx)[iproc];
|
|
}
|
|
- for (icm = 0; icm < num_icm; icm++) {
|
|
+ for (int icm = 0; icm < num_icm; icm++) {
|
|
size_t cnt;
|
|
if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
cnt = ((int64_t *)node_cmap_node_cnts)[proc_ptr + icm];
|
|
@@ -526,7 +528,7 @@ file ID %d",
|
|
else {
|
|
num_icm = ((int *)e_var_idx)[iproc + 1] - ((int *)e_var_idx)[iproc];
|
|
}
|
|
- for (icm = 0; icm < num_icm; icm++) {
|
|
+ for (int icm = 0; icm < num_icm; icm++) {
|
|
|
|
size_t cnt;
|
|
if (ex_int64_status(exoid) & EX_BULK_INT64_API) {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_concat_all_blocks.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_concat_all_blocks.c
|
|
index a41470896f..f4b4a997bc 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_concat_all_blocks.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_concat_all_blocks.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2023 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -41,9 +41,6 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
int elem_work = 0; /* is DIM_NUM_EL_BLK defined? If so, there's work to do */
|
|
int edge_work = 0; /* is DIM_NUM_ED_BLK defined? If so, there's work to do */
|
|
int face_work = 0; /* is DIM_NUM_FA_BLK defined? If so, there's work to do */
|
|
-#if NC_HAS_HDF5
|
|
- int fill = NC_FILL_CHAR;
|
|
-#endif
|
|
|
|
int *edge_id_int = NULL;
|
|
int *face_id_int = NULL;
|
|
@@ -88,7 +85,7 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
elem_id_int = param->elem_blk_id;
|
|
}
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -208,13 +205,13 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
}
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
-#if NC_HAS_HDF5
|
|
+#if defined(EX_CAN_USE_NC_DEF_VAR_FILL)
|
|
#define EX_PREPARE_ATTRIB_ARRAY(TNAME, CURBLK, DNAME, DVAL, ID, VANAME, VADIM0, VADIM1, VANNAME) \
|
|
if (DVAL[iblk] > 0) { \
|
|
if ((status = nc_def_dim(exoid, DNAME(CURBLK + 1), DVAL[iblk], &VADIM1)) != NC_NOERR) { \
|
|
@@ -238,7 +235,7 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
ex_err_fn(exoid, __func__, errmsg, status); \
|
|
goto error_ret; /* exit define mode and return */ \
|
|
} \
|
|
- ex__compress_variable(exoid, temp, 2); \
|
|
+ exi_compress_variable(exoid, temp, 2); \
|
|
\
|
|
/* Attribute names... */ \
|
|
dims[0] = VADIM1; \
|
|
@@ -250,6 +247,7 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
ex_err_fn(exoid, __func__, errmsg, status); \
|
|
goto error_ret; /* exit define mode and return */ \
|
|
} \
|
|
+ int fill = NC_FILL_CHAR; \
|
|
nc_def_var_fill(exoid, temp, 0, &fill); \
|
|
}
|
|
#else
|
|
@@ -276,7 +274,7 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
ex_err_fn(exoid, __func__, errmsg, status); \
|
|
goto error_ret; /* exit define mode and return */ \
|
|
} \
|
|
- ex__compress_variable(exoid, temp, 2); \
|
|
+ exi_compress_variable(exoid, temp, 2); \
|
|
\
|
|
/* Attribute names... */ \
|
|
dims[0] = VADIM1; \
|
|
@@ -309,7 +307,7 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
ex_err_fn(exoid, __func__, errmsg, status); \
|
|
goto error_ret; /* exit define mode and return */ \
|
|
} \
|
|
- ex__compress_variable(exoid, connid, 1); \
|
|
+ exi_compress_variable(exoid, connid, 1); \
|
|
}
|
|
|
|
/* Iterate over edge blocks ... */
|
|
@@ -322,7 +320,7 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
eb_id = edge_id_int[iblk];
|
|
}
|
|
|
|
- cur_num_edge_blk = ex__get_file_item(exoid, ex__get_counter_list(EX_EDGE_BLOCK));
|
|
+ cur_num_edge_blk = exi_get_file_item(exoid, exi_get_counter_list(EX_EDGE_BLOCK));
|
|
if (cur_num_edge_blk >= (int)num_edge_blk) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: exceeded number of edge blocks (%ld) defined in file id %d",
|
|
@@ -331,9 +329,9 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
goto error_ret;
|
|
}
|
|
|
|
- /* NOTE: ex__inc_file_item is used to find the number of edge blocks
|
|
+ /* NOTE: exi_inc_file_item is used to find the number of edge blocks
|
|
for a specific file and returns that value incremented. */
|
|
- cur_num_edge_blk = ex__inc_file_item(exoid, ex__get_counter_list(EX_EDGE_BLOCK));
|
|
+ cur_num_edge_blk = exi_inc_file_item(exoid, exi_get_counter_list(EX_EDGE_BLOCK));
|
|
|
|
if (param->num_edge_this_blk[iblk] == 0) { /* Is this a NULL edge block? */
|
|
continue;
|
|
@@ -390,7 +388,7 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
fb_id = face_id_int[iblk];
|
|
}
|
|
|
|
- cur_num_face_blk = ex__get_file_item(exoid, ex__get_counter_list(EX_FACE_BLOCK));
|
|
+ cur_num_face_blk = exi_get_file_item(exoid, exi_get_counter_list(EX_FACE_BLOCK));
|
|
if (cur_num_face_blk >= (int)num_face_blk) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: exceeded number of face blocks (%ld) defined in file id %d",
|
|
@@ -399,9 +397,9 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
goto error_ret;
|
|
}
|
|
|
|
- /* NOTE: ex__inc_file_item is used to find the number of edge blocks
|
|
+ /* NOTE: exi_inc_file_item is used to find the number of edge blocks
|
|
for a specific file and returns that value incremented. */
|
|
- cur_num_face_blk = ex__inc_file_item(exoid, ex__get_counter_list(EX_FACE_BLOCK));
|
|
+ cur_num_face_blk = exi_inc_file_item(exoid, exi_get_counter_list(EX_FACE_BLOCK));
|
|
|
|
if (param->num_face_this_blk[iblk] == 0) { /* Is this a NULL face block? */
|
|
continue;
|
|
@@ -458,7 +456,7 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
eb_id = elem_id_int[iblk];
|
|
}
|
|
|
|
- cur_num_elem_blk = ex__get_file_item(exoid, ex__get_counter_list(EX_ELEM_BLOCK));
|
|
+ cur_num_elem_blk = exi_get_file_item(exoid, exi_get_counter_list(EX_ELEM_BLOCK));
|
|
if (cur_num_elem_blk >= (int)num_elem_blk) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: exceeded number of element blocks (%ld) defined "
|
|
@@ -468,9 +466,9 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
goto error_ret;
|
|
}
|
|
|
|
- /* NOTE: ex__inc_file_item is used to find the number of element blocks
|
|
+ /* NOTE: exi_inc_file_item is used to find the number of element blocks
|
|
for a specific file and returns that value incremented. */
|
|
- cur_num_elem_blk = ex__inc_file_item(exoid, ex__get_counter_list(EX_ELEM_BLOCK));
|
|
+ cur_num_elem_blk = exi_inc_file_item(exoid, exi_get_counter_list(EX_ELEM_BLOCK));
|
|
|
|
if (param->num_elem_this_blk[iblk] == 0) { /* Is this a NULL element block? */
|
|
continue;
|
|
@@ -559,7 +557,7 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
for (i = 1; i <= num_maps[map_type]; ++i) {
|
|
- const char *mapname = ex__name_of_map(map_enums[map_type], i);
|
|
+ const char *mapname = exi_name_of_map(map_enums[map_type], i);
|
|
if (nc_inq_varid(exoid, mapname, &temp) != NC_NOERR) {
|
|
int map_int_type = NC_INT;
|
|
if (ex_int64_status(exoid) & EX_MAPS_INT64_DB) {
|
|
@@ -578,14 +576,16 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, temp, 1);
|
|
+ exi_compress_variable(exoid, temp, 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -593,6 +593,6 @@ int ex_put_concat_all_blocks(int exoid, const ex_block_params *param)
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_concat_elem_block.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_concat_elem_block.c
|
|
index fb9d05164b..1e59fd4890 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_concat_elem_block.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_concat_elem_block.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2023, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -33,11 +33,12 @@
|
|
* \param num_attr_this_blk number of attributes
|
|
* \param define_maps if != 0, write maps, else don't
|
|
*/
|
|
-int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *elem_type[],
|
|
+int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *const elem_type[],
|
|
const void_int *num_elem_this_blk, const void_int *num_nodes_per_elem,
|
|
const void_int *num_attr_this_blk, int define_maps)
|
|
{
|
|
- int i, varid, dimid, dims[2], strdim, *eb_array;
|
|
+ size_t i;
|
|
+ int varid, dimid, dims[2], strdim, *eb_array;
|
|
int temp;
|
|
int iblk;
|
|
int status;
|
|
@@ -46,12 +47,9 @@ int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *elem_
|
|
size_t length;
|
|
int cur_num_elem_blk, nelnoddim, numelbdim, numattrdim, connid, numelemdim, numnodedim;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
-#if NC_HAS_HDF5
|
|
- int fill = NC_FILL_CHAR;
|
|
-#endif
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -82,13 +80,13 @@ int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *elem_
|
|
}
|
|
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
|
|
- for (i = 0; i < num_elem_blk; i++) {
|
|
- eb_array[i] = (((int64_t *)num_elem_this_blk)[i] == 0) ? 0 : 1;
|
|
+ for (int ib = 0; ib < num_elem_blk; ib++) {
|
|
+ eb_array[ib] = (((int64_t *)num_elem_this_blk)[ib] == 0) ? 0 : 1;
|
|
}
|
|
}
|
|
else {
|
|
- for (i = 0; i < num_elem_blk; i++) {
|
|
- eb_array[i] = (((int *)num_elem_this_blk)[i] == 0) ? 0 : 1;
|
|
+ for (int ib = 0; ib < num_elem_blk; ib++) {
|
|
+ eb_array[ib] = (((int *)num_elem_this_blk)[ib] == 0) ? 0 : 1;
|
|
}
|
|
}
|
|
|
|
@@ -146,7 +144,7 @@ int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *elem_
|
|
}
|
|
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(eb_array);
|
|
@@ -182,7 +180,7 @@ int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *elem_
|
|
num_attr = ((int *)num_attr_this_blk)[iblk];
|
|
}
|
|
|
|
- cur_num_elem_blk = ex__get_file_item(exoid, ex__get_counter_list(EX_ELEM_BLOCK));
|
|
+ cur_num_elem_blk = exi_get_file_item(exoid, exi_get_counter_list(EX_ELEM_BLOCK));
|
|
if (cur_num_elem_blk >= num_elem_blk) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: exceeded number of element blocks (%d) defined in file id %d", num_elem_blk,
|
|
@@ -191,9 +189,9 @@ int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *elem_
|
|
goto error_ret;
|
|
}
|
|
|
|
- /* NOTE: ex__inc_file_item is used to find the number of element blocks
|
|
+ /* NOTE: exi_inc_file_item is used to find the number of element blocks
|
|
for a specific file and returns that value incremented. */
|
|
- cur_num_elem_blk = ex__inc_file_item(exoid, ex__get_counter_list(EX_ELEM_BLOCK));
|
|
+ cur_num_elem_blk = exi_inc_file_item(exoid, exi_get_counter_list(EX_ELEM_BLOCK));
|
|
|
|
if (eb_array[iblk] == 0) { /* Is this a NULL element block? */
|
|
continue;
|
|
@@ -238,7 +236,7 @@ int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *elem_
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, connid, 1);
|
|
+ exi_compress_variable(exoid, connid, 1);
|
|
|
|
/* store element type as attribute of connectivity variable */
|
|
if ((status = nc_put_att_text(exoid, connid, ATT_NAME_ELB, strlen(elem_type[iblk]) + 1,
|
|
@@ -273,7 +271,8 @@ int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *elem_
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
-#if NC_HAS_HDF5
|
|
+#if defined(EX_CAN_USE_NC_DEF_VAR_FILL)
|
|
+ int fill = NC_FILL_CHAR;
|
|
nc_def_var_fill(exoid, temp, 0, &fill);
|
|
#endif
|
|
eb_array[iblk] = temp;
|
|
@@ -315,7 +314,7 @@ int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *elem_
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, temp, 1);
|
|
+ exi_compress_variable(exoid, temp, 1);
|
|
}
|
|
}
|
|
|
|
@@ -339,13 +338,15 @@ int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *elem_
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, temp, 1);
|
|
+ exi_compress_variable(exoid, temp, 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(eb_array);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -355,7 +356,7 @@ int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *elem_
|
|
* attribute name.
|
|
*/
|
|
size_t start[2], count[2];
|
|
- char * text = "";
|
|
+ char *text = "";
|
|
count[0] = 1;
|
|
start[1] = 0;
|
|
count[1] = strlen(text) + 1;
|
|
@@ -384,6 +385,6 @@ int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *elem_
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
free(eb_array);
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_concat_sets.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_concat_sets.c
|
|
index d23c61af97..31c59c187c 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_concat_sets.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_concat_sets.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -23,7 +23,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__comp_ws, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_comp_ws, etc
|
|
|
|
/*!
|
|
* writes the set ID's, set entry count array, set entry pointers array,
|
|
@@ -42,26 +42,26 @@ int ex_put_concat_sets(int exoid, ex_entity_type set_type, const struct ex_set_s
|
|
const void_int *num_dist_per_set = set_specs->num_dist_per_set;
|
|
const void_int *sets_entry_index = set_specs->sets_entry_index;
|
|
const void_int *sets_dist_index = set_specs->sets_dist_index;
|
|
- const void * sets_dist_fact = set_specs->sets_dist_fact;
|
|
+ const void *sets_dist_fact = set_specs->sets_dist_fact;
|
|
size_t num_df, num_entry;
|
|
int i, cur_num_sets, num_sets;
|
|
int dimid, varid, set_id_ndx, dims[1];
|
|
- int * set_stat = NULL;
|
|
+ int *set_stat = NULL;
|
|
int set_int_type, int_size;
|
|
|
|
- const float * flt_dist_fact = NULL;
|
|
+ const float *flt_dist_fact = NULL;
|
|
const double *dbl_dist_fact = NULL;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- char * idsptr = NULL;
|
|
- char * statptr = NULL;
|
|
- char * numdfptr = NULL;
|
|
- char * factptr = NULL;
|
|
- char * elemptr = NULL;
|
|
- char * extraptr = NULL;
|
|
+ char *idsptr = NULL;
|
|
+ char *statptr = NULL;
|
|
+ char *numdfptr = NULL;
|
|
+ char *factptr = NULL;
|
|
+ char *elemptr = NULL;
|
|
+ char *extraptr = NULL;
|
|
ex_inquiry ex_inq_val;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -105,7 +105,7 @@ int ex_put_concat_sets(int exoid, ex_entity_type set_type, const struct ex_set_s
|
|
}
|
|
|
|
/* first check if any sets are specified */
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(set_type), &temp)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(set_type), &temp)) != NC_NOERR) {
|
|
if (status == NC_EBADDIM) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: no %ss defined for file id %d",
|
|
ex_name_of_object(set_type), exoid);
|
|
@@ -171,7 +171,7 @@ int ex_put_concat_sets(int exoid, ex_entity_type set_type, const struct ex_set_s
|
|
}
|
|
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(set_stat);
|
|
@@ -190,10 +190,10 @@ int ex_put_concat_sets(int exoid, ex_entity_type set_type, const struct ex_set_s
|
|
|
|
/* Keep track of the total number of sets defined using a counter stored
|
|
in a linked list keyed by exoid.
|
|
- NOTE: ex__get_file_item is used to find the number of sets of type
|
|
+ NOTE: exi_get_file_item is used to find the number of sets of type
|
|
for a specific file and returns that value.
|
|
*/
|
|
- cur_num_sets = ex__get_file_item(exoid, ex__get_counter_list(set_type));
|
|
+ cur_num_sets = exi_get_file_item(exoid, exi_get_counter_list(set_type));
|
|
if (cur_num_sets >= num_sets) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: exceeded number of %ss (%d) defined in file id %d",
|
|
ex_name_of_object(set_type), num_sets, exoid);
|
|
@@ -201,10 +201,10 @@ int ex_put_concat_sets(int exoid, ex_entity_type set_type, const struct ex_set_s
|
|
goto error_ret;
|
|
}
|
|
|
|
- /* NOTE: ex__inc_file_item is used to find the number of sets
|
|
+ /* NOTE: exi_inc_file_item is used to find the number of sets
|
|
for a specific file and returns that value incremented. */
|
|
|
|
- cur_num_sets = ex__inc_file_item(exoid, ex__get_counter_list(set_type));
|
|
+ cur_num_sets = exi_inc_file_item(exoid, exi_get_counter_list(set_type));
|
|
set_id_ndx = cur_num_sets + 1;
|
|
|
|
/* setup more pointers based on set_type */
|
|
@@ -246,11 +246,11 @@ int ex_put_concat_sets(int exoid, ex_entity_type set_type, const struct ex_set_s
|
|
}
|
|
|
|
if (int_size == sizeof(int)) {
|
|
- status = nc_def_dim(exoid, ex__dim_num_entries_in_object(set_type, set_id_ndx),
|
|
+ status = nc_def_dim(exoid, exi_dim_num_entries_in_object(set_type, set_id_ndx),
|
|
((int *)num_entries_per_set)[i], &dimid);
|
|
}
|
|
else {
|
|
- status = nc_def_dim(exoid, ex__dim_num_entries_in_object(set_type, set_id_ndx),
|
|
+ status = nc_def_dim(exoid, exi_dim_num_entries_in_object(set_type, set_id_ndx),
|
|
((int64_t *)num_entries_per_set)[i], &dimid);
|
|
}
|
|
|
|
@@ -292,7 +292,7 @@ int ex_put_concat_sets(int exoid, ex_entity_type set_type, const struct ex_set_s
|
|
}
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, temp, 1);
|
|
+ exi_compress_variable(exoid, temp, 1);
|
|
|
|
/* create extra list variable for set (only for edge, face and side sets)
|
|
*/
|
|
@@ -312,7 +312,7 @@ int ex_put_concat_sets(int exoid, ex_entity_type set_type, const struct ex_set_s
|
|
}
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, temp, 1);
|
|
+ exi_compress_variable(exoid, temp, 1);
|
|
}
|
|
|
|
/* define dimension for number of dist factors per set */
|
|
@@ -375,12 +375,14 @@ int ex_put_concat_sets(int exoid, ex_entity_type set_type, const struct ex_set_s
|
|
}
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, temp, 2);
|
|
+ exi_compress_variable(exoid, temp, 2);
|
|
} /* end define dist factors */
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(set_stat);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -473,7 +475,7 @@ int ex_put_concat_sets(int exoid, ex_entity_type set_type, const struct ex_set_s
|
|
df_ndx = ((int64_t *)sets_dist_index)[i];
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == sizeof(float)) {
|
|
+ if (exi_comp_ws(exoid) == sizeof(float)) {
|
|
flt_dist_fact = sets_dist_fact;
|
|
if (num_df > 0) { /* store dist factors if required */
|
|
if (ex_put_set_dist_fact(exoid, set_type, set_id, &(flt_dist_fact[df_ndx])) == -1) {
|
|
@@ -487,7 +489,7 @@ int ex_put_concat_sets(int exoid, ex_entity_type set_type, const struct ex_set_s
|
|
}
|
|
}
|
|
}
|
|
- else if (ex__comp_ws(exoid) == sizeof(double)) {
|
|
+ else if (exi_comp_ws(exoid) == sizeof(double)) {
|
|
dbl_dist_fact = sets_dist_fact;
|
|
if (num_df) { /* only store if they exist */
|
|
if (ex_put_set_dist_fact(exoid, set_type, set_id, &(dbl_dist_fact[df_ndx])) == -1) {
|
|
@@ -504,7 +506,7 @@ int ex_put_concat_sets(int exoid, ex_entity_type set_type, const struct ex_set_s
|
|
else {
|
|
/* unknown floating point word size */
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: unsupported floating point word size %d for file id %d", ex__comp_ws(exoid),
|
|
+ "ERROR: unsupported floating point word size %d for file id %d", exi_comp_ws(exoid),
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
free(set_stat);
|
|
@@ -518,6 +520,6 @@ int ex_put_concat_sets(int exoid, ex_entity_type set_type, const struct ex_set_s
|
|
error_ret:
|
|
free(set_stat);
|
|
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_conn.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_conn.c
|
|
index 523a555b6c..c0393593b8 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_conn.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_conn.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__id_lkup, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_id_lkup, etc
|
|
|
|
/*! write out the connectivity array */
|
|
int ex_int_write_conn(int exoid, ex_entity_id blk_id, const char *type, int var_id,
|
|
@@ -26,7 +26,7 @@ int ex_int_write_conn(int exoid, ex_entity_id blk_id, const char *type, int var_
|
|
"ERROR: failed to write connectivity array for %s block %" PRId64 " in file id %d",
|
|
type, blk_id, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (status);
|
|
+ return status;
|
|
}
|
|
return status;
|
|
}
|
|
@@ -44,15 +44,16 @@ int ex_int_write_conn(int exoid, ex_entity_id blk_id, const char *type, int var_
|
|
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)
|
|
{
|
|
- int connid = -1, blk_id_ndx, status;
|
|
+ int connid = -1;
|
|
+ int status;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- blk_id_ndx = ex__id_lkup(exoid, blk_type, blk_id);
|
|
+ int blk_id_ndx = exi_id_lkup(exoid, blk_type, blk_id);
|
|
if (blk_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -107,7 +108,7 @@ int ex_put_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, const v
|
|
int nedpereldim, nfapereldim;
|
|
size_t num_ed_per_elem, num_fa_per_elem;
|
|
|
|
- if (elem_edge_conn != 0) {
|
|
+ if (elem_edge_conn != NULL) {
|
|
status = nc_inq_dimid(exoid, DIM_NUM_EDG_PER_EL(blk_id_ndx), &nedpereldim);
|
|
if (status != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
@@ -119,7 +120,7 @@ int ex_put_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, const v
|
|
}
|
|
}
|
|
|
|
- if (elem_face_conn != 0) {
|
|
+ if (elem_face_conn != NULL) {
|
|
status = nc_inq_dimid(exoid, DIM_NUM_FAC_PER_EL(blk_id_ndx), &nfapereldim);
|
|
if (status != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
@@ -132,7 +133,7 @@ int ex_put_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, const v
|
|
}
|
|
|
|
num_ed_per_elem = 0;
|
|
- if ((elem_edge_conn != 0) &&
|
|
+ if ((elem_edge_conn != NULL) &&
|
|
((status = nc_inq_dimlen(exoid, nedpereldim, &num_ed_per_elem)) != NC_NOERR)) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to get number of edges/elem in block %" PRId64 " in file id %d",
|
|
@@ -142,7 +143,7 @@ int ex_put_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, const v
|
|
}
|
|
|
|
num_fa_per_elem = 0;
|
|
- if ((elem_face_conn != 0) &&
|
|
+ if ((elem_face_conn != NULL) &&
|
|
((status = nc_inq_dimlen(exoid, nfapereldim, &num_fa_per_elem)) != NC_NOERR)) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to get number of faces/elem in block %" PRId64 " in file id %d",
|
|
@@ -151,8 +152,8 @@ int ex_put_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, const v
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if ((num_ed_per_elem == 0 && elem_edge_conn != 0) ||
|
|
- (num_ed_per_elem != 0 && elem_edge_conn == 0)) {
|
|
+ if ((num_ed_per_elem == 0 && elem_edge_conn != NULL) ||
|
|
+ (num_ed_per_elem != 0 && elem_edge_conn == NULL)) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: number of edges per element (%ld) doesn't "
|
|
"agree with elem_edge_conn (0x%p)",
|
|
@@ -161,8 +162,8 @@ int ex_put_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, const v
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if ((num_fa_per_elem == 0 && elem_face_conn != 0) ||
|
|
- (num_fa_per_elem != 0 && elem_face_conn == 0)) {
|
|
+ if ((num_fa_per_elem == 0 && elem_face_conn != NULL) ||
|
|
+ (num_fa_per_elem != 0 && elem_face_conn == NULL)) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: number of faces per element (%ld) doesn't "
|
|
"agree with elem_face_conn (0x%p)",
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_coord.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_coord.c
|
|
index 1571586654..eb88a828f8 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_coord.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_coord.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -95,13 +95,13 @@ int ex_put_coord(int exoid, const void *x_coor, const void *y_coor, const void *
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* inquire id's of previously defined dimensions */
|
|
|
|
- if ((status = nc_inq_dimid(exoid, DIM_NUM_NODES, &numnoddim)) != NC_NOERR) {
|
|
+ if (nc_inq_dimid(exoid, DIM_NUM_NODES, &numnoddim) != NC_NOERR) {
|
|
/* If not found, then this file is storing 0 nodes.
|
|
Return immediately */
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
@@ -162,7 +162,7 @@ int ex_put_coord(int exoid, const void *x_coor, const void *y_coor, const void *
|
|
/* write out the coordinates */
|
|
for (i = 0; i < num_dim; i++) {
|
|
const void *coor = NULL;
|
|
- char * which = NULL;
|
|
+ char *which = NULL;
|
|
|
|
if (i == 0) {
|
|
coor = x_coor;
|
|
@@ -181,7 +181,7 @@ int ex_put_coord(int exoid, const void *x_coor, const void *y_coor, const void *
|
|
}
|
|
|
|
if (coor != NULL && coordid != -1) {
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_var_float(exoid, coordid, coor);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_coord_names.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_coord_names.c
|
|
index 2396b74304..17fa2d2556 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_coord_names.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_coord_names.c
|
|
@@ -43,7 +43,7 @@ error = ex_put_coord_names (exoid, coord_names);
|
|
|
|
*/
|
|
|
|
-int ex_put_coord_names(int exoid, char *coord_names[])
|
|
+int ex_put_coord_names(int exoid, char *const coord_names[])
|
|
{
|
|
int status;
|
|
int ndimdim, varid;
|
|
@@ -51,7 +51,7 @@ int ex_put_coord_names(int exoid, char *coord_names[])
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -77,7 +77,7 @@ int ex_put_coord_names(int exoid, char *coord_names[])
|
|
}
|
|
|
|
/* write out coordinate names */
|
|
- status = ex__put_names(exoid, varid, num_dim, coord_names, EX_COORDINATE, "", __func__);
|
|
+ status = exi_put_names(exoid, varid, num_dim, coord_names, EX_COORDINATE, "", __func__);
|
|
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_coordinate_frames.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_coordinate_frames.c
|
|
index 820dc25c3a..9e2edda442 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_coordinate_frames.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_coordinate_frames.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -27,17 +27,10 @@
|
|
#include "exodusII.h" // for ex_err, EXERRVAL, etc
|
|
#include "exodusII_int.h" // for EX_FATAL, EX_NOERR, etc
|
|
|
|
-int ex_put_coordinate_frames(int exoid, int nframes, const void_int *cf_ids, void *pt_coordinates,
|
|
- const char *tags)
|
|
+int ex_put_coordinate_frames(int exoid, int nframes, const void_int *cf_ids,
|
|
+ const void *pt_coordinates, const char *tags)
|
|
{
|
|
- int status;
|
|
- int dim, dim9; /* dimension id for nframes, nframes*9 */
|
|
char errmsg[MAX_ERR_LENGTH]; /* buffer for error messages */
|
|
- int varcoords; /* variable id for the coordinates */
|
|
- int varids; /* variable id for the frame ids */
|
|
- int vartags; /* variable id for the frame tags */
|
|
- int i; /* general indices */
|
|
- int int_type;
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
@@ -53,22 +46,24 @@ int ex_put_coordinate_frames(int exoid, int nframes, const void_int *cf_ids, voi
|
|
EX_FUNC_LEAVE(1);
|
|
}
|
|
|
|
- assert(cf_ids != 0);
|
|
- assert(pt_coordinates != 0);
|
|
- assert(tags != 0);
|
|
+ assert(cf_ids != NULL);
|
|
+ assert(pt_coordinates != NULL);
|
|
+ assert(tags != NULL);
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* make the definitions */
|
|
/* go into define mode. define num_frames, num_frames9 */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ int status;
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ int dim, dim9; /* dimension id for nframes, nframes*9 */
|
|
if ((status = nc_def_dim(exoid, DIM_NUM_CFRAMES, nframes, &dim)) != NC_NOERR ||
|
|
(nc_def_dim(exoid, DIM_NUM_CFRAME9, nframes * 9, &dim9) != NC_NOERR)) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
@@ -77,12 +72,15 @@ int ex_put_coordinate_frames(int exoid, int nframes, const void_int *cf_ids, voi
|
|
goto error_ret;
|
|
}
|
|
|
|
- int_type = NC_INT;
|
|
+ int int_type = NC_INT;
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_DB) {
|
|
int_type = NC_INT64;
|
|
}
|
|
|
|
/* define the variables. coordinates, tags and ids */
|
|
+ int varcoords; /* variable id for the coordinates */
|
|
+ int varids; /* variable id for the frame ids */
|
|
+ int vartags; /* variable id for the frame tags */
|
|
if (nc_def_var(exoid, VAR_FRAME_COORDS, nc_flt_code(exoid), 1, &dim9, &varcoords) != NC_NOERR ||
|
|
(nc_def_var(exoid, VAR_FRAME_IDS, int_type, 1, &dim, &varids) != NC_NOERR) ||
|
|
(nc_def_var(exoid, VAR_FRAME_TAGS, NC_CHAR, 1, &dim, &vartags) != NC_NOERR)) {
|
|
@@ -93,13 +91,13 @@ int ex_put_coordinate_frames(int exoid, int nframes, const void_int *cf_ids, voi
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* check variables consistency */
|
|
- for (i = 0; i < nframes; i++) {
|
|
- if (strchr("RrCcSs", tags[i]) == 0) {
|
|
+ for (int i = 0; i < nframes; i++) {
|
|
+ if (strchr("RrCcSs", tags[i]) == NULL) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: Unrecognized coordinate frame tag: '%c'.",
|
|
tags[i]);
|
|
ex_err_fn(exoid, __func__, errmsg, 2);
|
|
@@ -127,7 +125,7 @@ int ex_put_coordinate_frames(int exoid, int nframes, const void_int *cf_ids, voi
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_var_float(exoid, varcoords, pt_coordinates);
|
|
}
|
|
else {
|
|
@@ -142,6 +140,6 @@ int ex_put_coordinate_frames(int exoid, int nframes, const void_int *cf_ids, voi
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_eb_info_global.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_eb_info_global.c
|
|
index 26b2a2c839..0393409327 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_eb_info_global.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_eb_info_global.c
|
|
@@ -26,13 +26,13 @@
|
|
#include <exodusII.h>
|
|
#include <exodusII_int.h>
|
|
|
|
-int ex_put_eb_info_global(int exoid, void_int *el_blk_ids, void_int *el_blk_cnts)
|
|
+int ex_put_eb_info_global(int exoid, const void_int *el_blk_ids, const void_int *el_blk_cnts)
|
|
{
|
|
int varid, status;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_elem_cmap.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_elem_cmap.c
|
|
index 2b43db5c46..4d0a022cd0 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_elem_cmap.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_elem_cmap.c
|
|
@@ -30,8 +30,8 @@
|
|
#include <exodusII.h> // for ex_err, etc
|
|
#include <exodusII_int.h> // for EX_FATAL, DIM_ECNT_CMAP, etc
|
|
|
|
-int ex_put_elem_cmap(int exoid, ex_entity_id map_id, void_int *elem_ids, void_int *side_ids,
|
|
- void_int *proc_ids, int processor)
|
|
+int ex_put_elem_cmap(int exoid, ex_entity_id map_id, const void_int *elem_ids,
|
|
+ const void_int *side_ids, const void_int *proc_ids, int processor)
|
|
{
|
|
int map_idx, varid, dimid, status;
|
|
size_t start[1], count[1], ret_val;
|
|
@@ -42,7 +42,7 @@ int ex_put_elem_cmap(int exoid, ex_entity_id map_id, void_int *elem_ids, void_in
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -56,7 +56,7 @@ int ex_put_elem_cmap(int exoid, ex_entity_id map_id, void_int *elem_ids, void_in
|
|
}
|
|
|
|
/* Get the index for this map_id */
|
|
- if ((map_idx = ne__id_lkup(exoid, VAR_E_COMM_IDS, varidx, map_id)) == -1) {
|
|
+ if ((map_idx = nei_id_lkup(exoid, VAR_E_COMM_IDS, varidx, map_id)) == -1) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to find index for variable \"%s\" in file ID %d", VAR_E_COMM_IDS,
|
|
exoid);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_entity_count_per_polyhedra.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_entity_count_per_polyhedra.c
|
|
index 6131f74d2f..d7531efae8 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_entity_count_per_polyhedra.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_entity_count_per_polyhedra.c
|
|
@@ -12,7 +12,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__id_lkup, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_id_lkup, etc
|
|
|
|
/*!
|
|
* writes out the number of entities (nodes/faces) per polyhedra
|
|
@@ -30,11 +30,11 @@ int ex_put_entity_count_per_polyhedra(int exoid, ex_entity_type blk_type, ex_ent
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- blk_id_ndx = ex__id_lkup(exoid, blk_type, blk_id);
|
|
+ blk_id_ndx = exi_id_lkup(exoid, blk_type, blk_id);
|
|
if (blk_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_field_metadata.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_field_metadata.c
|
|
new file mode 100644
|
|
index 0000000000..6f90d2d328
|
|
--- /dev/null
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_field_metadata.c
|
|
@@ -0,0 +1,343 @@
|
|
+/*
|
|
+ * Copyright(C) 2022, 2023, 2024 National Technology & Engineering Solutions
|
|
+ * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
+ * NTESS, the U.S. Government retains certain rights in this software.
|
|
+ *
|
|
+ * See packages/seacas/LICENSE for details
|
|
+ */
|
|
+
|
|
+#include "exodusII.h" // for ex_err, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, etc
|
|
+
|
|
+static int exi_print_type_error(int status, const char *name, const char *type,
|
|
+ const char *attribute, int exoid, const char *func)
|
|
+{
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to store '%s' for %s '%s' in file id %d",
|
|
+ attribute, type, name, exoid);
|
|
+ ex_err_fn(exoid, func, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+}
|
|
+
|
|
+static int exi_print_attribute_error(int status, const char *name, const char *attribute,
|
|
+ ex_entity_type entity_type, ex_entity_id entity_id, int exoid,
|
|
+ const char *func)
|
|
+{
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to store field metadata '%s' for field '%s' on %s with id %" PRId64
|
|
+ " in file id %d",
|
|
+ attribute, name, ex_name_of_object(entity_type), entity_id, exoid);
|
|
+ ex_err_fn(exoid, func, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+}
|
|
+
|
|
+int ex_put_multi_field_metadata(int exoid, const ex_field field[], const int count)
|
|
+{
|
|
+ exi_persist_redef(exoid, __func__);
|
|
+ for (int i = 0; i < count; i++) {
|
|
+ if (field[i].type[0] != EX_SCALAR) {
|
|
+ int status = ex_put_field_metadata(exoid, field[i]);
|
|
+ if (status != EX_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to store field metadata for field '%s' on %s with id %" PRId64
|
|
+ " in file id %d",
|
|
+ field[i].name, ex_name_of_object(field[i].entity_type), field[i].entity_id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return EX_NOERR;
|
|
+}
|
|
+
|
|
+int ex_put_field_metadata(int exoid, const ex_field field)
|
|
+{
|
|
+ /*
|
|
+ * The attribute name is `Field@{name}@type`
|
|
+ *
|
|
+ * Field `nesting` is calculated as size of `type` field
|
|
+ * The `type` field is a sequence of integers which are the values of the `ex_field_type` enum.
|
|
+ * NOTE: For backward compatibility, we can only add new entries to this enum at the end.
|
|
+ *
|
|
+ * If size of `component_separator` == 0 then the default '_' separator used by all component
|
|
+ * levels If size of `component_separator` == 1 then that separator used by all component levels
|
|
+ * Else the size must equal nesting and it specifies a potentially different separator for each
|
|
+ * level.
|
|
+ */
|
|
+#if 0
|
|
+ fprintf(stderr,
|
|
+ "ex_put_field_metadata: Field '%s' of type '%s' with separator '%s' on block %lld\n",
|
|
+ field.name, ex_field_type_enum_to_string(field.type[0]), field.component_separator,
|
|
+ field.entity_id);
|
|
+#endif
|
|
+
|
|
+ exi_persist_redef(exoid, __func__);
|
|
+ int status = 0;
|
|
+ static const char *field_template = "Field@%s@%s";
|
|
+ char attribute_name[EX_MAX_NAME + 1];
|
|
+ snprintf(attribute_name, EX_MAX_NAME + 1, field_template, field.name, "type");
|
|
+ if ((status = ex_put_integer_attribute(exoid, field.entity_type, field.entity_id, attribute_name,
|
|
+ field.nesting, field.type)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_attribute_error(status, field.name, "type", field.entity_type, field.entity_id,
|
|
+ exoid, __func__);
|
|
+ }
|
|
+
|
|
+ /* Do not write if empty... */
|
|
+ if (field.type_name[0] != '\0') {
|
|
+ snprintf(attribute_name, EX_MAX_NAME + 1, field_template, field.name, "type_name");
|
|
+ if ((status = ex_put_text_attribute(exoid, field.entity_type, field.entity_id, attribute_name,
|
|
+ field.type_name)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_attribute_error(status, field.name, "type_name", field.entity_type,
|
|
+ field.entity_id, exoid, __func__);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ /* Default component_separator is '_'. Avoid writing if that is what it is... */
|
|
+ if (field.component_separator[0] != '_' || field.nesting > 1) {
|
|
+ snprintf(attribute_name, EX_MAX_NAME + 1, field_template, field.name, "separator");
|
|
+ if ((status = ex_put_text_attribute(exoid, field.entity_type, field.entity_id, attribute_name,
|
|
+ field.component_separator)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_attribute_error(status, field.name, "separator", field.entity_type,
|
|
+ field.entity_id, exoid, __func__);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ bool needs_cardinality = false;
|
|
+ for (int i = 0; i < field.nesting; i++) {
|
|
+ if (field.type[i] == EX_FIELD_TYPE_USER_DEFINED || field.type[i] == EX_FIELD_TYPE_SEQUENCE) {
|
|
+ needs_cardinality = true;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ if (needs_cardinality) {
|
|
+ snprintf(attribute_name, EX_MAX_NAME + 1, field_template, field.name, "cardinality");
|
|
+ if ((status = ex_put_integer_attribute(exoid, field.entity_type, field.entity_id,
|
|
+ attribute_name, field.nesting, field.cardinality)) !=
|
|
+ EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_attribute_error(status, field.name, "cardinality", field.entity_type,
|
|
+ field.entity_id, exoid, __func__);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return EX_NOERR;
|
|
+}
|
|
+
|
|
+int exi_put_type_attribute(int exoid, const char *att_root, const char *name, const char *type,
|
|
+ ex_type value_type, int cardinality, const void *entry)
|
|
+{
|
|
+ int status = EX_NOERR;
|
|
+ if (entry != NULL) {
|
|
+ static const char *template = "%s@%s@%s";
|
|
+ char attribute_name[EX_MAX_NAME + 1];
|
|
+ snprintf(attribute_name, EX_MAX_NAME + 1, template, att_root, name, type);
|
|
+ if (value_type == EX_INTEGER) {
|
|
+ status = ex_put_integer_attribute(exoid, EX_GLOBAL, 0, attribute_name, cardinality, entry);
|
|
+ }
|
|
+ else if (value_type == EX_DOUBLE) {
|
|
+ status = ex_put_double_attribute(exoid, EX_GLOBAL, 0, attribute_name, cardinality, entry);
|
|
+ }
|
|
+ }
|
|
+ return status;
|
|
+}
|
|
+
|
|
+int exi_put_basis_attribute(int exoid, const char *basis_name, const char *type, ex_type value_type,
|
|
+ int cardinality, const void *basis_entry)
|
|
+{
|
|
+ return exi_put_type_attribute(exoid, "Basis", basis_name, type, value_type, cardinality,
|
|
+ basis_entry);
|
|
+}
|
|
+
|
|
+int exi_put_quad_attribute(int exoid, const char *quad_name, const char *type, ex_type value_type,
|
|
+ int cardinality, const void *quad_entry)
|
|
+{
|
|
+ return exi_put_type_attribute(exoid, "Quad", quad_name, type, value_type, cardinality,
|
|
+ quad_entry);
|
|
+}
|
|
+
|
|
+int ex_put_basis(int exoid, const ex_basis basis)
|
|
+{
|
|
+ /*
|
|
+ * typedef struct ex_basis {
|
|
+ * char name[EX_MAX_NAME + 1];
|
|
+ * int cardinality; -- number of `basis` points == dimension of non-null subc_*, xi, eta, zeta
|
|
+ * int *subc_dim;
|
|
+ * int *subc_ordinal;
|
|
+ * int *subc_dof_ordinal;
|
|
+ * int *subc_num_dof;
|
|
+ * double *xi;
|
|
+ * double *eta;
|
|
+ * double *zeta;
|
|
+ * } ex_basis;
|
|
+ */
|
|
+
|
|
+ exi_persist_redef(exoid, __func__);
|
|
+ int status;
|
|
+ if ((status = exi_put_basis_attribute(exoid, basis.name, "cardinality", EX_INTEGER, 1,
|
|
+ &basis.cardinality)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_type_error(status, basis.name, "basis", "cardinality", exoid, __func__);
|
|
+ }
|
|
+
|
|
+ if ((status = exi_put_basis_attribute(exoid, basis.name, "subc_dim", EX_INTEGER,
|
|
+ basis.cardinality, basis.subc_dim)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_type_error(status, basis.name, "basis", "subc_dim", exoid, __func__);
|
|
+ }
|
|
+
|
|
+ if ((status = exi_put_basis_attribute(exoid, basis.name, "subc_ordinal", EX_INTEGER,
|
|
+ basis.cardinality, basis.subc_ordinal)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_type_error(status, basis.name, "basis", "subc_ordinal", exoid, __func__);
|
|
+ }
|
|
+
|
|
+ if ((status = exi_put_basis_attribute(exoid, basis.name, "subc_dof_ordinal", EX_INTEGER,
|
|
+ basis.cardinality, basis.subc_dof_ordinal)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_type_error(status, basis.name, "basis", "subc_dof_ordinal", exoid, __func__);
|
|
+ }
|
|
+
|
|
+ if ((status = exi_put_basis_attribute(exoid, basis.name, "subc_num_dof", EX_INTEGER,
|
|
+ basis.cardinality, basis.subc_num_dof)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_type_error(status, basis.name, "basis", "subc_num_dof", exoid, __func__);
|
|
+ }
|
|
+
|
|
+ if ((status = exi_put_basis_attribute(exoid, basis.name, "xi", EX_DOUBLE, basis.cardinality,
|
|
+ basis.xi)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_type_error(status, basis.name, "basis", "xi", exoid, __func__);
|
|
+ }
|
|
+
|
|
+ if ((status = exi_put_basis_attribute(exoid, basis.name, "eta", EX_DOUBLE, basis.cardinality,
|
|
+ basis.eta)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_type_error(status, basis.name, "basis", "eta", exoid, __func__);
|
|
+ }
|
|
+
|
|
+ if ((status = exi_put_basis_attribute(exoid, basis.name, "zeta", EX_DOUBLE, basis.cardinality,
|
|
+ basis.zeta)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_type_error(status, basis.name, "basis", "zeta", exoid, __func__);
|
|
+ }
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return EX_NOERR;
|
|
+}
|
|
+
|
|
+int ex_put_quadrature(int exoid, const ex_quadrature quad)
|
|
+{
|
|
+ /*
|
|
+ * typedef struct ex_quad {
|
|
+ * char name[EX_MAX_NAME + 1];
|
|
+ * int cardinality; -- number of `quad` points == dimension of non-null subc_*, xi, eta, zeta
|
|
+ * int *subc_dim;
|
|
+ * int *subc_ordinal;
|
|
+ * int *subc_dof_ordinal;
|
|
+ * int *subc_num_dof;
|
|
+ * double *xi;
|
|
+ * double *eta;
|
|
+ * double *zeta;
|
|
+ * } ex_quad;
|
|
+ */
|
|
+
|
|
+ exi_persist_redef(exoid, __func__);
|
|
+ int status;
|
|
+ if ((status = exi_put_quad_attribute(exoid, quad.name, "cardinality", EX_INTEGER, 1,
|
|
+ &quad.cardinality)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_type_error(status, quad.name, "quad", "cardinality", exoid, __func__);
|
|
+ }
|
|
+
|
|
+ if ((status = exi_put_quad_attribute(exoid, quad.name, "xi", EX_DOUBLE, quad.cardinality,
|
|
+ quad.xi)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_type_error(status, quad.name, "quad", "xi", exoid, __func__);
|
|
+ }
|
|
+
|
|
+ if ((status = exi_put_quad_attribute(exoid, quad.name, "eta", EX_DOUBLE, quad.cardinality,
|
|
+ quad.eta)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_type_error(status, quad.name, "quad", "eta", exoid, __func__);
|
|
+ }
|
|
+
|
|
+ if ((status = exi_put_quad_attribute(exoid, quad.name, "zeta", EX_DOUBLE, quad.cardinality,
|
|
+ quad.zeta)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_type_error(status, quad.name, "quad", "zeta", exoid, __func__);
|
|
+ }
|
|
+
|
|
+ if ((status = exi_put_quad_attribute(exoid, quad.name, "weight", EX_DOUBLE, quad.cardinality,
|
|
+ quad.weight)) != EX_NOERR) {
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return exi_print_type_error(status, quad.name, "quad", "weight", exoid, __func__);
|
|
+ }
|
|
+ exi_persist_leavedef(exoid, __func__);
|
|
+ return EX_NOERR;
|
|
+}
|
|
+
|
|
+int ex_put_field_suffices(int exoid, const ex_field field, const char *suffices)
|
|
+{
|
|
+ /*
|
|
+ * For a user-defined field metadata type, output the `cardinality`-count suffices.
|
|
+ * The suffices are in a single comma-separated string.
|
|
+ * This call is only valid if the field metadata type is user-defined.
|
|
+ *
|
|
+ * Example: cardinality = 4, type is EX_USER_DEFINED, name is "Species"
|
|
+ * Suffices = "h2o,gas,ch4,methane"
|
|
+ * The fields would be "Species_h2o", "Species_gas", "Species_ch4", "Species_methane"
|
|
+ *
|
|
+ * Accesses field.entity_type, field.entity_id, field.name, field.type, field.cardinality
|
|
+ * The attribute name is `Field@{name}@suffices`
|
|
+ */
|
|
+ int status;
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+
|
|
+ char attribute_name[EX_MAX_NAME + 1];
|
|
+ static const char *field_template = "Field@%s@%s";
|
|
+
|
|
+ if (field.type[0] != EX_FIELD_TYPE_USER_DEFINED) {
|
|
+ snprintf(
|
|
+ errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: Field '%s' is not of type EX_FIELD_TYPE_USER_DEFINED; cannot specify suffices.",
|
|
+ field.name);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+
|
|
+ /* Count the commas in the comma-separated list of suffices. Must be one less than the field
|
|
+ * cardinality... */
|
|
+ int comma_count = 0;
|
|
+ for (size_t i = 0; i < strlen(suffices); i++) {
|
|
+ if (suffices[i] == ',') {
|
|
+ comma_count++;
|
|
+ }
|
|
+ }
|
|
+ if (comma_count + 1 != field.cardinality[0]) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: Field '%s' cardinality is %d but there were %d suffices defined. These must "
|
|
+ "be equal.",
|
|
+ field.name, field.cardinality[0], comma_count + 1);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+
|
|
+ snprintf(attribute_name, EX_MAX_NAME + 1, field_template, field.name, "suffices");
|
|
+ if ((status = ex_put_text_attribute(exoid, field.entity_type, field.entity_id, attribute_name,
|
|
+ suffices)) != EX_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to store field suffices for field '%s' on %s with id %" PRId64
|
|
+ " in file id %d",
|
|
+ field.name, ex_name_of_object(field.entity_type), field.entity_id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ return EX_NOERR;
|
|
+}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_id_map.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_id_map.c
|
|
index 7af1df3491..fb38531d55 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_id_map.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_id_map.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -44,7 +44,7 @@ int ex_put_id_map(int exoid, ex_entity_type map_type, const void_int *map)
|
|
const char *vmap;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -83,7 +83,7 @@ int ex_put_id_map(int exoid, ex_entity_type map_type, const void_int *map)
|
|
|
|
/* put netcdf file into define mode */
|
|
if (nc_inq_varid(exoid, vmap, &mapid) != NC_NOERR) {
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -111,10 +111,12 @@ int ex_put_id_map(int exoid, ex_entity_type map_type, const void_int *map)
|
|
}
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, mapid, 1);
|
|
+ exi_compress_variable(exoid, mapid, 1);
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
@@ -138,6 +140,6 @@ int ex_put_id_map(int exoid, ex_entity_type map_type, const void_int *map)
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_info.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_info.c
|
|
index dae2a8adfe..4878d1d884 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_info.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_info.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -70,7 +70,7 @@ error = ex_put_info(exoid, num_info, info);
|
|
|
|
*/
|
|
|
|
-int ex_put_info(int exoid, int num_info, char *info[])
|
|
+int ex_put_info(int exoid, int num_info, char *const info[])
|
|
{
|
|
int status;
|
|
int i, lindim, num_info_dim, dims[2], varid;
|
|
@@ -80,7 +80,7 @@ int ex_put_info(int exoid, int num_info, char *info[])
|
|
int rootid = exoid & EX_FILE_ID_MASK;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -95,7 +95,7 @@ int ex_put_info(int exoid, int num_info, char *info[])
|
|
if (status != NC_NOERR) {
|
|
|
|
/* put file into define mode */
|
|
- if ((status = nc_redef(rootid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(rootid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed put file id %d into define mode", rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -135,11 +135,21 @@ int ex_put_info(int exoid, int num_info, char *info[])
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__set_compact_storage(rootid, varid);
|
|
- ex__compress_variable(rootid, varid, 3);
|
|
+ /* In parallel, only rank=0 will write the info records.
|
|
+ * Should be able to take advantage of HDF5 handling identical data on all ranks
|
|
+ * or use the compact storage, but we had issues on some NFS filesystems and some
|
|
+ * compilers/mpi so are doing it this way...
|
|
+ */
|
|
+#if defined(PARALLEL_AWARE_EXODUS)
|
|
+ if (exi_is_parallel(rootid)) {
|
|
+ nc_var_par_access(rootid, varid, NC_INDEPENDENT);
|
|
+ }
|
|
+#endif
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(rootid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(rootid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
@@ -170,21 +180,17 @@ int ex_put_info(int exoid, int num_info, char *info[])
|
|
}
|
|
}
|
|
}
|
|
- else if (ex__is_parallel(rootid)) {
|
|
- /* All processors need to call nc_put_vara_text in case in a global
|
|
- * collective mode */
|
|
- char dummy[] = " ";
|
|
- for (i = 0; i < num_info; i++) {
|
|
- start[0] = start[1] = 0;
|
|
- count[0] = count[1] = 0;
|
|
- nc_put_vara_text(rootid, varid, start, count, dummy);
|
|
- }
|
|
+ /* PnetCDF applies setting to entire file, so put back to collective... */
|
|
+#if defined(PARALLEL_AWARE_EXODUS)
|
|
+ if (exi_is_parallel(rootid)) {
|
|
+ nc_var_par_access(rootid, varid, NC_COLLECTIVE);
|
|
}
|
|
+#endif
|
|
}
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(rootid, __func__);
|
|
+ exi_leavedef(rootid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_init.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_init.c
|
|
index 4b7ebc07e8..7f8a72dc26 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_init.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_init.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -76,5 +76,5 @@ int ex_put_init(int exoid, const char *title, int64_t num_dim, int64_t num_nodes
|
|
par.num_elem_maps = 0;
|
|
par.num_assembly = 0;
|
|
|
|
- return (ex_put_init_ext(exoid, &par));
|
|
+ return ex_put_init_ext(exoid, &par);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_init_ext.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_init_ext.c
|
|
index e4d7b75725..5df092d7c5 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_init_ext.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_init_ext.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2025 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -28,25 +28,15 @@
|
|
static void write_dummy_names(int exoid, ex_entity_type obj_type, int num)
|
|
{
|
|
if (num > 0) {
|
|
- size_t start[3], count[3];
|
|
- char * text = "";
|
|
int varid;
|
|
size_t num_entity;
|
|
- size_t i;
|
|
-
|
|
- ex__get_dimension(exoid, ex__dim_num_objects(obj_type), ex_name_of_object(obj_type),
|
|
+ exi_get_dimension(exoid, exi_dim_num_objects(obj_type), ex_name_of_object(obj_type),
|
|
&num_entity, &varid, __func__);
|
|
|
|
- for (i = 0; i < num_entity; i++) {
|
|
- start[0] = i;
|
|
- count[0] = 1;
|
|
-
|
|
- start[1] = 0;
|
|
- count[1] = 1;
|
|
-
|
|
- start[2] = 0;
|
|
- count[2] = 1;
|
|
-
|
|
+ char *text = "";
|
|
+ for (size_t i = 0; i < num_entity; i++) {
|
|
+ size_t start[] = {i, 0, 0};
|
|
+ size_t count[] = {1, 1, 1};
|
|
nc_put_vara_text(exoid, varid, start, count, text);
|
|
}
|
|
}
|
|
@@ -55,61 +45,58 @@ static void write_dummy_names(int exoid, ex_entity_type obj_type, int num)
|
|
static int ex_write_object_names(int exoid, const char *type, const char *dimension_name,
|
|
int dimension_var, int string_dimension, int count)
|
|
{
|
|
- int dim[2];
|
|
- int status;
|
|
- int varid;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-#if NC_HAS_HDF5
|
|
- int fill = NC_FILL_CHAR;
|
|
-#endif
|
|
|
|
if (count > 0) {
|
|
- dim[0] = dimension_var;
|
|
- dim[1] = string_dimension;
|
|
-
|
|
+ int dim[] = {dimension_var, string_dimension};
|
|
+ int status;
|
|
+ int varid;
|
|
if ((status = nc_def_var(exoid, dimension_name, NC_CHAR, 2, dim, &varid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define %s name array in file id %d", type,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (status); /* exit define mode and return */
|
|
+ return status; /* exit define mode and return */
|
|
}
|
|
- ex__set_compact_storage(exoid, varid);
|
|
-#if NC_HAS_HDF5
|
|
+ exi_set_compact_storage(exoid, varid);
|
|
+#if defined(EX_CAN_USE_NC_DEF_VAR_FILL)
|
|
+ int fill = NC_FILL_CHAR;
|
|
nc_def_var_fill(exoid, varid, 0, &fill);
|
|
#endif
|
|
}
|
|
- return (NC_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
static int ex_write_object_params(int exoid, const char *type, const char *dimension_name,
|
|
const char *status_dim_name, const char *id_array_dim_name,
|
|
size_t count, int *dimension)
|
|
{
|
|
- int dim[2];
|
|
- int varid;
|
|
- int status;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int sixty_four_kb = 64 * 1024;
|
|
|
|
/* Can have nonzero model->num_elem_blk even if model->num_elem == 0 */
|
|
if (count > 0) {
|
|
+ int status;
|
|
if ((status = nc_def_dim(exoid, dimension_name, count, dimension)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define number of %ss in file id %d", type,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (status); /* exit define mode and return */
|
|
+ return status; /* exit define mode and return */
|
|
}
|
|
/* ...and some variables */
|
|
/* element block id status array */
|
|
+ int dim[2];
|
|
+ int varid;
|
|
dim[0] = *dimension;
|
|
if ((status = nc_def_var(exoid, status_dim_name, NC_INT, 1, dim, &varid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define %s status array in file id %d",
|
|
type, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (status); /* exit define mode and return */
|
|
+ return status; /* exit define mode and return */
|
|
}
|
|
+
|
|
+ size_t sixty_four_kb = 64 * 1024; // Compact storage can only be used for < 64KiByte data sizes
|
|
if (4 * count < sixty_four_kb) {
|
|
- ex__set_compact_storage(exoid, varid);
|
|
+ exi_set_compact_storage(exoid, varid);
|
|
}
|
|
|
|
/* type id array */
|
|
@@ -121,33 +108,31 @@ static int ex_write_object_params(int exoid, const char *type, const char *dimen
|
|
}
|
|
|
|
if ((status = nc_def_var(exoid, id_array_dim_name, int_type, 1, dim, &varid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define %s id array in file id %d", type,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (status); /* exit define mode and return */
|
|
+ return status; /* exit define mode and return */
|
|
}
|
|
if (int_size * count < sixty_four_kb) {
|
|
- ex__set_compact_storage(exoid, varid);
|
|
+ exi_set_compact_storage(exoid, varid);
|
|
}
|
|
|
|
/* store property name as attribute of property array variable */
|
|
if ((status = nc_put_att_text(exoid, varid, ATT_PROP_NAME, 3, "ID")) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to store %s property name %s in file id %d",
|
|
type, "ID", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (status);
|
|
+ return status;
|
|
}
|
|
}
|
|
- return (NC_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
static int ex_write_map_params(int exoid, const char *map_name, const char *map_dim_name,
|
|
const char *map_id_name, size_t map_count, int *map_dimension)
|
|
{
|
|
- int dim[2];
|
|
- int varid;
|
|
- int status;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
|
|
int int_type = NC_INT;
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_DB) {
|
|
@@ -156,54 +141,58 @@ static int ex_write_map_params(int exoid, const char *map_name, const char *map_
|
|
|
|
/* Can have nonzero model->num_XXXX_map even if model->num_XXXX == 0 */
|
|
if ((map_count) > 0) {
|
|
+ int status;
|
|
if ((status = nc_def_dim(exoid, map_dim_name, map_count, map_dimension)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define number of %ss in file id %d",
|
|
map_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (status); /* exit define mode and return */
|
|
+ return status; /* exit define mode and return */
|
|
}
|
|
|
|
- dim[0] = *map_dimension;
|
|
+ int dim[] = {*map_dimension};
|
|
|
|
/* map_name id array */
|
|
+ int varid;
|
|
if ((status = nc_def_var(exoid, map_id_name, int_type, 1, dim, &varid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define %s id array in file id %d",
|
|
map_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (status); /* exit define mode and return */
|
|
+ return status; /* exit define mode and return */
|
|
}
|
|
|
|
/* store property name as attribute of property array variable */
|
|
if ((status = nc_put_att_text(exoid, varid, ATT_PROP_NAME, 3, "ID")) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to store %s property name %s in file id %d",
|
|
map_name, "ID", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
- return (NC_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
static void invalidate_id_status(int exoid, const char *var_stat, const char *var_id, int count,
|
|
int *ids)
|
|
{
|
|
- int i;
|
|
- int id_var, stat_var;
|
|
-
|
|
if (count > 0) {
|
|
- if (var_id != 0) {
|
|
- for (i = 0; i < count; i++) {
|
|
+ if (var_id != NULL) {
|
|
+ for (int i = 0; i < count; i++) {
|
|
ids[i] = EX_INVALID_ID;
|
|
}
|
|
+ int id_var;
|
|
(void)nc_inq_varid(exoid, var_id, &id_var);
|
|
(void)nc_put_var_int(exoid, id_var, ids);
|
|
}
|
|
|
|
- if (var_stat != 0) {
|
|
- for (i = 0; i < count; i++) {
|
|
+ if (var_stat != NULL) {
|
|
+ for (int i = 0; i < count; i++) {
|
|
ids[i] = 0;
|
|
}
|
|
|
|
+ int stat_var;
|
|
(void)nc_inq_varid(exoid, var_stat, &stat_var);
|
|
(void)nc_put_var_int(exoid, stat_var, ids);
|
|
}
|
|
@@ -220,31 +209,43 @@ static void invalidate_id_status(int exoid, const char *var_stat, const char *va
|
|
|
|
int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
{
|
|
- int numdimdim, numnoddim, elblkdim, edblkdim, fablkdim, esetdim, fsetdim, elsetdim, nsetdim,
|
|
- ssetdim, dim_str_name, dim[2], temp;
|
|
- int nmapdim, edmapdim, famapdim, emapdim, timedim;
|
|
- int status;
|
|
- int title_len;
|
|
-#if 0
|
|
- /* used for header size calculations which are turned off for now */
|
|
- int header_size, fixed_var_size, iows;
|
|
-#endif
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
+ int numdimdim = 0;
|
|
+ int numnoddim = 0;
|
|
+ int elblkdim = 0;
|
|
+ int edblkdim = 0;
|
|
+ int fablkdim = 0;
|
|
+ int esetdim = 0;
|
|
+ int fsetdim = 0;
|
|
+ int elsetdim = 0;
|
|
+ int nsetdim = 0;
|
|
+ int ssetdim = 0;
|
|
+ int dim_str_name = 0;
|
|
+ int dim[2];
|
|
+ int temp = 0;
|
|
+ int nmapdim = 0;
|
|
+ int edmapdim = 0;
|
|
+ int famapdim = 0;
|
|
+ int emapdim = 0;
|
|
+ int timedim = 0;
|
|
+ int status = 0;
|
|
+ int title_len = 0;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
int rootid = exoid & EX_FILE_ID_MASK;
|
|
|
|
if (rootid == exoid && nc_inq_dimid(exoid, DIM_NUM_DIM, &temp) == NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: initialization already done for file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MSG);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* put file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -254,6 +255,7 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
title_len = strlen(model->title) < MAX_LINE_LENGTH ? strlen(model->title) : MAX_LINE_LENGTH;
|
|
if ((status = nc_put_att_text(rootid, NC_GLOBAL, (const char *)ATT_TITLE, title_len + 1,
|
|
model->title)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define model->title attribute to file id %d",
|
|
rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -264,7 +266,8 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
|
|
/* create name string length dimension */
|
|
if (nc_inq_dimid(rootid, DIM_STR_NAME, &dim_str_name) != NC_NOERR) {
|
|
- if ((status = nc_def_dim(rootid, DIM_STR_NAME, NC_MAX_NAME, &dim_str_name)) != NC_NOERR) {
|
|
+ if ((status = nc_def_dim(rootid, DIM_STR_NAME, EX_MAX_NAME, &dim_str_name)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define name string length in file id %d",
|
|
rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -273,6 +276,7 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
}
|
|
|
|
if ((status = nc_def_dim(exoid, DIM_TIME, NC_UNLIMITED, &timedim)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define time dimension in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret;
|
|
@@ -280,19 +284,29 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
|
|
dim[0] = timedim;
|
|
if ((status = nc_def_var(exoid, VAR_WHOLE_TIME, nc_flt_code(exoid), 1, dim, &temp)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to define whole time step variable in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret;
|
|
}
|
|
+
|
|
{
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
- file->time_varid = temp;
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
+ if (!file) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d.", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
+ goto error_ret;
|
|
+ }
|
|
+ file->time_varid = temp;
|
|
}
|
|
- ex__compress_variable(exoid, temp, 2);
|
|
+
|
|
+ exi_compress_variable(exoid, temp, -2); /* Don't compress, but do set collective io */
|
|
|
|
if (model->num_dim > 0) {
|
|
if ((status = nc_def_dim(exoid, DIM_NUM_DIM, model->num_dim, &numdimdim)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define number of dimensions in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -308,8 +322,23 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
* non-zero node count.
|
|
*/
|
|
|
|
+ int int_size = ex_int64_status(exoid) & EX_IDS_INT64_DB ? 8 : 4;
|
|
+ size_t twoGiB = 1ul << 31;
|
|
+
|
|
if (model->num_nodes > 0) {
|
|
+ // If file is using 32-bit integers, check what node count is in range...
|
|
+ if (int_size == 4 && model->num_nodes >= twoGiB) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: File is using 32-bit integers, but the node count exceeds the integer "
|
|
+ "capacity (%" PRId64 ") in file id %d",
|
|
+ model->num_nodes, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ goto error_ret;
|
|
+ }
|
|
+
|
|
if ((status = nc_def_dim(exoid, DIM_NUM_NODES, model->num_nodes, &numnoddim)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define number of nodes in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -319,6 +348,7 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
|
|
if (model->num_elem > 0) {
|
|
if (model->num_nodes <= 0) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: Cannot have non-zero element count if node count "
|
|
"is zero.in file id %d",
|
|
@@ -327,7 +357,18 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
|
|
+ if (int_size == 4 && model->num_elem >= twoGiB) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: File is using 32-bit integers, but the element count exceeds the integer "
|
|
+ "capacity (%" PRId64 ") in file id %d",
|
|
+ model->num_elem, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ goto error_ret;
|
|
+ }
|
|
+
|
|
if ((status = nc_def_dim(exoid, DIM_NUM_ELEM, model->num_elem, &temp)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define number of elements in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -337,6 +378,7 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
|
|
if (model->num_edge > 0) {
|
|
if (model->num_nodes <= 0) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: Cannot have non-zero edge count if node count is "
|
|
"zero.in file id %d",
|
|
@@ -346,6 +388,7 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
}
|
|
|
|
if ((status = nc_def_dim(exoid, DIM_NUM_EDGE, model->num_edge, &temp)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define number of edges in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -355,6 +398,7 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
|
|
if (model->num_face > 0) {
|
|
if (model->num_nodes <= 0) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: Cannot have non-zero face count if node count is "
|
|
"zero.in file id %d",
|
|
@@ -364,6 +408,7 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
}
|
|
|
|
if ((status = nc_def_dim(exoid, DIM_NUM_FACE, model->num_face, &temp)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define number of faces in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -427,34 +472,37 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
if (model->num_dim > 0) {
|
|
if ((status = nc_def_var(exoid, VAR_COORD_X, nc_flt_code(exoid), 1, dim, &temp)) !=
|
|
NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to define node x coordinate array in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, temp, 2);
|
|
+ exi_compress_variable(exoid, temp, 2);
|
|
}
|
|
|
|
if (model->num_dim > 1) {
|
|
if ((status = nc_def_var(exoid, VAR_COORD_Y, nc_flt_code(exoid), 1, dim, &temp)) !=
|
|
NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to define node y coordinate array in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, temp, 2);
|
|
+ exi_compress_variable(exoid, temp, 2);
|
|
}
|
|
|
|
if (model->num_dim > 2) {
|
|
if ((status = nc_def_var(exoid, VAR_COORD_Z, nc_flt_code(exoid), 1, dim, &temp)) !=
|
|
NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to define node z coordinate array in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, temp, 2);
|
|
+ exi_compress_variable(exoid, temp, 2);
|
|
}
|
|
}
|
|
|
|
@@ -514,14 +562,17 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Fill the id and status arrays with EX_INVALID_ID */
|
|
{
|
|
- int * invalid_ids = NULL;
|
|
- size_t maxset = model->num_elem_blk;
|
|
+ int *invalid_ids = NULL;
|
|
+ int64_t maxset = model->num_elem_blk;
|
|
if (maxset < model->num_edge_blk) {
|
|
maxset = model->num_edge_blk;
|
|
}
|
|
@@ -558,6 +609,7 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
|
|
/* allocate space for id/status array */
|
|
if (!(invalid_ids = malloc(maxset * sizeof(int)))) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate memory for id/status array for file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
|
|
@@ -601,6 +653,6 @@ int ex_put_init_ext(int exoid, const ex_init_params *model)
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_init_global.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_init_global.c
|
|
index 542fe3b0ec..f6731cd164 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_init_global.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_init_global.c
|
|
@@ -32,7 +32,7 @@
|
|
/*****************************************************************************/
|
|
|
|
#include <exodusII.h> // for ex_err, etc
|
|
-#include <exodusII_int.h> // for ex__leavedef, EX_FATAL, etc
|
|
+#include <exodusII_int.h> // for exi_leavedef, EX_FATAL, etc
|
|
|
|
/*!
|
|
* \ingroup ModelDescription
|
|
@@ -49,7 +49,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -60,14 +60,14 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
id_type = NC_INT64;
|
|
}
|
|
/* Put NetCDF file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file ID %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Output the file version */
|
|
- if ((status = ex__put_nemesis_version(exoid)) < 0) {
|
|
+ if ((status = exi_put_nemesis_version(exoid)) < 0) {
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
|
|
@@ -77,7 +77,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
DIM_NUM_NODES_GLOBAL, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -88,7 +88,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
DIM_NUM_ELEMS_GLOBAL, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -103,7 +103,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
DIM_NUM_ELBLK_GLOBAL, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -115,7 +115,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
VAR_ELBLK_IDS_GLOBAL, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -127,7 +127,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
VAR_ELBLK_CNT_GLOBAL, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -143,7 +143,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
DIM_NUM_NS_GLOBAL, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -156,7 +156,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -169,7 +169,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
VAR_NS_NODE_CNT_GLOBAL, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -185,7 +185,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
VAR_NS_DF_CNT_GLOBAL, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -203,7 +203,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
DIM_NUM_SS_GLOBAL, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -216,7 +216,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -233,7 +233,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -250,7 +250,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -258,7 +258,7 @@ int ex_put_init_global(int exoid, int64_t num_nodes_g, int64_t num_elems_g, int6
|
|
} /* End "if (num_side_sets_g > 0)" */
|
|
|
|
/* End define mode */
|
|
- if (ex__leavedef(exoid, __func__) != EX_NOERR) {
|
|
+ if (exi_leavedef(exoid, __func__) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_init_info.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_init_info.c
|
|
index 43c1ed9b5a..29c55db5eb 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_init_info.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_init_info.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -31,7 +31,7 @@
|
|
* \ingroup ModelDescription
|
|
* \undoc
|
|
*/
|
|
-int ex_put_init_info(int exoid, int num_proc, int num_proc_in_f, char *ftype)
|
|
+int ex_put_init_info(int exoid, int num_proc, int num_proc_in_f, const char *ftype)
|
|
{
|
|
int dimid, varid;
|
|
int ltempsv;
|
|
@@ -41,7 +41,7 @@ int ex_put_init_info(int exoid, int num_proc, int num_proc_in_f, char *ftype)
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -68,21 +68,21 @@ int ex_put_init_info(int exoid, int num_proc, int num_proc_in_f, char *ftype)
|
|
}
|
|
|
|
/* Put file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file ID %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Define dimension for the number of processors */
|
|
- if ((status = nc_inq_dimid(exoid, DIM_NUM_PROCS, &dimid)) != NC_NOERR) {
|
|
+ if (nc_inq_dimid(exoid, DIM_NUM_PROCS, &dimid) != NC_NOERR) {
|
|
ltempsv = num_proc;
|
|
if ((status = nc_def_dim(exoid, DIM_NUM_PROCS, ltempsv, &dimid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to dimension \"%s\" in file ID %d",
|
|
DIM_NUM_PROCS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -97,7 +97,7 @@ int ex_put_init_info(int exoid, int num_proc, int num_proc_in_f, char *ftype)
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -110,12 +110,12 @@ int ex_put_init_info(int exoid, int num_proc, int num_proc_in_f, char *ftype)
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ex__leavedef(exoid, __func__) != EX_NOERR) {
|
|
+ if (exi_leavedef(exoid, __func__) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -128,7 +128,7 @@ int ex_put_init_info(int exoid, int num_proc, int num_proc_in_f, char *ftype)
|
|
}
|
|
}
|
|
else {
|
|
- if (ex__leavedef(exoid, __func__) != EX_NOERR) {
|
|
+ if (exi_leavedef(exoid, __func__) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_loadbal_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_loadbal_param.c
|
|
index 1ad8419be7..9307850593 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_loadbal_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_loadbal_param.c
|
|
@@ -29,7 +29,7 @@
|
|
/*****************************************************************************/
|
|
|
|
#include <exodusII.h> // for ex_err, etc
|
|
-#include <exodusII_int.h> // for ex__leavedef, EX_FATAL, etc
|
|
+#include <exodusII_int.h> // for exi_leavedef, EX_FATAL, etc
|
|
|
|
/*!
|
|
* \ingroup ModelDescription
|
|
@@ -60,12 +60,12 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Get the file type */
|
|
- if (ex__get_file_type(exoid, ftype) != EX_NOERR) {
|
|
+ if (exi_get_file_type(exoid, ftype) != EX_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get file type from file ID %d\n", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -91,15 +91,15 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
}
|
|
|
|
/* Put NetCDF file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Output the file version */
|
|
- if ((status = ex__put_nemesis_version(exoid)) < 0) {
|
|
- ex__leavedef(exoid, __func__);
|
|
+ if ((status = exi_put_nemesis_version(exoid)) < 0) {
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
|
|
@@ -110,7 +110,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_INT_N_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -123,7 +123,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_BOR_N_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -135,7 +135,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_EXT_N_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -148,7 +148,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_INT_E_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -160,7 +160,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_BOR_E_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -172,7 +172,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_INT_N_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -182,7 +182,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_BOR_N_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -192,7 +192,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_EXT_N_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -205,7 +205,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
DIM_NUM_INT_ELEMS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -215,11 +215,11 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_ELEM_MAP_INT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
} /* End "if (num_int_elems > 0)" */
|
|
|
|
@@ -229,7 +229,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_INT_E_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -239,7 +239,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_BOR_E_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -252,7 +252,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
DIM_NUM_BOR_ELEMS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -262,11 +262,11 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_ELEM_MAP_BOR, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
} /* End "if (num_bor_elems > 0)" */
|
|
|
|
@@ -278,7 +278,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
DIM_NUM_INT_NODES, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -289,11 +289,11 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_NODE_MAP_INT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
} /* End "if (num_int_nodes > 0)" */
|
|
|
|
@@ -305,7 +305,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
DIM_NUM_BOR_NODES, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -316,11 +316,11 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_NODE_MAP_BOR, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
} /* End "if (num_bor_nodes > 0)" */
|
|
|
|
@@ -332,7 +332,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
DIM_NUM_EXT_NODES, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -343,11 +343,11 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_NODE_MAP_EXT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
} /* End "if (num_ext_nodes > 0)" */
|
|
|
|
@@ -359,7 +359,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
DIM_NUM_N_CMAPS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -370,11 +370,11 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_N_COMM_IDS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
/* Add the status vector */
|
|
if ((status = nc_def_var(exoid, VAR_N_COMM_STAT, NC_INT, 1, dimid, &varid)) != NC_NOERR) {
|
|
@@ -382,7 +382,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_N_COMM_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -397,7 +397,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
DIM_NUM_E_CMAPS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -408,18 +408,18 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
VAR_E_COMM_IDS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
if ((status = nc_def_var(exoid, VAR_E_COMM_STAT, NC_INT, 1, dimid, &varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define variable \"%s\" in file ID %d",
|
|
VAR_E_COMM_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -427,7 +427,7 @@ int ex_put_loadbal_param(int exoid, int64_t num_int_nodes, int64_t num_bor_nodes
|
|
} /* End "if (num_elem_cmaps > 0)" */
|
|
|
|
/* Leave define mode */
|
|
- if (ex__leavedef(exoid, __func__) != EX_NOERR) {
|
|
+ if (exi_leavedef(exoid, __func__) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_loadbal_param_cc.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_loadbal_param_cc.c
|
|
index b2e78d8a81..dc1d9dc358 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_loadbal_param_cc.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_loadbal_param_cc.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -36,7 +36,7 @@
|
|
/*****************************************************************************/
|
|
|
|
#include <exodusII.h> // for ex_err, etc
|
|
-#include <exodusII_int.h> // for ex__leavedef, EX_FATAL, etc
|
|
+#include <exodusII_int.h> // for exi_leavedef, EX_FATAL, etc
|
|
|
|
#ifndef NC_INT64
|
|
#define NC_INT64 NC_INT
|
|
@@ -46,10 +46,10 @@
|
|
* \ingroup ModelDescription
|
|
* \undoc
|
|
*/
|
|
-int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bor_nodes,
|
|
- void_int *num_ext_nodes, void_int *num_int_elems,
|
|
- void_int *num_bor_elems, void_int *num_node_cmaps,
|
|
- void_int *num_elem_cmaps)
|
|
+int ex_put_loadbal_param_cc(int exoid, const void_int *num_int_nodes, const void_int *num_bor_nodes,
|
|
+ const void_int *num_ext_nodes, const void_int *num_int_elems,
|
|
+ const void_int *num_bor_elems, const void_int *num_node_cmaps,
|
|
+ const void_int *num_elem_cmaps)
|
|
{
|
|
int status;
|
|
int iproc, varid, dimid_npf, dimid[3];
|
|
@@ -82,7 +82,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -120,7 +120,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
}
|
|
|
|
/* Put NetCDF file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -134,7 +134,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
}
|
|
|
|
/* Output the file version */
|
|
- if ((status = ex__put_nemesis_version(exoid)) < 0) {
|
|
+ if ((status = exi_put_nemesis_version(exoid)) < 0) {
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
|
|
@@ -145,7 +145,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -158,7 +158,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_INT_N_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -171,7 +171,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_BOR_N_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -183,7 +183,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_EXT_N_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -196,7 +196,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_INT_E_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -206,8 +206,9 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
if ((status = nc_def_var(exoid, VAR_BOR_E_STAT, NC_INT, 1, &dimid_npf, &varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Failed to define variable \"%s\" in file ID %d",
|
|
VAR_BOR_E_STAT, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -219,7 +220,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_INT_N_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -229,7 +230,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_BOR_N_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -239,7 +240,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_EXT_N_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -250,7 +251,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_INT_E_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -260,7 +261,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_BOR_E_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -300,7 +301,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
DIM_NUM_INT_ELEMS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -310,11 +311,11 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_ELEM_MAP_INT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
/* and the index variable */
|
|
if ((status = nc_def_var(exoid, VAR_ELEM_MAP_INT_IDX, index_type, 1, &dimid_npf,
|
|
@@ -323,7 +324,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_ELEM_MAP_INT_IDX, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -336,7 +337,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
DIM_NUM_BOR_ELEMS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -346,11 +347,11 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_ELEM_MAP_BOR, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
/* and the index variable */
|
|
if ((status = nc_def_var(exoid, VAR_ELEM_MAP_BOR_IDX, index_type, 1, &dimid_npf,
|
|
@@ -359,7 +360,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_ELEM_MAP_BOR_IDX, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -373,7 +374,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
DIM_NUM_INT_NODES, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -384,11 +385,11 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_NODE_MAP_INT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
/* and the index variable */
|
|
if ((status = nc_def_var(exoid, VAR_NODE_MAP_INT_IDX, index_type, 1, &dimid_npf,
|
|
@@ -397,7 +398,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_NODE_MAP_INT_IDX, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -411,7 +412,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
DIM_NUM_BOR_NODES, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -422,11 +423,11 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_NODE_MAP_BOR, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
/* and the index variable */
|
|
if ((status = nc_def_var(exoid, VAR_NODE_MAP_BOR_IDX, index_type, 1, &dimid_npf,
|
|
@@ -435,7 +436,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_NODE_MAP_BOR_IDX, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -449,7 +450,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
DIM_NUM_EXT_NODES, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -460,11 +461,11 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_NODE_MAP_EXT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
/* and the index variable */
|
|
if ((status = nc_def_var(exoid, VAR_NODE_MAP_EXT_IDX, index_type, 1, &dimid_npf,
|
|
@@ -473,7 +474,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_NODE_MAP_EXT_IDX, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -487,7 +488,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
DIM_NUM_N_CMAPS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -498,7 +499,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_N_COMM_IDS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -508,7 +509,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_N_COMM_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -520,7 +521,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_N_COMM_INFO_IDX, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -533,7 +534,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
DIM_NUM_E_CMAPS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -544,7 +545,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_E_COMM_IDS, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -554,7 +555,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_E_COMM_STAT, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -566,7 +567,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
VAR_E_COMM_INFO_IDX, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
/* Leave define mode before returning */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -574,7 +575,7 @@ int ex_put_loadbal_param_cc(int exoid, void_int *num_int_nodes, void_int *num_bo
|
|
} /* End "if (num_e_cmaps > 0)" */
|
|
|
|
/* Leave define mode */
|
|
- if (ex__leavedef(exoid, __func__) != EX_NOERR) {
|
|
+ if (exi_leavedef(exoid, __func__) != EX_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_map.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_map.c
|
|
index 231abb06c7..f03881a42f 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_map.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_map.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -63,7 +63,7 @@ int ex_put_map(int exoid, const void_int *elem_map)
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -75,7 +75,7 @@ int ex_put_map(int exoid, const void_int *elem_map)
|
|
}
|
|
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -101,10 +101,12 @@ int ex_put_map(int exoid, const void_int *elem_map)
|
|
}
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, mapid, 1);
|
|
+ exi_compress_variable(exoid, mapid, 1);
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -126,6 +128,6 @@ int ex_put_map(int exoid, const void_int *elem_map)
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_map_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_map_param.c
|
|
index cb69581686..8347e5c4b2 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_map_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_map_param.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2023 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -42,12 +42,9 @@ int ex_put_map_param(int exoid, int num_node_maps, int num_elem_maps)
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
int id_type = NC_INT;
|
|
int int_type = NC_INT;
|
|
-#if NC_HAS_HDF5
|
|
- int fill = NC_FILL_CHAR;
|
|
-#endif
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -76,7 +73,7 @@ int ex_put_map_param(int exoid, int num_node_maps, int num_elem_maps)
|
|
}
|
|
|
|
/* put file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -119,7 +116,8 @@ int ex_put_map_param(int exoid, int num_node_maps, int num_elem_maps)
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
-#if NC_HAS_HDF5
|
|
+#if defined(EX_CAN_USE_NC_DEF_VAR_FILL)
|
|
+ int fill = NC_FILL_CHAR;
|
|
nc_def_var_fill(exoid, varid, 0, &fill);
|
|
#endif
|
|
|
|
@@ -149,7 +147,7 @@ int ex_put_map_param(int exoid, int num_node_maps, int num_elem_maps)
|
|
}
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
}
|
|
}
|
|
|
|
@@ -189,10 +187,10 @@ int ex_put_map_param(int exoid, int num_node_maps, int num_elem_maps)
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
-#if NC_HAS_HDF5
|
|
+#if defined(EX_CAN_USE_NC_DEF_VAR_FILL)
|
|
+ int fill = NC_FILL_CHAR;
|
|
nc_def_var_fill(exoid, varid, 0, &fill);
|
|
#endif
|
|
-
|
|
/* determine number of elements */
|
|
if ((status = nc_inq_dimid(exoid, DIM_NUM_ELEM, &dimid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
@@ -218,12 +216,14 @@ int ex_put_map_param(int exoid, int num_node_maps, int num_elem_maps)
|
|
}
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
}
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -268,6 +268,6 @@ int ex_put_map_param(int exoid, int num_node_maps, int num_elem_maps)
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_name.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_name.c
|
|
index 659587365d..c0dc4a93af 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_name.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_name.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2023 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -26,7 +26,51 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__id_lkup, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_id_lkup, etc
|
|
+
|
|
+int exi_put_assembly_name(int exoid, ex_entity_type obj_type, ex_entity_id entity_id,
|
|
+ const char *name)
|
|
+{
|
|
+ /* Internal function to handle renaming of an existing assembly.
|
|
+ Note that assembly must exist or an error will be returned.
|
|
+ */
|
|
+ /* See if an assembly with this id has already been defined or exists on file... */
|
|
+ int entlst_id = 0;
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ if (nc_inq_varid(exoid, VAR_ENTITY_ASSEMBLY(entity_id), &entlst_id) == NC_NOERR) {
|
|
+ int status;
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ size_t length = strlen(name) + 1;
|
|
+ if ((status = nc_put_att_text(exoid, entlst_id, EX_ATTRIBUTE_NAME, length, name)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to store assembly name %s in file id %d",
|
|
+ name, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode in file id %d", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ }
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ /* Update the maximum_name_length attribute on the file. */
|
|
+ exi_update_max_name_length(exoid, length - 1);
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode in file id %d", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ EX_FUNC_LEAVE(EX_NOERR);
|
|
+ }
|
|
+
|
|
+ /* Assembly not found... */
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: %s id %" PRId64 " not found in file id %d",
|
|
+ ex_name_of_object(obj_type), entity_id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_LOOKUPFAIL);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+}
|
|
|
|
/*!
|
|
* writes the name of the specified entity to the database. The entity
|
|
@@ -46,17 +90,12 @@ int ex_put_name(int exoid, ex_entity_type obj_type, ex_entity_id entity_id, cons
|
|
const char *vobj;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
switch (obj_type) {
|
|
- case EX_ASSEMBLY:
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: Assembly name is written using `ex_put_assembly()` function");
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
- break;
|
|
+ case EX_ASSEMBLY: return exi_put_assembly_name(exoid, obj_type, entity_id, name);
|
|
case EX_EDGE_BLOCK: vobj = VAR_NAME_ED_BLK; break;
|
|
case EX_FACE_BLOCK: vobj = VAR_NAME_FA_BLK; break;
|
|
case EX_ELEM_BLOCK: vobj = VAR_NAME_EL_BLK; break;
|
|
@@ -82,24 +121,29 @@ int ex_put_name(int exoid, ex_entity_type obj_type, ex_entity_id entity_id, cons
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- ent_ndx = ex__id_lkup(exoid, obj_type, entity_id);
|
|
-
|
|
- if (ent_ndx == -EX_LOOKUPFAIL) { /* could not find the element block id */
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: %s id %" PRId64 " not found in file id %d",
|
|
- ex_name_of_object(obj_type), entity_id, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_LOOKUPFAIL);
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
+ ent_ndx = exi_id_lkup(exoid, obj_type, entity_id);
|
|
+ if (ent_ndx == -EX_LOOKUPFAIL) { /* could not find the entity with `entity_id` */
|
|
+ if (obj_type == EX_NODE_MAP || obj_type == EX_ELEM_MAP || obj_type == EX_FACE_MAP ||
|
|
+ obj_type == EX_EDGE_MAP) {
|
|
+ ent_ndx = entity_id;
|
|
+ }
|
|
+ else {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: %s id %" PRId64 " not found in file id %d",
|
|
+ ex_name_of_object(obj_type), entity_id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_LOOKUPFAIL);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
}
|
|
|
|
/* If this is a null entity, then 'ent_ndx' will be negative.
|
|
- * We don't care in this __func__, so make it positive and continue...
|
|
+ * We don't care in this function, so make it positive and continue...
|
|
*/
|
|
if (ent_ndx < 0) {
|
|
ent_ndx = -ent_ndx;
|
|
}
|
|
|
|
/* write EXODUS entityname */
|
|
- status = ex__put_name(exoid, varid, ent_ndx - 1, name, obj_type, "", __func__);
|
|
+ status = exi_put_name(exoid, varid, ent_ndx - 1, name, obj_type, "", __func__);
|
|
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_names.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_names.c
|
|
index e5393a2c8c..ab7ed91475 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_names.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_names.c
|
|
@@ -34,7 +34,7 @@
|
|
* \param names ptr array of entity names
|
|
*/
|
|
|
|
-int ex_put_names(int exoid, ex_entity_type obj_type, char *names[])
|
|
+int ex_put_names(int exoid, ex_entity_type obj_type, char *const names[])
|
|
{
|
|
int status;
|
|
int varid;
|
|
@@ -44,7 +44,7 @@ int ex_put_names(int exoid, ex_entity_type obj_type, char *names[])
|
|
const char *vname = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -82,7 +82,7 @@ int ex_put_names(int exoid, ex_entity_type obj_type, char *names[])
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- ex__get_dimension(exoid, ex__dim_num_objects(obj_type), ex_name_of_object(obj_type), &num_entity,
|
|
+ exi_get_dimension(exoid, exi_dim_num_objects(obj_type), ex_name_of_object(obj_type), &num_entity,
|
|
&varid, __func__);
|
|
|
|
if ((status = nc_inq_varid(exoid, vname, &varid)) != NC_NOERR) {
|
|
@@ -93,7 +93,7 @@ int ex_put_names(int exoid, ex_entity_type obj_type, char *names[])
|
|
}
|
|
|
|
/* write EXODUS entitynames */
|
|
- status = ex__put_names(exoid, varid, num_entity, names, obj_type, "", __func__);
|
|
+ status = exi_put_names(exoid, varid, num_entity, names, obj_type, "", __func__);
|
|
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_nodal_var.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_nodal_var.c
|
|
index d7d0814a21..3ab1242494 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_nodal_var.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_nodal_var.c
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_WARN, ex__comp_ws, etc
|
|
+#include "exodusII_int.h" // for EX_WARN, exi_comp_ws, etc
|
|
|
|
/*!
|
|
\deprecated Use ex_put_var()(exoid, time_step, EX_NODAL, nodal_var_index, 1, num_nodes,
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_node_cmap.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_node_cmap.c
|
|
index 3551f479d3..580251542b 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_node_cmap.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_node_cmap.c
|
|
@@ -30,8 +30,8 @@
|
|
#include <exodusII.h> // for ex_err, etc
|
|
#include <exodusII_int.h> // for EX_FATAL, DIM_NCNT_CMAP, etc
|
|
|
|
-int ex_put_node_cmap(int exoid, ex_entity_id map_id, void_int *node_ids, void_int *proc_ids,
|
|
- int processor)
|
|
+int ex_put_node_cmap(int exoid, ex_entity_id map_id, const void_int *node_ids,
|
|
+ const void_int *proc_ids, int processor)
|
|
{
|
|
int map_idx, varid, dimid, status;
|
|
size_t start[1], count[1], ret_val;
|
|
@@ -42,7 +42,7 @@ int ex_put_node_cmap(int exoid, ex_entity_id map_id, void_int *node_ids, void_in
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -56,7 +56,7 @@ int ex_put_node_cmap(int exoid, ex_entity_id map_id, void_int *node_ids, void_in
|
|
}
|
|
|
|
/* Get the index for this map_id */
|
|
- if ((map_idx = ne__id_lkup(exoid, VAR_N_COMM_IDS, varidx, map_id)) == -1) {
|
|
+ if ((map_idx = nei_id_lkup(exoid, VAR_N_COMM_IDS, varidx, map_id)) == -1) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to find index for variable \"%s\" in file ID %d", VAR_N_COMM_IDS,
|
|
exoid);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_ns_param_global.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_ns_param_global.c
|
|
index 8cb690febb..899a7359d7 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_ns_param_global.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_ns_param_global.c
|
|
@@ -29,7 +29,8 @@
|
|
#include <exodusII.h>
|
|
#include <exodusII_int.h>
|
|
|
|
-int ex_put_ns_param_global(int exoid, void_int *global_ids, void_int *node_cnts, void_int *df_cnts)
|
|
+int ex_put_ns_param_global(int exoid, const void_int *global_ids, const void_int *node_cnts,
|
|
+ const void_int *df_cnts)
|
|
{
|
|
int varid, status;
|
|
|
|
@@ -37,7 +38,7 @@ int ex_put_ns_param_global(int exoid, void_int *global_ids, void_int *node_cnts,
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_num_map.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_num_map.c
|
|
index 6f55f0de53..85a5c9d73f 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_num_map.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_num_map.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2023 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -37,25 +37,19 @@
|
|
|
|
int ex_put_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, const void_int *map)
|
|
{
|
|
- int dimid, varid;
|
|
- int map_int_type;
|
|
- size_t start[1];
|
|
- int ldum;
|
|
- int num_maps;
|
|
- size_t num_entries;
|
|
- int cur_num_maps;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- const char *dnumentries;
|
|
- const char *dnummaps;
|
|
- const char *vmapids;
|
|
- const char *vmap;
|
|
- int status;
|
|
+ size_t start[1];
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ int status;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ const char *dnumentries;
|
|
+ const char *dnummaps;
|
|
+ const char *vmapids;
|
|
+
|
|
switch (map_type) {
|
|
case EX_NODE_MAP:
|
|
dnumentries = DIM_NUM_NODES;
|
|
@@ -85,6 +79,7 @@ int ex_put_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, cons
|
|
}
|
|
|
|
/* Make sure the file contains entries */
|
|
+ int dimid;
|
|
if (nc_inq_dimid(exoid, dnumentries, &dimid) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
}
|
|
@@ -97,44 +92,60 @@ int ex_put_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, cons
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ /* If the `map_id` is negative, then that specifies a specific location for that map */
|
|
+ bool overwrite_map = false;
|
|
+ bool id_is_index = map_id < 0;
|
|
+ if (id_is_index) {
|
|
+ map_id = -map_id;
|
|
+ }
|
|
+
|
|
/* Check for duplicate map id entry */
|
|
- status = ex__id_lkup(exoid, map_type, map_id);
|
|
+ status = exi_id_lkup(exoid, map_type, map_id);
|
|
if (status != -EX_LOOKUPFAIL) { /* found the map id */
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: %s %" PRId64 " already defined in file id %d",
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "Warning: %s %" PRId64 " already defined in file id %d",
|
|
ex_name_of_object(map_type), map_id, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
+ id_is_index = true;
|
|
+ overwrite_map = true;
|
|
}
|
|
|
|
/* Get number of maps initialized for this file */
|
|
+ size_t num_entries;
|
|
if ((status = nc_inq_dimlen(exoid, dimid, &num_entries)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of %ss in file id %d",
|
|
ex_name_of_object(map_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- num_maps = num_entries;
|
|
|
|
/* Keep track of the total number of maps defined using a counter stored
|
|
in a linked list keyed by exoid.
|
|
- NOTE: ex__get_file_item is used to find the number of maps
|
|
+ NOTE: exi_get_file_item is used to find the number of maps
|
|
for a specific file and returns that value.
|
|
*/
|
|
- cur_num_maps = ex__get_file_item(exoid, ex__get_counter_list(map_type));
|
|
- if (cur_num_maps >= num_maps) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: exceeded number of %ss (%d) specified in file id %d",
|
|
- ex_name_of_object(map_type), num_maps, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
+ int cur_num_maps = exi_get_file_item(exoid, exi_get_counter_list(map_type));
|
|
+ if (!overwrite_map) {
|
|
+ int num_maps = num_entries;
|
|
+ if (cur_num_maps >= num_maps) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: exceeded number of %ss (%d) specified in file id %d",
|
|
+ ex_name_of_object(map_type), num_maps, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ /* NOTE: exi_inc_file_item is used to find the number of maps
|
|
+ for a specific file and returns that value incremented. */
|
|
+ cur_num_maps = exi_inc_file_item(exoid, exi_get_counter_list(map_type));
|
|
}
|
|
|
|
- /* NOTE: ex__inc_file_item is used to find the number of maps
|
|
- for a specific file and returns that value incremented. */
|
|
- cur_num_maps = ex__inc_file_item(exoid, ex__get_counter_list(map_type));
|
|
+ if (id_is_index) {
|
|
+ cur_num_maps = map_id - 1;
|
|
+ }
|
|
|
|
/* write out information to previously defined variable */
|
|
|
|
/* first get id of variable */
|
|
+ int varid;
|
|
if ((status = nc_inq_varid(exoid, vmapids, &varid)) == -1) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s ids in file id %d",
|
|
ex_name_of_object(map_type), exoid);
|
|
@@ -145,7 +156,7 @@ int ex_put_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, cons
|
|
/* then, write out map id */
|
|
start[0] = cur_num_maps;
|
|
|
|
- ldum = (int)map_id;
|
|
+ int ldum = (int)map_id;
|
|
if ((status = nc_put_var1_int(exoid, varid, start, &ldum)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to store %s id %" PRId64 " in file id %d",
|
|
ex_name_of_object(map_type), map_id, exoid);
|
|
@@ -153,6 +164,7 @@ int ex_put_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, cons
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ const char *vmap;
|
|
switch (map_type) {
|
|
case EX_NODE_MAP: vmap = VAR_NODE_MAP(cur_num_maps + 1); break;
|
|
case EX_EDGE_MAP: vmap = VAR_EDGE_MAP(cur_num_maps + 1); break;
|
|
@@ -166,7 +178,7 @@ int ex_put_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, cons
|
|
}
|
|
|
|
/* locate variable array in which to store the map */
|
|
- if ((status = nc_inq_varid(exoid, vmap, &varid)) != NC_NOERR) {
|
|
+ if (nc_inq_varid(exoid, vmap, &varid) != NC_NOERR) {
|
|
int dims[2];
|
|
|
|
/* determine number of entries */
|
|
@@ -178,14 +190,14 @@ int ex_put_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, cons
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Check type to be used for maps... */
|
|
- map_int_type = NC_INT;
|
|
+ int map_int_type = NC_INT;
|
|
if (ex_int64_status(exoid) & EX_MAPS_INT64_DB) {
|
|
map_int_type = NC_INT64;
|
|
}
|
|
@@ -195,10 +207,12 @@ int ex_put_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, cons
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define map %s in file id %d", vmap, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) { /* exit define mode */
|
|
- varid = -1; /* force early exit */
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) { /* exit define mode */
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ varid = -1; /* force early exit */
|
|
}
|
|
|
|
if (varid == -1) { /* we couldn't define variable and have prepared error message. */
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_one_attr.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_one_attr.c
|
|
index b519f25c95..962bea8eed 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_one_attr.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_one_attr.c
|
|
@@ -23,7 +23,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__get_dimension, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_get_dimension, etc
|
|
|
|
/*!
|
|
* writes the specified attribute for a block
|
|
@@ -48,13 +48,13 @@ int ex_put_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int
|
|
const char *vattrbname;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Determine index of obj_id in id array */
|
|
if (obj_type != EX_NODAL) {
|
|
- obj_id_ndx = ex__id_lkup(exoid, obj_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, obj_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
if (status != 0) {
|
|
@@ -128,12 +128,12 @@ int ex_put_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int
|
|
}
|
|
|
|
/* inquire id's of previously defined dimensions */
|
|
- if (ex__get_dimension(exoid, dnumobjent, "entries", &num_entries_this_obj, &temp, __func__) !=
|
|
+ if (exi_get_dimension(exoid, dnumobjent, "entries", &num_entries_this_obj, &temp, __func__) !=
|
|
NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ex__get_dimension(exoid, dnumobjatt, "attributes", &num_attr, &temp, __func__) != NC_NOERR) {
|
|
+ if (exi_get_dimension(exoid, dnumobjatt, "attributes", &num_attr, &temp, __func__) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -165,7 +165,7 @@ int ex_put_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int
|
|
stride[0] = 1;
|
|
stride[1] = num_attr;
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_vars_float(exoid, attrid, start, count, stride, attrib);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_attr.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_attr.c
|
|
index 1b42173049..079c56e4d3 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_attr.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_attr.c
|
|
@@ -24,7 +24,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
-#include "exodusII_int.h" // for ex__check_valid_file_id, etc
|
|
+#include "exodusII_int.h" // for exi_check_valid_file_id, etc
|
|
|
|
/*!
|
|
* writes the attributes for an edge/face/element block
|
|
@@ -48,13 +48,13 @@ int ex_put_partial_attr(int exoid, ex_entity_type blk_type, ex_entity_id blk_id,
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
if (blk_type != EX_NODAL) {
|
|
/* Determine index of blk_id in VAR_ID_EL_BLK array */
|
|
- blk_id_ndx = ex__id_lkup(exoid, blk_type, blk_id);
|
|
+ blk_id_ndx = exi_id_lkup(exoid, blk_type, blk_id);
|
|
if (blk_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -151,7 +151,7 @@ int ex_put_partial_attr(int exoid, ex_entity_type blk_type, ex_entity_id blk_id,
|
|
start[0] = 0;
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_vara_float(exoid, attrid, start, count, attrib);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_conn.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_conn.c
|
|
index 75456f2199..5bbc8cf12d 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_conn.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_conn.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -28,7 +28,7 @@
|
|
*
|
|
*/
|
|
#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
-#include "exodusII_int.h" // for ex__check_valid_file_id, etc
|
|
+#include "exodusII_int.h" // for exi_check_valid_file_id, etc
|
|
|
|
/*
|
|
* reads the connectivity array for an element block
|
|
@@ -75,13 +75,13 @@ int ex_put_partial_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id,
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
}
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Locate index of element block id in VAR_ID_EL_BLK array */
|
|
|
|
- blk_id_ndx = ex__id_lkup(exoid, blk_type, blk_id);
|
|
+ blk_id_ndx = exi_id_lkup(exoid, blk_type, blk_id);
|
|
if (blk_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -105,19 +105,19 @@ int ex_put_partial_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id,
|
|
switch (blk_type) {
|
|
case EX_EDGE_BLOCK:
|
|
dnumnodent = DIM_NUM_NOD_PER_ED(blk_id_ndx);
|
|
- dnumedgent = 0;
|
|
- dnumfacent = 0;
|
|
+ dnumedgent = NULL;
|
|
+ dnumfacent = NULL;
|
|
vnodeconn = VAR_EBCONN(blk_id_ndx);
|
|
- vedgeconn = 0;
|
|
- vfaceconn = 0;
|
|
+ vedgeconn = NULL;
|
|
+ vfaceconn = NULL;
|
|
break;
|
|
case EX_FACE_BLOCK:
|
|
dnumnodent = DIM_NUM_NOD_PER_FA(blk_id_ndx);
|
|
- dnumedgent = 0;
|
|
- dnumfacent = 0;
|
|
+ dnumedgent = NULL;
|
|
+ dnumfacent = NULL;
|
|
vnodeconn = VAR_FBCONN(blk_id_ndx);
|
|
- vedgeconn = 0;
|
|
- vfaceconn = 0;
|
|
+ vedgeconn = NULL;
|
|
+ vfaceconn = NULL;
|
|
break;
|
|
case EX_ELEM_BLOCK:
|
|
dnumnodent = DIM_NUM_NOD_PER_EL(blk_id_ndx);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_coord.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_coord.c
|
|
index e73663e703..58a34cffd6 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_coord.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_coord.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -28,7 +28,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__comp_ws, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_comp_ws, etc
|
|
|
|
/*!
|
|
* writes the coordinates of some of the nodes in the model
|
|
@@ -55,13 +55,13 @@ int ex_put_partial_coord(int exoid, int64_t start_node_num, int64_t num_nodes, c
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* inquire id's of previously defined dimensions */
|
|
|
|
- if ((status = nc_inq_dimid(exoid, DIM_NUM_NODES, &numnoddim)) != NC_NOERR) {
|
|
+ if (nc_inq_dimid(exoid, DIM_NUM_NODES, &numnoddim) != NC_NOERR) {
|
|
/* If not found, then this file is storing 0 nodes.
|
|
Return immediately */
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
@@ -140,7 +140,7 @@ int ex_put_partial_coord(int exoid, int64_t start_node_num, int64_t num_nodes, c
|
|
/* write out the coordinates */
|
|
for (i = 0; i < num_dim; i++) {
|
|
const void *coor = NULL;
|
|
- char * which = NULL;
|
|
+ char *which = NULL;
|
|
|
|
start[0] = start_node_num;
|
|
count[0] = num_nodes;
|
|
@@ -165,7 +165,7 @@ int ex_put_partial_coord(int exoid, int64_t start_node_num, int64_t num_nodes, c
|
|
}
|
|
|
|
if (coor != NULL && coordid != -1) {
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_vara_float(exoid, coordid, start, count, coor);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_coord_component.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_coord_component.c
|
|
index 21daa55094..83e8b7f030 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_coord_component.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_coord_component.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__comp_ws, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_comp_ws, etc
|
|
|
|
/*!
|
|
* writes the coordinates of some of the nodes in the model for the specified component
|
|
@@ -22,30 +22,26 @@
|
|
int ex_put_partial_coord_component(int exoid, int64_t start_node_num, int64_t num_nodes,
|
|
int component, const void *coor)
|
|
{
|
|
- int status;
|
|
- int coordid;
|
|
-
|
|
- int numnoddim, ndimdim;
|
|
- int64_t num_nod;
|
|
- size_t num_dim, start[2], count[2];
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* inquire id's of previously defined dimensions */
|
|
|
|
- if ((status = nc_inq_dimid(exoid, DIM_NUM_NODES, &numnoddim)) != NC_NOERR) {
|
|
+ int status;
|
|
+ int numnoddim;
|
|
+ if (nc_inq_dimid(exoid, DIM_NUM_NODES, &numnoddim) != NC_NOERR) {
|
|
/* If not found, then this file is storing 0 nodes.
|
|
Return immediately */
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
}
|
|
|
|
+ int64_t num_nod;
|
|
{
|
|
size_t tmp;
|
|
if ((status = nc_inq_dimlen(exoid, numnoddim, &tmp)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: inquire failed to return number of nodes in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -54,14 +50,18 @@ int ex_put_partial_coord_component(int exoid, int64_t start_node_num, int64_t nu
|
|
num_nod = tmp;
|
|
}
|
|
|
|
+ int ndimdim;
|
|
if ((status = nc_inq_dimid(exoid, DIM_NUM_DIM, &ndimdim)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate number of dimensions in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ size_t num_dim;
|
|
if ((status = nc_inq_dimlen(exoid, ndimdim, &num_dim)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get number of dimensions in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -70,6 +70,7 @@ int ex_put_partial_coord_component(int exoid, int64_t start_node_num, int64_t nu
|
|
|
|
--start_node_num;
|
|
if (start_node_num + num_nodes > num_nod) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: start index (%" PRId64 ") + node count (%" PRId64
|
|
") is larger than total number of nodes (%" PRId64 ") in file id %d",
|
|
@@ -78,7 +79,8 @@ int ex_put_partial_coord_component(int exoid, int64_t start_node_num, int64_t nu
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (component > num_dim) {
|
|
+ if (component > (int)num_dim) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: Component (%d) is larger than number of dimensions (%zu) in file id %d",
|
|
component, num_dim, exoid);
|
|
@@ -92,8 +94,8 @@ int ex_put_partial_coord_component(int exoid, int64_t start_node_num, int64_t nu
|
|
char *which = NULL;
|
|
char *comp = NULL;
|
|
|
|
- start[0] = start_node_num;
|
|
- count[0] = num_nodes;
|
|
+ size_t start[] = {start_node_num};
|
|
+ size_t count[] = {num_nodes};
|
|
if (count[0] == 0) {
|
|
start[0] = 0;
|
|
}
|
|
@@ -111,14 +113,16 @@ int ex_put_partial_coord_component(int exoid, int64_t start_node_num, int64_t nu
|
|
comp = VAR_COORD_Z;
|
|
}
|
|
|
|
+ int coordid;
|
|
if ((status = nc_inq_varid(exoid, comp, &coordid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s nodal coordinates in file id %d",
|
|
which, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_vara_float(exoid, coordid, start, count, coor);
|
|
}
|
|
else {
|
|
@@ -126,6 +130,7 @@ int ex_put_partial_coord_component(int exoid, int64_t start_node_num, int64_t nu
|
|
}
|
|
|
|
if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put %s coord array in file id %d", which,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_id_map.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_id_map.c
|
|
index 4f9de67c27..6a97fd8ee0 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_id_map.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_id_map.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -48,11 +48,11 @@ int ex_put_partial_id_map(int exoid, ex_entity_type map_type, int64_t start_enti
|
|
const char *vmap = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (num_entities == 0 && !ex__is_parallel(exoid)) {
|
|
+ if (num_entities == 0 && !exi_is_parallel(exoid)) {
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
}
|
|
|
|
@@ -106,7 +106,7 @@ int ex_put_partial_id_map(int exoid, ex_entity_type map_type, int64_t start_enti
|
|
|
|
/* define the map if it doesn't already exist... */
|
|
if (nc_inq_varid(exoid, vmap, &mapid) != NC_NOERR) {
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -135,10 +135,12 @@ int ex_put_partial_id_map(int exoid, ex_entity_type map_type, int64_t start_enti
|
|
}
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, mapid, 1);
|
|
+ exi_compress_variable(exoid, mapid, 1);
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
@@ -169,6 +171,6 @@ int ex_put_partial_id_map(int exoid, ex_entity_type map_type, int64_t start_enti
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_nodal_var_int.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_nodal_var_int.c
|
|
index d43f74f5f3..83b91fd9e7 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_nodal_var_int.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_nodal_var_int.c
|
|
@@ -26,7 +26,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_WARN, ex__comp_ws, etc
|
|
+#include "exodusII_int.h" // for EX_WARN, exi_comp_ws, etc
|
|
|
|
/*!
|
|
\internal
|
|
@@ -45,7 +45,7 @@
|
|
* \param nodal_var_vals array of nodal variable values
|
|
*/
|
|
|
|
-int ex__put_partial_nodal_var(int exoid, int time_step, int nodal_var_index, int64_t start_node,
|
|
+int exi_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)
|
|
|
|
{
|
|
@@ -55,7 +55,7 @@ int ex__put_partial_nodal_var(int exoid, int time_step, int nodal_var_index, int
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -75,7 +75,7 @@ int ex__put_partial_nodal_var(int exoid, int time_step, int nodal_var_index, int
|
|
start[1] = 0;
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_vara_float(exoid, varid, start, count, nodal_var_vals);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_node_cmap.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_node_cmap.c
|
|
index d4367c92d1..d533b7b61b 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_node_cmap.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_node_cmap.c
|
|
@@ -40,8 +40,8 @@
|
|
*/
|
|
|
|
int ex_put_partial_node_cmap(int exoid, ex_entity_id map_id, int64_t start_entity_num,
|
|
- int64_t num_entities, void_int *node_ids, void_int *proc_ids,
|
|
- int processor)
|
|
+ int64_t num_entities, const void_int *node_ids,
|
|
+ const void_int *proc_ids, int processor)
|
|
{
|
|
int map_idx, varid, dimid, status;
|
|
size_t start[1], count[1], ret_val;
|
|
@@ -52,7 +52,7 @@ int ex_put_partial_node_cmap(int exoid, ex_entity_id map_id, int64_t start_entit
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -66,7 +66,7 @@ int ex_put_partial_node_cmap(int exoid, ex_entity_id map_id, int64_t start_entit
|
|
}
|
|
|
|
/* Get the index for this map_id */
|
|
- if ((map_idx = ne__id_lkup(exoid, VAR_N_COMM_IDS, varidx, map_id)) == -1) {
|
|
+ if ((map_idx = nei_id_lkup(exoid, VAR_N_COMM_IDS, varidx, map_id)) == -1) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to find index for variable \"%s\" in file ID %d", VAR_N_COMM_IDS,
|
|
exoid);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_num_map.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_num_map.c
|
|
index 0374797ef4..e1569edd3d 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_num_map.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_num_map.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2022, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -35,7 +35,7 @@ int ex_put_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_
|
|
int64_t ent_start, int64_t ent_count, const void_int *map)
|
|
{
|
|
int status;
|
|
- int dimid, varid, map_ndx, map_exists;
|
|
+ int dimid, varid, map_exists;
|
|
size_t start[1];
|
|
size_t num_maps, num_mobj, count[1];
|
|
int cur_num_maps;
|
|
@@ -46,7 +46,7 @@ int ex_put_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_
|
|
const char *vmap;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -91,8 +91,14 @@ int ex_put_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+ /* If the `map_id` is negative, then that specifies a specific location for that map */
|
|
+ bool id_is_index = map_id < 0;
|
|
+ if (id_is_index) {
|
|
+ map_id = -map_id;
|
|
+ }
|
|
+
|
|
/* Check for duplicate map id entry */
|
|
- status = ex__id_lkup(exoid, map_type, map_id);
|
|
+ status = exi_id_lkup(exoid, map_type, map_id);
|
|
if (status == -EX_LOOKUPFAIL) { /* did not find the map id */
|
|
map_exists = 0; /* Map is being defined */
|
|
}
|
|
@@ -112,10 +118,10 @@ int ex_put_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_
|
|
|
|
/* Keep track of the total number of maps defined using a
|
|
counter stored in a linked list keyed by exoid. NOTE:
|
|
- ex__get_file_item is used to find the number of element maps for a
|
|
+ exi_get_file_item is used to find the number of element maps for a
|
|
specific file and returns that value.
|
|
*/
|
|
- cur_num_maps = ex__get_file_item(exoid, ex__get_counter_list(map_type));
|
|
+ cur_num_maps = exi_get_file_item(exoid, exi_get_counter_list(map_type));
|
|
if (cur_num_maps >= (int)num_maps) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: exceeded number of %ss (%zu) specified in file id %d",
|
|
@@ -124,12 +130,16 @@ int ex_put_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- /* NOTE: ex__inc_file_item is used to find the number of element maps
|
|
+ /* NOTE: exi_inc_file_item is used to find the number of element maps
|
|
for a specific file and returns that value incremented. */
|
|
- cur_num_maps = ex__inc_file_item(exoid, ex__get_counter_list(map_type));
|
|
+ cur_num_maps = exi_inc_file_item(exoid, exi_get_counter_list(map_type));
|
|
+
|
|
+ if (id_is_index) {
|
|
+ cur_num_maps = map_id - 1;
|
|
+ }
|
|
}
|
|
else {
|
|
- map_ndx = ex__id_lkup(exoid, map_type, map_id);
|
|
+ int map_ndx = exi_id_lkup(exoid, map_type, map_id);
|
|
cur_num_maps = map_ndx - 1;
|
|
}
|
|
|
|
@@ -149,7 +159,11 @@ int ex_put_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_
|
|
}
|
|
|
|
/* Check input parameters for a valid range of numbers */
|
|
- if (ent_start <= 0 || ent_start > num_mobj) {
|
|
+ if (ent_count == 0) {
|
|
+ ent_start = 0;
|
|
+ }
|
|
+
|
|
+ if (ent_start < 0 || ent_start > (int64_t)num_mobj) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: start count is invalid in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -159,7 +173,7 @@ int ex_put_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- if (ent_start + ent_count - 1 > num_mobj) {
|
|
+ if (ent_count > 0 && (ent_start + ent_count - 1 > (int64_t)num_mobj)) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: start+count-1 is larger than mesh object count in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_one_attr.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_one_attr.c
|
|
index 903c03c273..20febe5484 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_one_attr.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_one_attr.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -23,7 +23,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__get_dimension, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_get_dimension, etc
|
|
|
|
/*!
|
|
* writes the specified attribute for a block
|
|
@@ -51,13 +51,13 @@ int ex_put_partial_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj
|
|
const char *vattrbname;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Determine index of obj_id in id array */
|
|
if (obj_type != EX_NODAL) {
|
|
- obj_id_ndx = ex__id_lkup(exoid, obj_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, obj_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -132,12 +132,12 @@ int ex_put_partial_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj
|
|
}
|
|
|
|
/* inquire id's of previously defined dimensions */
|
|
- if (ex__get_dimension(exoid, dnumobjent, "entries", &num_entries_this_obj, &temp, __func__) !=
|
|
+ if (exi_get_dimension(exoid, dnumobjent, "entries", &num_entries_this_obj, &temp, __func__) !=
|
|
NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (start_num + num_ent - 1 > num_entries_this_obj) {
|
|
+ if (start_num + num_ent - 1 > (int64_t)num_entries_this_obj) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: start index (%" PRId64 ") + count (%" PRId64
|
|
") is larger than total number of entities (%zu) in file id %d",
|
|
@@ -146,7 +146,7 @@ int ex_put_partial_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- if (ex__get_dimension(exoid, dnumobjatt, "attributes", &num_attr, &temp, __func__) != NC_NOERR) {
|
|
+ if (exi_get_dimension(exoid, dnumobjatt, "attributes", &num_attr, &temp, __func__) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -182,7 +182,7 @@ int ex_put_partial_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj
|
|
start[0] = 0;
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_vars_float(exoid, attrid, start, count, stride, attrib);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_set.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_set.c
|
|
index 32ae4cbcdc..ceb274eaab 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_set.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_set.c
|
|
@@ -25,7 +25,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
-#include "exodusII_int.h" // for ex__is_parallel, etc
|
|
+#include "exodusII_int.h" // for exi_is_parallel, etc
|
|
|
|
/*!
|
|
* writes the set entry list and set extra list for a single set
|
|
@@ -48,17 +48,17 @@ int ex_put_partial_set(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
int entry_list_id, extra_list_id, set_id_ndx;
|
|
size_t start[1], count[1];
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- char * entryptr = NULL;
|
|
- char * extraptr = NULL;
|
|
+ char *entryptr = NULL;
|
|
+ char *extraptr = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* first check if any sets are specified */
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: no %ss defined in file id %d",
|
|
ex_name_of_object(set_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -66,7 +66,7 @@ int ex_put_partial_set(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
}
|
|
|
|
/* Lookup index of set id in VAR_*S_IDS array */
|
|
- set_id_ndx = ex__id_lkup(exoid, set_type, set_id);
|
|
+ set_id_ndx = exi_id_lkup(exoid, set_type, set_id);
|
|
if (set_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -116,7 +116,7 @@ int ex_put_partial_set(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
}
|
|
|
|
/* write out the entry list and extra list arrays */
|
|
- if (set_entry_list != NULL || ex__is_parallel(exoid)) {
|
|
+ if (set_entry_list != NULL || exi_is_parallel(exoid)) {
|
|
start[0] = offset - 1;
|
|
count[0] = num_to_put;
|
|
if (count[0] == 0) {
|
|
@@ -140,7 +140,7 @@ int ex_put_partial_set(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
}
|
|
|
|
/* only do for edge, face and side sets */
|
|
- if (extraptr && (set_extra_list != NULL || ex__is_parallel(exoid))) {
|
|
+ if (extraptr && (set_extra_list != NULL || exi_is_parallel(exoid))) {
|
|
if ((status = nc_inq_varid(exoid, extraptr, &extra_list_id)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to locate extra list for %s %" PRId64 " in file id %d",
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_set_dist_fact.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_set_dist_fact.c
|
|
index 910fe76314..d2252c3700 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_set_dist_fact.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_set_dist_fact.c
|
|
@@ -27,7 +27,7 @@ write
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
-#include "exodusII_int.h" // for ex__check_valid_file_id, etc
|
|
+#include "exodusII_int.h" // for exi_check_valid_file_id, etc
|
|
|
|
/*!
|
|
* writes the partial distribution factors for a single set
|
|
@@ -47,16 +47,16 @@ int ex_put_partial_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_i
|
|
int dist_id;
|
|
size_t start[1], count[1];
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- char * factptr = NULL;
|
|
+ char *factptr = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* first check if any sets are specified */
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: no %ss specified in file id %d",
|
|
ex_name_of_object(set_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -64,7 +64,7 @@ int ex_put_partial_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_i
|
|
}
|
|
|
|
/* Lookup index of set id in VAR_*S_IDS array */
|
|
- set_id_ndx = ex__id_lkup(exoid, set_type, set_id);
|
|
+ set_id_ndx = exi_id_lkup(exoid, set_type, set_id);
|
|
if (set_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -129,7 +129,7 @@ int ex_put_partial_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_i
|
|
}
|
|
|
|
/* write out the distribution factors array */
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_vara_float(exoid, dist_id, start, count, set_dist_fact);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_var.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_var.c
|
|
index a31f08c79e..a0b6066a02 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_var.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_partial_var.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -7,9 +7,9 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__get_dimension, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_get_dimension, etc
|
|
|
|
-static int ex__look_up_var(int exoid, ex_entity_type var_type, int var_index, ex_entity_id obj_id,
|
|
+static int exi_look_up_var(int exoid, ex_entity_type var_type, int var_index, ex_entity_id obj_id,
|
|
const char *VOBJID, const char *VOBJTAB, const char *DNUMOBJ,
|
|
const char *DNUMOBJVAR, int *varid)
|
|
{
|
|
@@ -31,7 +31,7 @@ static int ex__look_up_var(int exoid, ex_entity_type var_type, int var_index, ex
|
|
"ERROR: failed to locate %s id %" PRId64 " in %s array in file id %d",
|
|
ex_name_of_object(var_type), obj_id, VOBJID, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
obj_id_ndx = obj_id;
|
|
}
|
|
@@ -42,13 +42,13 @@ static int ex__look_up_var(int exoid, ex_entity_type var_type, int var_index, ex
|
|
"ERROR: failed to locate %s id %" PRId64 " in %s array in file id %d",
|
|
ex_name_of_object(var_type), obj_id, VOBJID, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
obj_id_ndx = obj_id;
|
|
}
|
|
else {
|
|
/* Determine index of obj_id in VOBJID array */
|
|
- obj_id_ndx = ex__id_lkup(exoid, var_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, var_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -58,34 +58,34 @@ static int ex__look_up_var(int exoid, ex_entity_type var_type, int var_index, ex
|
|
"Warning: no variables allowed for NULL block %" PRId64 " in file id %d", obj_id,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_NULLENTITY);
|
|
- return (EX_WARN);
|
|
+ return EX_WARN;
|
|
}
|
|
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to locate %s id %" PRId64 " in %s array in file id %d",
|
|
ex_name_of_object(var_type), obj_id, VOBJID, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
}
|
|
|
|
- if ((status = nc_inq_varid(exoid, ex__name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
+ if ((status = nc_inq_varid(exoid, exi_name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
varid)) != NC_NOERR) {
|
|
if (status == NC_ENOTVAR) { /* variable doesn't exist, create it! */
|
|
/* check for the existence of an TNAME variable truth table */
|
|
if (nc_inq_varid(exoid, VOBJTAB, varid) == NC_NOERR) {
|
|
/* find out number of TNAMEs and TNAME variables */
|
|
- status = ex__get_dimension(exoid, DNUMOBJ, ex_name_of_object(var_type), &num_obj, &dimid,
|
|
+ status = exi_get_dimension(exoid, DNUMOBJ, ex_name_of_object(var_type), &num_obj, &dimid,
|
|
__func__);
|
|
if (status != NC_NOERR) {
|
|
- return (status);
|
|
+ return status;
|
|
}
|
|
|
|
- status = ex__get_dimension(exoid, DNUMOBJVAR, ex_name_of_object(var_type), &num_obj_var,
|
|
+ status = exi_get_dimension(exoid, DNUMOBJVAR, ex_name_of_object(var_type), &num_obj_var,
|
|
&dimid, __func__);
|
|
if (status != NC_NOERR) {
|
|
- return (status);
|
|
+ return status;
|
|
}
|
|
|
|
if (!(obj_var_truth_tab = malloc(num_obj * num_obj_var * sizeof(int)))) {
|
|
@@ -94,7 +94,7 @@ static int ex__look_up_var(int exoid, ex_entity_type var_type, int var_index, ex
|
|
"truth table in file id %d",
|
|
ex_name_of_object(var_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* read in the TNAME variable truth table */
|
|
@@ -102,7 +102,7 @@ static int ex__look_up_var(int exoid, ex_entity_type var_type, int var_index, ex
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get truth table from file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if (obj_var_truth_tab[num_obj_var * (obj_id_ndx - 1) + var_index - 1] == 0L) {
|
|
@@ -111,7 +111,7 @@ static int ex__look_up_var(int exoid, ex_entity_type var_type, int var_index, ex
|
|
errmsg, MAX_ERR_LENGTH, "ERROR: Invalid %s variable %d, %s %" PRId64 " in file id %d",
|
|
ex_name_of_object(var_type), var_index, ex_name_of_object(var_type), obj_id, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
free(obj_var_truth_tab);
|
|
}
|
|
@@ -123,47 +123,47 @@ static int ex__look_up_var(int exoid, ex_entity_type var_type, int var_index, ex
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
|
|
- ex__get_dimension(exoid, ex__dim_num_entries_in_object(var_type, obj_id_ndx),
|
|
+ exi_get_dimension(exoid, exi_dim_num_entries_in_object(var_type, obj_id_ndx),
|
|
ex_name_of_object(var_type), &num_entity, &numobjdim, __func__);
|
|
|
|
/* variable doesn't exist so put file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* define netCDF variable to store TNAME variable values */
|
|
dims[0] = time_dim;
|
|
dims[1] = numobjdim;
|
|
- if ((status = nc_def_var(exoid, ex__name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
+ if ((status = nc_def_var(exoid, exi_name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
nc_flt_code(exoid), 2, dims, varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define %s variable %d in file id %d",
|
|
ex_name_of_object(var_type), var_index, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret;
|
|
}
|
|
- ex__compress_variable(exoid, *varid, 2);
|
|
+ exi_compress_variable(exoid, *varid, 2);
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
else {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s variable %s in file id %d",
|
|
- ex_name_of_object(var_type), ex__name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
+ ex_name_of_object(var_type), exi_name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
- return (EX_FATAL);
|
|
+ exi_leavedef(exoid, __func__);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/*!
|
|
@@ -192,7 +192,7 @@ int ex_put_partial_var(int exoid, int time_step, ex_entity_type var_type, int va
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -222,47 +222,47 @@ int ex_put_partial_var(int exoid, int time_step, ex_entity_type var_type, int va
|
|
break;
|
|
case EX_NODAL:
|
|
status =
|
|
- ex__put_partial_nodal_var(exoid, time_step, var_index, start_index, num_entities, var_vals);
|
|
+ exi_put_partial_nodal_var(exoid, time_step, var_index, start_index, num_entities, var_vals);
|
|
EX_FUNC_LEAVE(status);
|
|
break;
|
|
case EX_ASSEMBLY:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, "", VAR_ASSEMBLY_TAB,
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, "", VAR_ASSEMBLY_TAB,
|
|
DIM_NUM_ASSEMBLY, DIM_NUM_ASSEMBLY_VAR, &varid);
|
|
break;
|
|
case EX_BLOB:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, "", VAR_BLOB_TAB, DIM_NUM_BLOB,
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, "", VAR_BLOB_TAB, DIM_NUM_BLOB,
|
|
DIM_NUM_BLOB_VAR, &varid);
|
|
break;
|
|
case EX_EDGE_BLOCK:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_ID_ED_BLK, VAR_EBLK_TAB,
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_ID_ED_BLK, VAR_EBLK_TAB,
|
|
DIM_NUM_ED_BLK, DIM_NUM_EDG_VAR, &varid);
|
|
break;
|
|
case EX_FACE_BLOCK:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_ID_FA_BLK, VAR_FBLK_TAB,
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_ID_FA_BLK, VAR_FBLK_TAB,
|
|
DIM_NUM_FA_BLK, DIM_NUM_FAC_VAR, &varid);
|
|
break;
|
|
case EX_ELEM_BLOCK:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_ID_EL_BLK, VAR_ELEM_TAB,
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_ID_EL_BLK, VAR_ELEM_TAB,
|
|
DIM_NUM_EL_BLK, DIM_NUM_ELE_VAR, &varid);
|
|
break;
|
|
case EX_NODE_SET:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_NS_IDS, VAR_NSET_TAB,
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_NS_IDS, VAR_NSET_TAB,
|
|
DIM_NUM_NS, DIM_NUM_NSET_VAR, &varid);
|
|
break;
|
|
case EX_EDGE_SET:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_ES_IDS, VAR_ESET_TAB,
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_ES_IDS, VAR_ESET_TAB,
|
|
DIM_NUM_ES, DIM_NUM_ESET_VAR, &varid);
|
|
break;
|
|
case EX_FACE_SET:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_FS_IDS, VAR_FSET_TAB,
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_FS_IDS, VAR_FSET_TAB,
|
|
DIM_NUM_FS, DIM_NUM_FSET_VAR, &varid);
|
|
break;
|
|
case EX_SIDE_SET:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_SS_IDS, VAR_SSET_TAB,
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_SS_IDS, VAR_SSET_TAB,
|
|
DIM_NUM_SS, DIM_NUM_SSET_VAR, &varid);
|
|
break;
|
|
case EX_ELEM_SET:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_ELS_IDS, VAR_ELSET_TAB,
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_ELS_IDS, VAR_ELSET_TAB,
|
|
DIM_NUM_ELS, DIM_NUM_ELSET_VAR, &varid);
|
|
break;
|
|
default:
|
|
@@ -296,7 +296,7 @@ int ex_put_partial_var(int exoid, int time_step, ex_entity_type var_type, int va
|
|
start[1] = 0;
|
|
}
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_vara_float(exoid, varid, start, count, var_vals);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_processor_elem_maps.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_processor_elem_maps.c
|
|
index 8d170ed446..8d6437f1f8 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_processor_elem_maps.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_processor_elem_maps.c
|
|
@@ -26,7 +26,8 @@
|
|
#include <exodusII.h> // for ex_err, etc
|
|
#include <exodusII_int.h> // for EX_FATAL, DIM_NUM_BOR_ELEMS, etc
|
|
|
|
-int ex_put_processor_elem_maps(int exoid, void_int *elem_mapi, void_int *elem_mapb, int processor)
|
|
+int ex_put_processor_elem_maps(int exoid, const void_int *elem_mapi, const void_int *elem_mapb,
|
|
+ int processor)
|
|
{
|
|
char ftype[2];
|
|
int status, dimid, varid;
|
|
@@ -38,12 +39,12 @@ int ex_put_processor_elem_maps(int exoid, void_int *elem_mapi, void_int *elem_ma
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Get the file type */
|
|
- if (ex__get_file_type(exoid, ftype) != EX_NOERR) {
|
|
+ if (exi_get_file_type(exoid, ftype) != EX_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unable to find file type for file ID %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_processor_node_maps.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_processor_node_maps.c
|
|
index 0fa313742c..10e427ae83 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_processor_node_maps.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_processor_node_maps.c
|
|
@@ -26,8 +26,8 @@
|
|
#include <exodusII.h> // for ex_err, etc
|
|
#include <exodusII_int.h> // for EX_FATAL, DIM_NUM_BOR_NODES, etc
|
|
|
|
-int ex_put_processor_node_maps(int exoid, void_int *node_mapi, void_int *node_mapb,
|
|
- void_int *node_mape, int proc_id)
|
|
+int ex_put_processor_node_maps(int exoid, const void_int *node_mapi, const void_int *node_mapb,
|
|
+ const void_int *node_mape, int proc_id)
|
|
{
|
|
int status, varid, dimid;
|
|
char ftype[2];
|
|
@@ -39,12 +39,12 @@ int ex_put_processor_node_maps(int exoid, void_int *node_mapi, void_int *node_ma
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Get the file type */
|
|
- if (ex__get_file_type(exoid, ftype) != EX_NOERR) {
|
|
+ if (exi_get_file_type(exoid, ftype) != EX_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unable to find file type for file ID %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_prop.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_prop.c
|
|
index 2b661d3142..9f6ed4b779 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_prop.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_prop.c
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__id_lkup, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_id_lkup, etc
|
|
#include <stdbool.h>
|
|
|
|
/*!
|
|
@@ -85,15 +85,15 @@ int ex_put_prop(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, const c
|
|
int int_type;
|
|
size_t start[1];
|
|
size_t prop_name_len, name_length;
|
|
- char * name;
|
|
+ char *name;
|
|
char tmpstr[MAX_STR_LENGTH + 1];
|
|
- char * dim_name;
|
|
+ char *dim_name;
|
|
long long vals[1];
|
|
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -152,7 +152,7 @@ int ex_put_prop(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, const c
|
|
name_length = ex_inquire_int(exoid, EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH) + 1;
|
|
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -243,7 +243,8 @@ int ex_put_prop(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, const c
|
|
vals[0] = 0; /* fill value */
|
|
/* create attribute to cause variable to fill with zeros per routine spec
|
|
*/
|
|
- if ((status = nc_put_att_longlong(exoid, propid, _FillValue, int_type, 1, vals)) != NC_NOERR) {
|
|
+ if ((status = nc_put_att_longlong(exoid, propid, NC_FillValue, int_type, 1, vals)) !=
|
|
+ NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to create property name fill attribute in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -269,10 +270,10 @@ int ex_put_prop(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, const c
|
|
goto error_ret; /* Exit define mode and return */
|
|
}
|
|
|
|
- ex__update_max_name_length(exoid, prop_name_len - 1);
|
|
+ exi_update_max_name_length(exoid, prop_name_len - 1);
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -280,12 +281,12 @@ int ex_put_prop(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, const c
|
|
}
|
|
|
|
/* find index into property array using obj_id; put value in property */
|
|
- /* array at proper index; ex__id_lkup returns an index that is 1-based,*/
|
|
+ /* array at proper index; exi_id_lkup returns an index that is 1-based,*/
|
|
/* but netcdf expects 0-based arrays so subtract 1 */
|
|
|
|
/* special case: property name ID - check for duplicate ID assignment */
|
|
if (strcmp("ID", prop_name) == 0) {
|
|
- int indx = ex__id_lkup(exoid, obj_type, value);
|
|
+ int indx = exi_id_lkup(exoid, obj_type, value);
|
|
if (indx != -EX_LOOKUPFAIL) { /* found the id */
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"Warning: attempt to assign duplicate %s ID %" PRId64 " in file id %d",
|
|
@@ -295,7 +296,7 @@ int ex_put_prop(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, const c
|
|
}
|
|
}
|
|
|
|
- status = ex__id_lkup(exoid, obj_type, obj_id);
|
|
+ status = exi_id_lkup(exoid, obj_type, obj_id);
|
|
if (status > 0) {
|
|
start[0] = status - 1;
|
|
}
|
|
@@ -334,6 +335,6 @@ int ex_put_prop(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, const c
|
|
error_ret:
|
|
nc_set_fill(exoid, oldfill, &temp); /* default: nofill */
|
|
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_prop_array.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_prop_array.c
|
|
index 3c79911f2e..c49cedcc53 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_prop_array.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_prop_array.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -77,13 +77,13 @@ int ex_put_prop_array(int exoid, ex_entity_type obj_type, const char *prop_name,
|
|
bool found = false;
|
|
int int_type;
|
|
size_t num_obj;
|
|
- char * name;
|
|
+ char *name;
|
|
char tmpstr[MAX_STR_LENGTH + 1];
|
|
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -92,7 +92,7 @@ int ex_put_prop_array(int exoid, ex_entity_type obj_type, const char *prop_name,
|
|
num_props = ex_get_num_props(exoid, obj_type);
|
|
|
|
/* inquire id of previously defined dimension (number of objects) */
|
|
- status = ex__get_dimension(exoid, ex__dim_num_objects(obj_type), ex_name_of_object(obj_type),
|
|
+ status = exi_get_dimension(exoid, exi_dim_num_objects(obj_type), ex_name_of_object(obj_type),
|
|
&num_obj, &dimid, __func__);
|
|
if (status != NC_NOERR) {
|
|
EX_FUNC_LEAVE(status);
|
|
@@ -144,7 +144,7 @@ int ex_put_prop_array(int exoid, ex_entity_type obj_type, const char *prop_name,
|
|
if (!found) {
|
|
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -199,7 +199,9 @@ int ex_put_prop_array(int exoid, ex_entity_type obj_type, const char *prop_name,
|
|
|
|
/* leave define mode */
|
|
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
@@ -223,6 +225,6 @@ int ex_put_prop_array(int exoid, ex_entity_type obj_type, const char *prop_name,
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
nc_set_fill(exoid, oldfill, &temp); /* default: nofill */
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_prop_names.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_prop_names.c
|
|
index 9d2223dc11..5a8816e19e 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_prop_names.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_prop_names.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -100,7 +100,7 @@ int ex_put_prop_names(int exoid, ex_entity_type obj_type, int num_props, char **
|
|
int oldfill, temp;
|
|
int i, propid, dimid, dims[1];
|
|
size_t name_length, prop_name_len;
|
|
- char * name;
|
|
+ char *name;
|
|
long long vals[1];
|
|
size_t max_name_len = 0;
|
|
int int_type = NC_INT;
|
|
@@ -108,7 +108,7 @@ int ex_put_prop_names(int exoid, ex_entity_type obj_type, int num_props, char **
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -120,7 +120,7 @@ int ex_put_prop_names(int exoid, ex_entity_type obj_type, int num_props, char **
|
|
name_length = ex_inquire_int(exoid, EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH) + 1;
|
|
|
|
/* inquire id of previously defined dimension (number of objects) */
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(obj_type), &dimid)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(obj_type), &dimid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate number of %s in file id %d",
|
|
ex_name_of_object(obj_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -130,7 +130,7 @@ int ex_put_prop_names(int exoid, ex_entity_type obj_type, int num_props, char **
|
|
nc_set_fill(exoid, NC_FILL, &oldfill); /* fill with zeros per routine spec */
|
|
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -172,7 +172,8 @@ int ex_put_prop_names(int exoid, ex_entity_type obj_type, int num_props, char **
|
|
|
|
/* create attribute to cause variable to fill with zeros per routine spec
|
|
*/
|
|
- if ((status = nc_put_att_longlong(exoid, propid, _FillValue, int_type, 1, vals)) != NC_NOERR) {
|
|
+ if ((status = nc_put_att_longlong(exoid, propid, NC_FillValue, int_type, 1, vals)) !=
|
|
+ NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to create property name fill attribute in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -204,18 +205,20 @@ int ex_put_prop_names(int exoid, ex_entity_type obj_type, int num_props, char **
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* Update the maximum_name_length attribute on the file. */
|
|
- ex__update_max_name_length(exoid, max_name_len - 1);
|
|
+ exi_update_max_name_length(exoid, max_name_len - 1);
|
|
|
|
nc_set_fill(exoid, oldfill, &temp); /* default: turn off fill */
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_qa.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_qa.c
|
|
index aee0c8c78a..a4efa37936 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_qa.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_qa.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -71,7 +71,7 @@ int ex_put_qa(int exoid, int num_qa_records, char *qa_record[][4])
|
|
EX_FUNC_ENTER();
|
|
int rootid = exoid & EX_FILE_ID_MASK;
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -86,7 +86,7 @@ int ex_put_qa(int exoid, int num_qa_records, char *qa_record[][4])
|
|
if (status != NC_NOERR) {
|
|
|
|
/* put file into define mode */
|
|
- if ((status = nc_redef(rootid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(rootid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode",
|
|
rootid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -140,10 +140,21 @@ int ex_put_qa(int exoid, int num_qa_records, char *qa_record[][4])
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__set_compact_storage(rootid, varid);
|
|
+ /* In parallel, only rank=0 will write the QA records.
|
|
+ * Should be able to take advantage of HDF5 handling identical data on all ranks
|
|
+ * or use the compact storage, but we had issues on some NFS filesystems and some
|
|
+ * compilers/mpi so are doing it this way...
|
|
+ */
|
|
+#if defined(PARALLEL_AWARE_EXODUS)
|
|
+ if (exi_is_parallel(rootid)) {
|
|
+ nc_var_par_access(rootid, varid, NC_INDEPENDENT);
|
|
+ }
|
|
+#endif
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(rootid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(rootid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
}
|
|
@@ -179,22 +190,17 @@ int ex_put_qa(int exoid, int num_qa_records, char *qa_record[][4])
|
|
}
|
|
}
|
|
}
|
|
- else if (ex__is_parallel(rootid)) {
|
|
- /* In case we are in a collective mode, all processors need to call */
|
|
- const char dummy[] = " ";
|
|
- for (i = 0; i < num_qa_records; i++) {
|
|
- for (j = 0; j < 4; j++) {
|
|
- start[0] = start[1] = start[2] = 0;
|
|
- count[0] = count[1] = count[2] = 0;
|
|
- nc_put_vara_text(rootid, varid, start, count, dummy);
|
|
- }
|
|
- }
|
|
+ /* PnetCDF applies setting to entire file, so put back to collective... */
|
|
+#if defined(PARALLEL_AWARE_EXODUS)
|
|
+ if (exi_is_parallel(rootid)) {
|
|
+ nc_var_par_access(rootid, varid, NC_COLLECTIVE);
|
|
}
|
|
+#endif
|
|
}
|
|
EX_FUNC_LEAVE(EX_NOERR);
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(rootid, __func__);
|
|
+ exi_leavedef(rootid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_variable_name.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_variable_name.c
|
|
index 7baacca09d..bf823cd794 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_variable_name.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_variable_name.c
|
|
@@ -46,7 +46,7 @@ int ex_put_reduction_variable_name(int exoid, ex_entity_type obj_type, int var_n
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -76,7 +76,7 @@ int ex_put_reduction_variable_name(int exoid, ex_entity_type obj_type, int var_n
|
|
}
|
|
|
|
/* write EXODUS variable name */
|
|
- status = ex__put_name(exoid, varid, var_num - 1, var_name, obj_type, "variable", __func__);
|
|
+ status = exi_put_name(exoid, varid, var_num - 1, var_name, obj_type, "variable", __func__);
|
|
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_variable_names.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_variable_names.c
|
|
index 318981a8ea..ca17283ca8 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_variable_names.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_variable_names.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -29,9 +29,8 @@
|
|
static int ex_put_var_names_int(int exoid, ex_entity_type obj_type, int num_vars, char *tname,
|
|
char *dnumvar, char *vnames, int *varid)
|
|
{
|
|
- int status;
|
|
- int dimid;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
+ int status;
|
|
+ int dimid;
|
|
|
|
if ((status = nc_inq_dimid(exoid, dnumvar, &dimid)) != NC_NOERR) {
|
|
if (status != NC_NOERR) {
|
|
@@ -44,18 +43,20 @@ static int ex_put_var_names_int(int exoid, ex_entity_type obj_type, int num_vars
|
|
|
|
if ((status = nc_inq_varid(exoid, vnames, varid)) != NC_NOERR) {
|
|
if (status == NC_ENOTVAR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: no %s variable names defined in file id %d", tname,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
else {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: %s name variable names not found in file id %d",
|
|
tname, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
/*!
|
|
@@ -119,13 +120,12 @@ error = ex_put_variable_names (exoid, EX_NODAL, num_nod_vars, var_names);
|
|
*/
|
|
|
|
int ex_put_reduction_variable_names(int exoid, ex_entity_type obj_type, int num_vars,
|
|
- char *var_names[])
|
|
+ char *const var_names[])
|
|
{
|
|
- int varid, status;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
+ int varid;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -174,15 +174,16 @@ int ex_put_reduction_variable_names(int exoid, ex_entity_type obj_type, int num_
|
|
ex_put_var_names_int(exoid, obj_type, num_vars, "element set", DIM_NUM_ELSET_RED_VAR,
|
|
VAR_NAME_ELSET_RED_VAR, &varid);
|
|
break;
|
|
- default:
|
|
+ default: {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Invalid variable type %d specified in file id %d",
|
|
obj_type, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
+ }
|
|
|
|
/* write EXODUS variable names */
|
|
- status = ex__put_names(exoid, varid, num_vars, var_names, obj_type, "variable", __func__);
|
|
-
|
|
+ int status = exi_put_names(exoid, varid, num_vars, var_names, obj_type, "variable", __func__);
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_variable_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_variable_param.c
|
|
index dae6fb7ec4..f4b6b26db2 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_variable_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_variable_param.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2023, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -7,10 +7,10 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for ex__compress_variable, etc
|
|
+#include "exodusII_int.h" // for exi_compress_variable, etc
|
|
|
|
/*! \cond INTERNAL */
|
|
-static int ex__prepare_result_var(int exoid, int num_vars, char *type_name, char *dim_name,
|
|
+static int exi_prepare_result_var(int exoid, int num_vars, char *type_name, char *dim_name,
|
|
char *variable_name)
|
|
{
|
|
int status;
|
|
@@ -18,9 +18,6 @@ static int ex__prepare_result_var(int exoid, int num_vars, char *type_name, char
|
|
int varid;
|
|
int dims[2];
|
|
int dim_str_name;
|
|
-#if NC_HAS_HDF5
|
|
- int fill = NC_FILL_CHAR;
|
|
-#endif
|
|
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
@@ -37,14 +34,14 @@ static int ex__prepare_result_var(int exoid, int num_vars, char *type_name, char
|
|
"ERROR: failed to define number of %s variables in file id %d", type_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
- return (EX_FATAL); /* exit define mode and return */
|
|
+ return EX_FATAL; /* exit define mode and return */
|
|
}
|
|
|
|
/* Now define type_name variable name variable */
|
|
if ((status = nc_inq_dimid(exoid, DIM_STR_NAME, &dim_str_name)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get string length in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
dims[0] = dimid;
|
|
@@ -60,12 +57,13 @@ static int ex__prepare_result_var(int exoid, int num_vars, char *type_name, char
|
|
type_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
- return (EX_FATAL); /* exit define mode and return */
|
|
+ return EX_FATAL; /* exit define mode and return */
|
|
}
|
|
-#if NC_HAS_HDF5
|
|
+#if defined(EX_CAN_USE_NC_DEF_VAR_FILL)
|
|
+ int fill = NC_FILL_CHAR;
|
|
nc_def_var_fill(exoid, varid, 0, &fill);
|
|
#endif
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
/*! \endcond */
|
|
|
|
@@ -129,7 +127,7 @@ int ex_put_reduction_variable_param(int exoid, ex_entity_type obj_type, int num_
|
|
int status;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -167,7 +165,7 @@ int ex_put_reduction_variable_param(int exoid, ex_entity_type obj_type, int num_
|
|
}
|
|
|
|
/* put file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -175,8 +173,8 @@ int ex_put_reduction_variable_param(int exoid, ex_entity_type obj_type, int num_
|
|
|
|
/* define dimensions and variables */
|
|
if (obj_type == EX_GLOBAL) {
|
|
- if ((status = ex__prepare_result_var(exoid, num_vars, "global", DIM_NUM_GLO_VAR,
|
|
- VAR_NAME_GLO_VAR)) != EX_NOERR) {
|
|
+ if (exi_prepare_result_var(exoid, num_vars, "global", DIM_NUM_GLO_VAR, VAR_NAME_GLO_VAR) !=
|
|
+ EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
|
|
@@ -195,7 +193,7 @@ int ex_put_reduction_variable_param(int exoid, ex_entity_type obj_type, int num_
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 2);
|
|
+ exi_compress_variable(exoid, varid, 2);
|
|
}
|
|
|
|
/* netCDF variables in which to store the EXODUS obj_type variable values will
|
|
@@ -204,68 +202,70 @@ int ex_put_reduction_variable_param(int exoid, ex_entity_type obj_type, int num_
|
|
* (the info that is stored in the obj_type variable truth table)
|
|
*/
|
|
else if (obj_type == EX_ELEM_BLOCK) {
|
|
- if ((status = ex__prepare_result_var(exoid, num_vars, "element", DIM_NUM_ELE_RED_VAR,
|
|
- VAR_NAME_ELE_RED_VAR)) != EX_NOERR) {
|
|
+ if (exi_prepare_result_var(exoid, num_vars, "element", DIM_NUM_ELE_RED_VAR,
|
|
+ VAR_NAME_ELE_RED_VAR) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_NODE_SET) {
|
|
- if ((status = ex__prepare_result_var(exoid, num_vars, "nodeset", DIM_NUM_NSET_RED_VAR,
|
|
- VAR_NAME_NSET_RED_VAR)) != EX_NOERR) {
|
|
+ if (exi_prepare_result_var(exoid, num_vars, "nodeset", DIM_NUM_NSET_RED_VAR,
|
|
+ VAR_NAME_NSET_RED_VAR) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_SIDE_SET) {
|
|
- if ((status = ex__prepare_result_var(exoid, num_vars, "sideset", DIM_NUM_SSET_RED_VAR,
|
|
- VAR_NAME_SSET_RED_VAR)) != EX_NOERR) {
|
|
+ if (exi_prepare_result_var(exoid, num_vars, "sideset", DIM_NUM_SSET_RED_VAR,
|
|
+ VAR_NAME_SSET_RED_VAR) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_ASSEMBLY) {
|
|
- if ((status = ex__prepare_result_var(exoid, num_vars, "assembly", DIM_NUM_ASSEMBLY_RED_VAR,
|
|
- VAR_NAME_ASSEMBLY_RED_VAR)) != EX_NOERR) {
|
|
+ if (exi_prepare_result_var(exoid, num_vars, "assembly", DIM_NUM_ASSEMBLY_RED_VAR,
|
|
+ VAR_NAME_ASSEMBLY_RED_VAR) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_BLOB) {
|
|
- if ((status = ex__prepare_result_var(exoid, num_vars, "blob", DIM_NUM_BLOB_RED_VAR,
|
|
- VAR_NAME_BLOB_RED_VAR)) != EX_NOERR) {
|
|
+ if (exi_prepare_result_var(exoid, num_vars, "blob", DIM_NUM_BLOB_RED_VAR,
|
|
+ VAR_NAME_BLOB_RED_VAR) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_EDGE_BLOCK) {
|
|
- if ((status = ex__prepare_result_var(exoid, num_vars, "edge", DIM_NUM_EDG_RED_VAR,
|
|
- VAR_NAME_EDG_RED_VAR)) != EX_NOERR) {
|
|
+ if (exi_prepare_result_var(exoid, num_vars, "edge", DIM_NUM_EDG_RED_VAR,
|
|
+ VAR_NAME_EDG_RED_VAR) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_FACE_BLOCK) {
|
|
- if ((status = ex__prepare_result_var(exoid, num_vars, "face", DIM_NUM_FAC_RED_VAR,
|
|
- VAR_NAME_FAC_RED_VAR)) != EX_NOERR) {
|
|
+ if (exi_prepare_result_var(exoid, num_vars, "face", DIM_NUM_FAC_RED_VAR,
|
|
+ VAR_NAME_FAC_RED_VAR) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_EDGE_SET) {
|
|
- if ((status = ex__prepare_result_var(exoid, num_vars, "edgeset", DIM_NUM_ESET_RED_VAR,
|
|
- VAR_NAME_ESET_RED_VAR)) != EX_NOERR) {
|
|
+ if (exi_prepare_result_var(exoid, num_vars, "edgeset", DIM_NUM_ESET_RED_VAR,
|
|
+ VAR_NAME_ESET_RED_VAR) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_FACE_SET) {
|
|
- if ((status = ex__prepare_result_var(exoid, num_vars, "faceset", DIM_NUM_FSET_RED_VAR,
|
|
- VAR_NAME_FSET_RED_VAR)) != EX_NOERR) {
|
|
+ if (exi_prepare_result_var(exoid, num_vars, "faceset", DIM_NUM_FSET_RED_VAR,
|
|
+ VAR_NAME_FSET_RED_VAR) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_ELEM_SET) {
|
|
- if ((status = ex__prepare_result_var(exoid, num_vars, "elementset", DIM_NUM_ELSET_RED_VAR,
|
|
- VAR_NAME_ELSET_RED_VAR)) != EX_NOERR) {
|
|
+ if (exi_prepare_result_var(exoid, num_vars, "elementset", DIM_NUM_ELSET_RED_VAR,
|
|
+ VAR_NAME_ELSET_RED_VAR) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -273,6 +273,6 @@ int ex_put_reduction_variable_param(int exoid, ex_entity_type obj_type, int num_
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_vars.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_vars.c
|
|
index 0f28a158a3..301f032a37 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_vars.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_reduction_vars.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -9,14 +9,12 @@
|
|
#include "exodusII.h"
|
|
#include "exodusII_int.h"
|
|
|
|
-static int ex__look_up_var(int exoid, ex_entity_type var_type, ex_entity_id obj_id,
|
|
+static int exi_look_up_var(int exoid, ex_entity_type var_type, ex_entity_id obj_id,
|
|
const char *var_obj_id, const char *dim_num_obj_var, int *varid)
|
|
{
|
|
- int status;
|
|
- int obj_id_ndx;
|
|
- int time_dim, numvardim, dims[2];
|
|
- size_t num_obj_var;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
+ int status;
|
|
+ int obj_id_ndx;
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
|
|
if (var_type == EX_ASSEMBLY) {
|
|
status = nc_inq_varid(exoid, VAR_ENTITY_ASSEMBLY(obj_id), varid);
|
|
@@ -25,7 +23,7 @@ static int ex__look_up_var(int exoid, ex_entity_type var_type, ex_entity_id obj_
|
|
"ERROR: failed to locate %s id %" PRId64 " in %s array in file id %d",
|
|
ex_name_of_object(var_type), obj_id, var_obj_id, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
obj_id_ndx = obj_id;
|
|
}
|
|
@@ -36,13 +34,13 @@ static int ex__look_up_var(int exoid, ex_entity_type var_type, ex_entity_id obj_
|
|
"ERROR: failed to locate %s id %" PRId64 " in %s array in file id %d",
|
|
ex_name_of_object(var_type), obj_id, var_obj_id, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
obj_id_ndx = obj_id;
|
|
}
|
|
else {
|
|
/* Determine index of obj_id in var_obj_id array */
|
|
- obj_id_ndx = ex__id_lkup(exoid, var_type, obj_id);
|
|
+ obj_id_ndx = exi_id_lkup(exoid, var_type, obj_id);
|
|
if (obj_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -52,20 +50,21 @@ static int ex__look_up_var(int exoid, ex_entity_type var_type, ex_entity_id obj_
|
|
"Warning: no variables allowed for NULL block %" PRId64 " in file id %d", obj_id,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_NULLENTITY);
|
|
- return (EX_WARN);
|
|
+ return EX_WARN;
|
|
}
|
|
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to locate %s id %" PRId64 " in %s array in file id %d",
|
|
ex_name_of_object(var_type), obj_id, var_obj_id, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
}
|
|
- if ((status = nc_inq_varid(exoid, ex__name_red_var_of_object(var_type, obj_id_ndx), varid)) !=
|
|
+ if ((status = nc_inq_varid(exoid, exi_name_red_var_of_object(var_type, obj_id_ndx), varid)) !=
|
|
NC_NOERR) {
|
|
if (status == NC_ENOTVAR) { /* variable doesn't exist, create it! */
|
|
+ int time_dim;
|
|
if ((status = nc_inq_dimid(exoid, DIM_TIME, &time_dim)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate time dimension in file id %d",
|
|
exoid);
|
|
@@ -73,7 +72,9 @@ static int ex__look_up_var(int exoid, ex_entity_type var_type, ex_entity_id obj_
|
|
return EX_FATAL;
|
|
}
|
|
|
|
- if ((status = ex__get_dimension(exoid, dim_num_obj_var, ex_name_of_object(var_type),
|
|
+ size_t num_obj_var;
|
|
+ int numvardim;
|
|
+ if ((status = exi_get_dimension(exoid, dim_num_obj_var, ex_name_of_object(var_type),
|
|
&num_obj_var, &numvardim, __func__)) != EX_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to inquire number of %s reduction variables in file id %d",
|
|
@@ -83,39 +84,38 @@ static int ex__look_up_var(int exoid, ex_entity_type var_type, ex_entity_id obj_
|
|
}
|
|
|
|
/* variable doesn't exist so put file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* define NetCDF variable to store reduction variable values */
|
|
- dims[0] = time_dim;
|
|
- dims[1] = numvardim;
|
|
- if ((status = nc_def_var(exoid, ex__name_red_var_of_object(var_type, obj_id_ndx),
|
|
+ int dims[] = {time_dim, numvardim};
|
|
+ if ((status = nc_def_var(exoid, exi_name_red_var_of_object(var_type, obj_id_ndx),
|
|
nc_flt_code(exoid), 2, dims, varid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define %s in file id %d",
|
|
ex_name_of_object(var_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- ex__leavedef(exoid, __func__);
|
|
- return (EX_FATAL);
|
|
+ exi_leavedef(exoid, __func__);
|
|
+ return EX_FATAL;
|
|
}
|
|
- ex__compress_variable(exoid, *varid, 2);
|
|
+ exi_compress_variable(exoid, *varid, 2);
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
- return (EX_FATAL);
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
else {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s %s in file id %d",
|
|
- ex_name_of_object(var_type), ex__name_red_var_of_object(var_type, obj_id_ndx),
|
|
+ ex_name_of_object(var_type), exi_name_red_var_of_object(var_type, obj_id_ndx),
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
/*!
|
|
@@ -189,7 +189,7 @@ int ex_put_reduction_vars(int exoid, int time_step, ex_entity_type var_type, ex_
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -200,34 +200,34 @@ int ex_put_reduction_vars(int exoid, int time_step, ex_entity_type var_type, ex_
|
|
return ex_put_var(exoid, time_step, var_type, 1, 1, num_variables, var_vals);
|
|
break;
|
|
case EX_ASSEMBLY:
|
|
- status = ex__look_up_var(exoid, var_type, obj_id, "assembly", DIM_NUM_ASSEMBLY_RED_VAR, &varid);
|
|
+ status = exi_look_up_var(exoid, var_type, obj_id, "assembly", DIM_NUM_ASSEMBLY_RED_VAR, &varid);
|
|
break;
|
|
case EX_BLOB:
|
|
- status = ex__look_up_var(exoid, var_type, obj_id, "blob", DIM_NUM_BLOB_RED_VAR, &varid);
|
|
+ status = exi_look_up_var(exoid, var_type, obj_id, "blob", DIM_NUM_BLOB_RED_VAR, &varid);
|
|
break;
|
|
case EX_EDGE_BLOCK:
|
|
- status = ex__look_up_var(exoid, var_type, obj_id, VAR_ID_ED_BLK, DIM_NUM_EDG_RED_VAR, &varid);
|
|
+ status = exi_look_up_var(exoid, var_type, obj_id, VAR_ID_ED_BLK, DIM_NUM_EDG_RED_VAR, &varid);
|
|
break;
|
|
case EX_FACE_BLOCK:
|
|
- status = ex__look_up_var(exoid, var_type, obj_id, VAR_ID_FA_BLK, DIM_NUM_FAC_RED_VAR, &varid);
|
|
+ status = exi_look_up_var(exoid, var_type, obj_id, VAR_ID_FA_BLK, DIM_NUM_FAC_RED_VAR, &varid);
|
|
break;
|
|
case EX_ELEM_BLOCK:
|
|
- status = ex__look_up_var(exoid, var_type, obj_id, VAR_ID_EL_BLK, DIM_NUM_ELE_RED_VAR, &varid);
|
|
+ status = exi_look_up_var(exoid, var_type, obj_id, VAR_ID_EL_BLK, DIM_NUM_ELE_RED_VAR, &varid);
|
|
break;
|
|
case EX_NODE_SET:
|
|
- status = ex__look_up_var(exoid, var_type, obj_id, VAR_NS_IDS, DIM_NUM_NSET_RED_VAR, &varid);
|
|
+ status = exi_look_up_var(exoid, var_type, obj_id, VAR_NS_IDS, DIM_NUM_NSET_RED_VAR, &varid);
|
|
break;
|
|
case EX_EDGE_SET:
|
|
- status = ex__look_up_var(exoid, var_type, obj_id, VAR_ES_IDS, DIM_NUM_ESET_RED_VAR, &varid);
|
|
+ status = exi_look_up_var(exoid, var_type, obj_id, VAR_ES_IDS, DIM_NUM_ESET_RED_VAR, &varid);
|
|
break;
|
|
case EX_FACE_SET:
|
|
- status = ex__look_up_var(exoid, var_type, obj_id, VAR_FS_IDS, DIM_NUM_FSET_RED_VAR, &varid);
|
|
+ status = exi_look_up_var(exoid, var_type, obj_id, VAR_FS_IDS, DIM_NUM_FSET_RED_VAR, &varid);
|
|
break;
|
|
case EX_SIDE_SET:
|
|
- status = ex__look_up_var(exoid, var_type, obj_id, VAR_SS_IDS, DIM_NUM_SSET_RED_VAR, &varid);
|
|
+ status = exi_look_up_var(exoid, var_type, obj_id, VAR_SS_IDS, DIM_NUM_SSET_RED_VAR, &varid);
|
|
break;
|
|
case EX_ELEM_SET:
|
|
- status = ex__look_up_var(exoid, var_type, obj_id, VAR_ELS_IDS, DIM_NUM_ELSET_RED_VAR, &varid);
|
|
+ status = exi_look_up_var(exoid, var_type, obj_id, VAR_ELS_IDS, DIM_NUM_ELSET_RED_VAR, &varid);
|
|
break;
|
|
default:
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: invalid variable type (%d) specified for file id %d",
|
|
@@ -247,7 +247,7 @@ int ex_put_reduction_vars(int exoid, int time_step, ex_entity_type var_type, ex_
|
|
start[1] = 0;
|
|
count[1] = num_variables;
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_vara_float(exoid, varid, start, count, var_vals);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_set.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_set.c
|
|
index 0fb9352070..6988759724 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_set.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_set.c
|
|
@@ -25,7 +25,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, ex_name_of_object, etc
|
|
-#include "exodusII_int.h" // for ex__check_valid_file_id, etc
|
|
+#include "exodusII_int.h" // for exi_check_valid_file_id, etc
|
|
|
|
/*!
|
|
* writes the set entry list and set extra list for a single set
|
|
@@ -49,12 +49,12 @@ int ex_put_set(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* first check if any sets are specified */
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: no %ss defined in file id %d",
|
|
ex_name_of_object(set_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -62,7 +62,7 @@ int ex_put_set(int exoid, ex_entity_type set_type, ex_entity_id set_id,
|
|
}
|
|
|
|
/* Lookup index of set id in VAR_*S_IDS array */
|
|
- set_id_ndx = ex__id_lkup(exoid, set_type, set_id);
|
|
+ set_id_ndx = exi_id_lkup(exoid, set_type, set_id);
|
|
if (set_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_set_dist_fact.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_set_dist_fact.c
|
|
index 43fa07561f..728500bef8 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_set_dist_fact.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_set_dist_fact.c
|
|
@@ -45,12 +45,12 @@ int ex_put_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_id set_id
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* first check if any sets are specified */
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(set_type), &dimid)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: no %ss specified in file id %d",
|
|
ex_name_of_object(set_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -58,7 +58,7 @@ int ex_put_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_id set_id
|
|
}
|
|
|
|
/* Lookup index of set id in VAR_*S_IDS array */
|
|
- set_id_ndx = ex__id_lkup(exoid, set_type, set_id);
|
|
+ set_id_ndx = exi_id_lkup(exoid, set_type, set_id);
|
|
if (set_id_ndx <= 0) {
|
|
ex_get_err(NULL, NULL, &status);
|
|
|
|
@@ -117,7 +117,7 @@ int ex_put_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_id set_id
|
|
}
|
|
|
|
/* write out the distribution factors array */
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_var_float(exoid, dist_id, set_dist_fact);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_sets.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_sets.c
|
|
index c67debd7cf..7729946462 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_sets.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_sets.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -26,20 +26,20 @@ int ex_put_sets(int exoid, size_t set_count, const struct ex_set *sets)
|
|
size_t start[1];
|
|
int cur_num_sets;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- int * sets_to_define = NULL;
|
|
- char * numentryptr = NULL;
|
|
- char * entryptr = NULL;
|
|
- char * extraptr = NULL;
|
|
- char * idsptr = NULL;
|
|
- char * statptr = NULL;
|
|
- char * numdfptr = NULL;
|
|
- char * factptr = NULL;
|
|
+ int *sets_to_define = NULL;
|
|
+ char *numentryptr = NULL;
|
|
+ char *entryptr = NULL;
|
|
+ char *extraptr = NULL;
|
|
+ char *idsptr = NULL;
|
|
+ char *statptr = NULL;
|
|
+ char *numdfptr = NULL;
|
|
+ char *factptr = NULL;
|
|
|
|
int int_type;
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -59,7 +59,7 @@ int ex_put_sets(int exoid, size_t set_count, const struct ex_set *sets)
|
|
*/
|
|
for (i = 0; i < set_count; i++) {
|
|
/* first check if any sets are specified */
|
|
- if ((status = nc_inq_dimid(exoid, ex__dim_num_objects(sets[i].type), &dimid)) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_dim_num_objects(sets[i].type), &dimid)) != NC_NOERR) {
|
|
if (status == NC_EBADDIM) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: no %ss defined for file id %d",
|
|
ex_name_of_object(sets[i].type), exoid);
|
|
@@ -83,7 +83,7 @@ int ex_put_sets(int exoid, size_t set_count, const struct ex_set *sets)
|
|
sets_to_define[i] = -1;
|
|
}
|
|
else {
|
|
- status = ex__id_lkup(exoid, sets[i].type, sets[i].id);
|
|
+ status = exi_id_lkup(exoid, sets[i].type, sets[i].id);
|
|
if (status != -EX_LOOKUPFAIL) { /* found the side set id, so set is already defined... */
|
|
sets_to_define[i] = 0;
|
|
}
|
|
@@ -96,7 +96,7 @@ int ex_put_sets(int exoid, size_t set_count, const struct ex_set *sets)
|
|
|
|
if (needs_define > 0) {
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(sets_to_define);
|
|
@@ -109,14 +109,14 @@ int ex_put_sets(int exoid, size_t set_count, const struct ex_set *sets)
|
|
}
|
|
|
|
if (sets_to_define[i] > 0) {
|
|
- /* NOTE: ex__inc_file_item finds the current number of sets defined
|
|
+ /* NOTE: exi_inc_file_item finds the current number of sets defined
|
|
for a specific file and returns that value incremented. */
|
|
- cur_num_sets = ex__inc_file_item(exoid, ex__get_counter_list(sets[i].type));
|
|
+ cur_num_sets = exi_inc_file_item(exoid, exi_get_counter_list(sets[i].type));
|
|
set_id_ndx = cur_num_sets + 1;
|
|
sets_to_define[i] = set_id_ndx;
|
|
}
|
|
else {
|
|
- cur_num_sets = ex__get_file_item(exoid, ex__get_counter_list(sets[i].type));
|
|
+ cur_num_sets = exi_get_file_item(exoid, exi_get_counter_list(sets[i].type));
|
|
set_id_ndx = cur_num_sets - set_count + i + 1;
|
|
sets_to_define[i] = set_id_ndx;
|
|
}
|
|
@@ -202,7 +202,7 @@ int ex_put_sets(int exoid, size_t set_count, const struct ex_set *sets)
|
|
}
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
|
|
if (extraptr) {
|
|
if ((status = nc_def_var(exoid, extraptr, int_type, 1, dims, &varid)) != NC_NOERR) {
|
|
@@ -220,7 +220,7 @@ int ex_put_sets(int exoid, size_t set_count, const struct ex_set *sets)
|
|
}
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 1);
|
|
+ exi_compress_variable(exoid, varid, 1);
|
|
}
|
|
|
|
/* Create distribution factors variable if required */
|
|
@@ -268,12 +268,14 @@ int ex_put_sets(int exoid, size_t set_count, const struct ex_set *sets)
|
|
}
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 2);
|
|
+ exi_compress_variable(exoid, varid, 2);
|
|
}
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(sets_to_define);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -379,6 +381,6 @@ int ex_put_sets(int exoid, size_t set_count, const struct ex_set *sets)
|
|
error_ret:
|
|
free(sets_to_define);
|
|
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_ss_param_global.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_ss_param_global.c
|
|
index ab5bd68604..4cb15c6119 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_ss_param_global.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_ss_param_global.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2025 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -29,16 +29,17 @@
|
|
#include <exodusII.h>
|
|
#include <exodusII_int.h>
|
|
|
|
-int ex_put_ss_param_global(int exoid, void_int *global_ids, void_int *side_cnts, void_int *df_cnts)
|
|
+int ex_put_ss_param_global(int exoid, const void_int *global_ids, const void_int *side_cnts,
|
|
+ const void_int *df_cnts)
|
|
{
|
|
- int varid;
|
|
+ int varid = 0;
|
|
|
|
- int status;
|
|
+ int status = 0;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
/*-----------------------------Execution begins-----------------------------*/
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_time.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_time.c
|
|
index 1e36091125..9bae4c7816 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_time.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_time.c
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for EX_FATAL, ex__comp_ws, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, exi_comp_ws, etc
|
|
|
|
/*!
|
|
\ingroup ResultsData
|
|
@@ -54,11 +54,11 @@ int ex_put_time(int exoid, int time_step, const void *time_value)
|
|
int varid;
|
|
size_t start[1];
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- struct ex__file_item *file = NULL;
|
|
+ struct exi_file_item *file = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- file = ex__find_file_item(exoid);
|
|
+ file = exi_find_file_item(exoid);
|
|
if (!file) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d.", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
@@ -80,7 +80,7 @@ int ex_put_time(int exoid, int time_step, const void *time_value)
|
|
/* store time value */
|
|
start[0] = --time_step;
|
|
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
status = nc_put_var1_float(exoid, varid, start, time_value);
|
|
}
|
|
else {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_truth_table.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_truth_table.c
|
|
index 9bb4d45de6..09cb4e6973 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_truth_table.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_truth_table.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -25,7 +25,7 @@
|
|
*****************************************************************************/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for ex__get_dimension, EX_FATAL, etc
|
|
+#include "exodusII_int.h" // for exi_get_dimension, EX_FATAL, etc
|
|
|
|
/*!
|
|
\ingroup ResultsData
|
|
@@ -64,14 +64,15 @@ error = ex_put_truth_table(exoid, EX_ELEM_BLOCK, num_elem_blk, num_ele_vars,
|
|
~~~
|
|
*/
|
|
|
|
-int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_var, int *var_tab)
|
|
+int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_var,
|
|
+ const int *var_tab)
|
|
{
|
|
int numelblkdim, numelvardim, timedim, dims[2], varid;
|
|
- char * sta_type = NULL;
|
|
- char * tab_type = NULL;
|
|
+ char *sta_type = NULL;
|
|
+ char *tab_type = NULL;
|
|
size_t num_entity = 0;
|
|
size_t num_var_db = 0;
|
|
- int * stat_vals = NULL;
|
|
+ int *stat_vals = NULL;
|
|
int i, j, k;
|
|
int status;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
@@ -87,15 +88,15 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- ex__get_dimension(exoid, ex__dim_num_objects(obj_type), ex_name_of_object(obj_type), &num_entity,
|
|
+ exi_get_dimension(exoid, exi_dim_num_objects(obj_type), ex_name_of_object(obj_type), &num_entity,
|
|
&numelblkdim, __func__);
|
|
|
|
if (obj_type == EX_ELEM_BLOCK) {
|
|
- ex__get_dimension(exoid, DIM_NUM_ELE_VAR, "element variables", &num_var_db, &numelvardim,
|
|
+ exi_get_dimension(exoid, DIM_NUM_ELE_VAR, "element variables", &num_var_db, &numelvardim,
|
|
__func__);
|
|
var_name = "vals_elem_var";
|
|
ent_type = "eb";
|
|
@@ -104,7 +105,7 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
tab_type = VAR_ELEM_TAB;
|
|
}
|
|
else if (obj_type == EX_EDGE_BLOCK) {
|
|
- ex__get_dimension(exoid, DIM_NUM_EDG_VAR, "edge block variables", &num_var_db, &numelvardim,
|
|
+ exi_get_dimension(exoid, DIM_NUM_EDG_VAR, "edge block variables", &num_var_db, &numelvardim,
|
|
__func__);
|
|
var_name = "vals_edge_var";
|
|
ent_type = "eb";
|
|
@@ -113,7 +114,7 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
tab_type = VAR_EBLK_TAB;
|
|
}
|
|
else if (obj_type == EX_FACE_BLOCK) {
|
|
- ex__get_dimension(exoid, DIM_NUM_FAC_VAR, "face block variables", &num_var_db, &numelvardim,
|
|
+ exi_get_dimension(exoid, DIM_NUM_FAC_VAR, "face block variables", &num_var_db, &numelvardim,
|
|
__func__);
|
|
var_name = "vals_face_var";
|
|
ent_type = "fb";
|
|
@@ -122,7 +123,7 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
tab_type = VAR_FBLK_TAB;
|
|
}
|
|
else if (obj_type == EX_SIDE_SET) {
|
|
- ex__get_dimension(exoid, DIM_NUM_SSET_VAR, "sideset variables", &num_var_db, &numelvardim,
|
|
+ exi_get_dimension(exoid, DIM_NUM_SSET_VAR, "sideset variables", &num_var_db, &numelvardim,
|
|
__func__);
|
|
var_name = "vals_sset_var";
|
|
ent_type = "ss";
|
|
@@ -131,7 +132,7 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
tab_type = VAR_SSET_TAB;
|
|
}
|
|
else if (obj_type == EX_NODE_SET) {
|
|
- ex__get_dimension(exoid, DIM_NUM_NSET_VAR, "nodeset variables", &num_var_db, &numelvardim,
|
|
+ exi_get_dimension(exoid, DIM_NUM_NSET_VAR, "nodeset variables", &num_var_db, &numelvardim,
|
|
__func__);
|
|
var_name = "vals_nset_var";
|
|
ent_type = "ns";
|
|
@@ -140,7 +141,7 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
tab_type = VAR_NSET_TAB;
|
|
}
|
|
else if (obj_type == EX_EDGE_SET) {
|
|
- ex__get_dimension(exoid, DIM_NUM_ESET_VAR, "edge set variables", &num_var_db, &numelvardim,
|
|
+ exi_get_dimension(exoid, DIM_NUM_ESET_VAR, "edge set variables", &num_var_db, &numelvardim,
|
|
__func__);
|
|
var_name = "vals_eset_var";
|
|
ent_type = "es";
|
|
@@ -149,7 +150,7 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
tab_type = VAR_ESET_TAB;
|
|
}
|
|
else if (obj_type == EX_FACE_SET) {
|
|
- ex__get_dimension(exoid, DIM_NUM_FSET_VAR, "face set variables", &num_var_db, &numelvardim,
|
|
+ exi_get_dimension(exoid, DIM_NUM_FSET_VAR, "face set variables", &num_var_db, &numelvardim,
|
|
__func__);
|
|
var_name = "vals_fset_var";
|
|
ent_type = "fs";
|
|
@@ -158,7 +159,7 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
tab_type = VAR_FSET_TAB;
|
|
}
|
|
else if (obj_type == EX_ELEM_SET) {
|
|
- ex__get_dimension(exoid, DIM_NUM_ELSET_VAR, "element set variables", &num_var_db, &numelvardim,
|
|
+ exi_get_dimension(exoid, DIM_NUM_ELSET_VAR, "element set variables", &num_var_db, &numelvardim,
|
|
__func__);
|
|
var_name = "vals_elset_var";
|
|
ent_type = "es";
|
|
@@ -167,7 +168,7 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
tab_type = VAR_ELSET_TAB;
|
|
}
|
|
else if (obj_type == EX_BLOB) {
|
|
- ex__get_dimension(exoid, DIM_NUM_BLOB_VAR, "blob variables", &num_var_db, &numelvardim,
|
|
+ exi_get_dimension(exoid, DIM_NUM_BLOB_VAR, "blob variables", &num_var_db, &numelvardim,
|
|
__func__);
|
|
var_name = "vals_blob_var";
|
|
ent_type = "blob";
|
|
@@ -235,7 +236,7 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
}
|
|
|
|
/* put netcdf file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
free(stat_vals);
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -270,7 +271,7 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
dims[0] = timedim;
|
|
|
|
/* Determine number of entities in block */
|
|
- if ((status = nc_inq_dimid(exoid, ex__catstr(ent_size, (i + 1)), &dims[1])) != NC_NOERR) {
|
|
+ if ((status = nc_inq_dimid(exoid, exi_catstr(ent_size, (i + 1)), &dims[1])) != NC_NOERR) {
|
|
free(stat_vals);
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to locate number of entities in "
|
|
@@ -287,7 +288,7 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
* instead of 0
|
|
*/
|
|
|
|
- if ((status = nc_def_var(exoid, ex__catstr2(var_name, j, ent_type, i + 1),
|
|
+ if ((status = nc_def_var(exoid, exi_catstr2(var_name, j, ent_type, i + 1),
|
|
nc_flt_code(exoid), 2, dims, &varid)) != NC_NOERR) {
|
|
if (status != NC_ENAMEINUSE) {
|
|
free(stat_vals);
|
|
@@ -297,13 +298,13 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 2);
|
|
+ exi_compress_variable(exoid, varid, 2);
|
|
}
|
|
}
|
|
- } /* if */
|
|
+ } /* if */
|
|
k++; /* increment element truth table pointer */
|
|
- } /* for j */
|
|
- } /* for i */
|
|
+ } /* for j */
|
|
+ } /* for i */
|
|
|
|
free(stat_vals);
|
|
|
|
@@ -323,7 +324,9 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -341,6 +344,6 @@ int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_var.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_var.c
|
|
index 600be23f9f..2795aac99c 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_var.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_var.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2023 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -9,163 +9,6 @@
|
|
#include "exodusII.h" // for ex_err, etc
|
|
#include "exodusII_int.h" // for EX_FATAL, etc
|
|
|
|
-static int ex__look_up_var(int exoid, ex_entity_type var_type, int var_index, ex_entity_id obj_id,
|
|
- const char *VOBJID, const char *VOBJTAB, const char *DNUMOBJ,
|
|
- const char *DNUMOBJVAR, int *varid)
|
|
-{
|
|
- int status;
|
|
- int obj_id_ndx;
|
|
- int dimid, time_dim, numobjdim, dims[2];
|
|
-
|
|
- size_t num_obj;
|
|
- size_t num_obj_var;
|
|
- size_t num_entity;
|
|
-
|
|
- int *obj_var_truth_tab;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
- if (var_type == EX_ASSEMBLY) {
|
|
- status = nc_inq_varid(exoid, VAR_ENTITY_ASSEMBLY(obj_id), varid);
|
|
- if (status != 0) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to locate %s id %" PRId64 " in %s array in file id %d",
|
|
- ex_name_of_object(var_type), obj_id, VOBJID, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
- }
|
|
- obj_id_ndx = obj_id;
|
|
- }
|
|
- else if (var_type == EX_BLOB) {
|
|
- status = nc_inq_varid(exoid, VAR_ENTITY_BLOB(obj_id), varid);
|
|
- if (status != 0) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to locate %s id %" PRId64 " in %s array in file id %d",
|
|
- ex_name_of_object(var_type), obj_id, VOBJID, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
- }
|
|
- obj_id_ndx = obj_id;
|
|
- }
|
|
- else {
|
|
- /* Determine index of obj_id in VOBJID array */
|
|
- obj_id_ndx = ex__id_lkup(exoid, var_type, obj_id);
|
|
- if (obj_id_ndx <= 0) {
|
|
- ex_get_err(NULL, NULL, &status);
|
|
-
|
|
- if (status != 0) {
|
|
- if (status == EX_NULLENTITY) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "Warning: no variables allowed for NULL block %" PRId64 " in file id %d", obj_id,
|
|
- exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_NULLENTITY);
|
|
- return (EX_WARN);
|
|
- }
|
|
-
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to locate %s id %" PRId64 " in %s array in file id %d",
|
|
- ex_name_of_object(var_type), obj_id, VOBJID, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
- if ((status = nc_inq_varid(exoid, ex__name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
- varid)) != NC_NOERR) {
|
|
- if (status == NC_ENOTVAR) { /* variable doesn't exist, create it! */
|
|
- /* check for the existence of an TNAME variable truth table */
|
|
- if (nc_inq_varid(exoid, VOBJTAB, varid) == NC_NOERR) {
|
|
- /* find out number of TNAMEs and TNAME variables */
|
|
- status = ex__get_dimension(exoid, DNUMOBJ, ex_name_of_object(var_type), &num_obj, &dimid,
|
|
- __func__);
|
|
- if (status != NC_NOERR) {
|
|
- return (status);
|
|
- }
|
|
-
|
|
- status = ex__get_dimension(exoid, DNUMOBJVAR, ex_name_of_object(var_type), &num_obj_var,
|
|
- &dimid, __func__);
|
|
- if (status != NC_NOERR) {
|
|
- return (status);
|
|
- }
|
|
-
|
|
- if (!(obj_var_truth_tab = malloc(num_obj * num_obj_var * sizeof(int)))) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to allocate memory for %s variable "
|
|
- "truth table in file id %d",
|
|
- ex_name_of_object(var_type), exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
|
|
- return (EX_FATAL);
|
|
- }
|
|
-
|
|
- /* read in the TNAME variable truth table */
|
|
- if ((status = nc_get_var_int(exoid, *varid, obj_var_truth_tab)) != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get truth table from file id %d",
|
|
- exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
- }
|
|
-
|
|
- if (obj_var_truth_tab[num_obj_var * (obj_id_ndx - 1) + var_index - 1] == 0L) {
|
|
- free(obj_var_truth_tab);
|
|
- snprintf(
|
|
- errmsg, MAX_ERR_LENGTH, "ERROR: Invalid %s variable %d, %s %" PRId64 " in file id %d",
|
|
- ex_name_of_object(var_type), var_index, ex_name_of_object(var_type), obj_id, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- return (EX_FATAL);
|
|
- }
|
|
- free(obj_var_truth_tab);
|
|
- }
|
|
-
|
|
- if ((status = nc_inq_dimid(exoid, DIM_TIME, &time_dim)) != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate time dimension in file id %d",
|
|
- exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- goto error_ret; /* exit define mode and return */
|
|
- }
|
|
-
|
|
- ex__get_dimension(exoid, ex__dim_num_entries_in_object(var_type, obj_id_ndx),
|
|
- ex_name_of_object(var_type), &num_entity, &numobjdim, __func__);
|
|
-
|
|
- /* variable doesn't exist so put file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
- }
|
|
-
|
|
- /* define netCDF variable to store TNAME variable values */
|
|
- dims[0] = time_dim;
|
|
- dims[1] = numobjdim;
|
|
- if ((status = nc_def_var(exoid, ex__name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
- nc_flt_code(exoid), 2, dims, varid)) != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define %s variable %d in file id %d",
|
|
- ex_name_of_object(var_type), var_index, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- goto error_ret;
|
|
- }
|
|
- ex__compress_variable(exoid, *varid, 2);
|
|
-
|
|
- /* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
- return (EX_FATAL);
|
|
- }
|
|
- }
|
|
- else {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s variable %s in file id %d",
|
|
- ex_name_of_object(var_type), ex__name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
- exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
- }
|
|
- }
|
|
- return (EX_NOERR);
|
|
-
|
|
-/* Fatal error: exit definition mode and return */
|
|
-error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
- return (EX_FATAL);
|
|
-}
|
|
-
|
|
/*!
|
|
\ingroup ResultsData
|
|
writes the values of a single variable of the specified type for a
|
|
@@ -234,128 +77,6 @@ for (k=1; k <= num_nod_vars; k++) {
|
|
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)
|
|
{
|
|
- int varid;
|
|
- size_t start[2], count[2];
|
|
- int status;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
-
|
|
- EX_FUNC_ENTER();
|
|
-
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
- }
|
|
-
|
|
- switch (var_type) {
|
|
- case EX_GLOBAL:
|
|
- if (num_entries_this_obj <= 0) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "Warning: no global variables specified for file id %d",
|
|
- exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
-
|
|
- EX_FUNC_LEAVE(EX_WARN);
|
|
- }
|
|
-
|
|
- /* inquire previously defined variable */
|
|
- if ((status = nc_inq_varid(exoid, VAR_GLO_VAR, &varid)) != NC_NOERR) {
|
|
- if (status == NC_ENOTVAR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: no global variables defined in file id %d", exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- }
|
|
- else {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to get global variables parameters in file id %d", exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- }
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
- }
|
|
- break;
|
|
- case EX_NODAL:
|
|
- status = ex__put_nodal_var(exoid, time_step, var_index, num_entries_this_obj, var_vals);
|
|
- EX_FUNC_LEAVE(status);
|
|
- break;
|
|
- case EX_ASSEMBLY:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, "", VAR_ASSEMBLY_TAB,
|
|
- DIM_NUM_ASSEMBLY, DIM_NUM_ASSEMBLY_VAR, &varid);
|
|
- break;
|
|
- case EX_BLOB:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, "", VAR_BLOB_TAB, DIM_NUM_BLOB,
|
|
- DIM_NUM_BLOB_VAR, &varid);
|
|
- break;
|
|
- case EX_EDGE_BLOCK:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_ID_ED_BLK, VAR_EBLK_TAB,
|
|
- DIM_NUM_ED_BLK, DIM_NUM_EDG_VAR, &varid);
|
|
- break;
|
|
- case EX_FACE_BLOCK:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_ID_FA_BLK, VAR_FBLK_TAB,
|
|
- DIM_NUM_FA_BLK, DIM_NUM_FAC_VAR, &varid);
|
|
- break;
|
|
- case EX_ELEM_BLOCK:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_ID_EL_BLK, VAR_ELEM_TAB,
|
|
- DIM_NUM_EL_BLK, DIM_NUM_ELE_VAR, &varid);
|
|
- break;
|
|
- case EX_NODE_SET:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_NS_IDS, VAR_NSET_TAB,
|
|
- DIM_NUM_NS, DIM_NUM_NSET_VAR, &varid);
|
|
- break;
|
|
- case EX_EDGE_SET:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_ES_IDS, VAR_ESET_TAB,
|
|
- DIM_NUM_ES, DIM_NUM_ESET_VAR, &varid);
|
|
- break;
|
|
- case EX_FACE_SET:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_FS_IDS, VAR_FSET_TAB,
|
|
- DIM_NUM_FS, DIM_NUM_FSET_VAR, &varid);
|
|
- break;
|
|
- case EX_SIDE_SET:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_SS_IDS, VAR_SSET_TAB,
|
|
- DIM_NUM_SS, DIM_NUM_SSET_VAR, &varid);
|
|
- break;
|
|
- case EX_ELEM_SET:
|
|
- status = ex__look_up_var(exoid, var_type, var_index, obj_id, VAR_ELS_IDS, VAR_ELSET_TAB,
|
|
- DIM_NUM_ELS, DIM_NUM_ELSET_VAR, &varid);
|
|
- break;
|
|
- default:
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: invalid variable type (%d) specified for file id %d",
|
|
- var_type, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
- }
|
|
-
|
|
- if (status != EX_NOERR) {
|
|
- EX_FUNC_LEAVE(status);
|
|
- }
|
|
-
|
|
- /* store element variable values */
|
|
- start[0] = time_step - 1;
|
|
- start[1] = 0;
|
|
-
|
|
- if (var_type == EX_GLOBAL) {
|
|
- /* global variables may be written
|
|
- * - all at once (by setting var_index to 1 and num_entries_this_obj to
|
|
- * num_glob, or
|
|
- * - one at a time (by setting var_index to the desired index and
|
|
- * num_entries_this_obj to 1.
|
|
- */
|
|
- count[0] = var_index;
|
|
- }
|
|
- else {
|
|
- count[0] = 1;
|
|
- }
|
|
- count[1] = num_entries_this_obj;
|
|
-
|
|
- if (ex__comp_ws(exoid) == 4) {
|
|
- status = nc_put_vara_float(exoid, varid, start, count, var_vals);
|
|
- }
|
|
- else {
|
|
- status = nc_put_vara_double(exoid, varid, start, count, var_vals);
|
|
- }
|
|
-
|
|
- if (status != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: failed to store %s %" PRId64 " variable %d at step %d in file id %d",
|
|
- ex_name_of_object(var_type), obj_id, var_index, time_step, exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- EX_FUNC_LEAVE(EX_FATAL);
|
|
- }
|
|
-
|
|
- EX_FUNC_LEAVE(EX_NOERR);
|
|
+ return ex_put_var_multi_time(exoid, var_type, var_index, obj_id, num_entries_this_obj, time_step,
|
|
+ time_step, var_vals);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_var_multi_time.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_var_multi_time.c
|
|
new file mode 100644
|
|
index 0000000000..a34123f5fb
|
|
--- /dev/null
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_var_multi_time.c
|
|
@@ -0,0 +1,366 @@
|
|
+/*
|
|
+ * Copyright(C) 1999-2020, 2023, 2024 National Technology & Engineering Solutions
|
|
+ * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
+ * NTESS, the U.S. Government retains certain rights in this software.
|
|
+ *
|
|
+ * See packages/seacas/LICENSE for details
|
|
+ */
|
|
+
|
|
+#include "exodusII.h" // for ex_err, etc
|
|
+#include "exodusII_int.h" // for EX_FATAL, etc
|
|
+
|
|
+static int exi_look_up_var(int exoid, ex_entity_type var_type, int var_index, ex_entity_id obj_id,
|
|
+ const char *VOBJID, const char *VOBJTAB, const char *DNUMOBJ,
|
|
+ const char *DNUMOBJVAR, int *varid)
|
|
+{
|
|
+ int status;
|
|
+ int dimid, time_dim, numobjdim, dims[2];
|
|
+
|
|
+ int obj_id_ndx = 0;
|
|
+
|
|
+ int *obj_var_truth_tab;
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+
|
|
+ if (var_type == EX_ASSEMBLY) {
|
|
+ status = nc_inq_varid(exoid, VAR_ENTITY_ASSEMBLY(obj_id), varid);
|
|
+ if (status != 0) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to locate %s id %" PRId64 " in %s array in file id %d",
|
|
+ ex_name_of_object(var_type), obj_id, VOBJID, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ obj_id_ndx = obj_id;
|
|
+ }
|
|
+ else if (var_type == EX_BLOB) {
|
|
+ status = nc_inq_varid(exoid, VAR_ENTITY_BLOB(obj_id), varid);
|
|
+ if (status != 0) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to locate %s id %" PRId64 " in %s array in file id %d",
|
|
+ ex_name_of_object(var_type), obj_id, VOBJID, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ obj_id_ndx = obj_id;
|
|
+ }
|
|
+ else {
|
|
+ /* Determine index of obj_id in VOBJID array */
|
|
+ obj_id_ndx = exi_id_lkup(exoid, var_type, obj_id);
|
|
+ if (obj_id_ndx <= 0) {
|
|
+ ex_get_err(NULL, NULL, &status);
|
|
+
|
|
+ if (status != 0) {
|
|
+ if (status == EX_NULLENTITY) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "Warning: no variables allowed for NULL block %" PRId64 " in file id %d", obj_id,
|
|
+ exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_NULLENTITY);
|
|
+ return EX_WARN;
|
|
+ }
|
|
+
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to locate %s id %" PRId64 " in %s array in file id %d",
|
|
+ ex_name_of_object(var_type), obj_id, VOBJID, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if ((status = nc_inq_varid(exoid, exi_name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
+ varid)) != NC_NOERR) {
|
|
+ if (status == NC_ENOTVAR) { /* variable doesn't exist, create it! */
|
|
+ /* check for the existence of an TNAME variable truth table */
|
|
+ if (nc_inq_varid(exoid, VOBJTAB, varid) == NC_NOERR) {
|
|
+ /* find out number of TNAMEs and TNAME variables */
|
|
+ size_t num_obj = 0;
|
|
+ size_t num_obj_var = 0;
|
|
+
|
|
+ status = exi_get_dimension(exoid, DNUMOBJ, ex_name_of_object(var_type), &num_obj, &dimid,
|
|
+ __func__);
|
|
+ if (status != NC_NOERR) {
|
|
+ return status;
|
|
+ }
|
|
+
|
|
+ status = exi_get_dimension(exoid, DNUMOBJVAR, ex_name_of_object(var_type), &num_obj_var,
|
|
+ &dimid, __func__);
|
|
+ if (status != NC_NOERR) {
|
|
+ return status;
|
|
+ }
|
|
+
|
|
+ if (!(obj_var_truth_tab = malloc(num_obj * num_obj_var * sizeof(int)))) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to allocate memory for %s variable "
|
|
+ "truth table in file id %d",
|
|
+ ex_name_of_object(var_type), exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+
|
|
+ /* read in the TNAME variable truth table */
|
|
+ if ((status = nc_get_var_int(exoid, *varid, obj_var_truth_tab)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get truth table from file id %d",
|
|
+ exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+
|
|
+ if (obj_var_truth_tab[num_obj_var * (obj_id_ndx - 1) + var_index - 1] == 0L) {
|
|
+ free(obj_var_truth_tab);
|
|
+ snprintf(
|
|
+ errmsg, MAX_ERR_LENGTH, "ERROR: Invalid %s variable %d, %s %" PRId64 " in file id %d",
|
|
+ ex_name_of_object(var_type), var_index, ex_name_of_object(var_type), obj_id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ free(obj_var_truth_tab);
|
|
+ }
|
|
+
|
|
+ if ((status = nc_inq_dimid(exoid, DIM_TIME, &time_dim)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate time dimension in file id %d",
|
|
+ exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ goto error_ret; /* exit define mode and return */
|
|
+ }
|
|
+
|
|
+ size_t num_entity = 0;
|
|
+ exi_get_dimension(exoid, exi_dim_num_entries_in_object(var_type, obj_id_ndx),
|
|
+ ex_name_of_object(var_type), &num_entity, &numobjdim, __func__);
|
|
+
|
|
+ /* variable doesn't exist so put file into define mode */
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+
|
|
+ /* define netCDF variable to store TNAME variable values */
|
|
+ dims[0] = time_dim;
|
|
+ dims[1] = numobjdim;
|
|
+ if ((status = nc_def_var(exoid, exi_name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
+ nc_flt_code(exoid), 2, dims, varid)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to define %s variable %d in file id %d",
|
|
+ ex_name_of_object(var_type), var_index, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ goto error_ret;
|
|
+ }
|
|
+ exi_compress_variable(exoid, *varid, 2);
|
|
+
|
|
+ /* leave define mode */
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ }
|
|
+ else {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s variable %s in file id %d",
|
|
+ ex_name_of_object(var_type), exi_name_var_of_object(var_type, var_index, obj_id_ndx),
|
|
+ exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ }
|
|
+ return EX_NOERR;
|
|
+
|
|
+/* Fatal error: exit definition mode and return */
|
|
+error_ret:
|
|
+ exi_leavedef(exoid, __func__);
|
|
+ return EX_FATAL;
|
|
+}
|
|
+
|
|
+/*!
|
|
+\ingroup ResultsData
|
|
+writes the values of a single variable of the specified type for a
|
|
+single time step. The function ex_put_variable_param() must be invoked
|
|
+before this call is made.
|
|
+
|
|
+Because variables are floating point values, the application
|
|
+code must declare the array passed to be the appropriate type
|
|
+(float or double) to match the compute word size passed in
|
|
+ex_create() or ex_open().
|
|
+
|
|
+\return In case of an error, ex_put_var() 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()
|
|
+ - data file opened for read only.
|
|
+ - data file not initialized properly with call to ex_put_init().
|
|
+ - ex_put_variable_param() not called previously specifying the number of
|
|
+variables.
|
|
+
|
|
+\param[in] exoid
|
|
+exodus file ID returned from a previous call to
|
|
+ex_create() or ex_open().
|
|
+
|
|
+\param[in] var_type
|
|
+type (edge block, face block, edge set, ... )
|
|
+
|
|
+\param[in] var_index
|
|
+The index of the variable. The first variable has an index of 1.
|
|
+
|
|
+\param[in] obj_id
|
|
+entity block/set id (ignored for global and nodal variables)
|
|
+
|
|
+\param[in] num_entries_this_obj
|
|
+The number of items in this block/set
|
|
+
|
|
+\param[in] beg_time_step
|
|
+The beginning time step number, as described under ex_put_time(). This
|
|
+is essentially a counter that is incremented when results variables
|
|
+are output. The first time step is 1.
|
|
+
|
|
+\param[in] end_time_step
|
|
+The last step number to put values. The first time step is 1.
|
|
+
|
|
+\param[in] var_vals
|
|
+Array of `num_entries_this_obj` values of the `var_index`-th variable for the requested time
|
|
+step(s).
|
|
+
|
|
+As an example, the following code segment writes all the nodal
|
|
+variables for a single time step:
|
|
+
|
|
+~~~{.c}
|
|
+int num_nod_vars, num_nodes, error, exoid, beg_time_step, end_time_step;
|
|
+float *nodal_var_vals;
|
|
+
|
|
+\comment{write nodal variables}
|
|
+nodal_var_vals = (float *) calloc(num_nodes*num_steps, sizeof(float));
|
|
+for (k=1; k <= num_nod_vars; k++) {
|
|
+ for (t=1, t < num_steps; t++) {
|
|
+ for (j=0; j < num_nodes; j++) {
|
|
+ \comment{application code fills in this array}
|
|
+ nodal_var_vals[j] = 10.0;
|
|
+ }
|
|
+ }
|
|
+ error = ex_put_var(exoid, EX_NODAL, 0, k, num_nodes,
|
|
+ 1, 1+num_steps, nodal_var_vals);
|
|
+}
|
|
+~~~
|
|
+ */
|
|
+
|
|
+int ex_put_var_multi_time(int exoid, ex_entity_type var_type, int var_index, ex_entity_id obj_id,
|
|
+ int64_t num_entries_this_obj, int beg_time_step, int end_time_step,
|
|
+ const void *var_vals)
|
|
+{
|
|
+ int varid;
|
|
+ size_t start[2], count[2];
|
|
+ int status;
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+
|
|
+ EX_FUNC_ENTER();
|
|
+
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ switch (var_type) {
|
|
+ case EX_GLOBAL:
|
|
+ if (num_entries_this_obj <= 0) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "Warning: no global variables specified for file id %d",
|
|
+ exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+
|
|
+ EX_FUNC_LEAVE(EX_WARN);
|
|
+ }
|
|
+
|
|
+ /* inquire previously defined variable */
|
|
+ if ((status = nc_inq_varid(exoid, VAR_GLO_VAR, &varid)) != NC_NOERR) {
|
|
+ if (status == NC_ENOTVAR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: no global variables defined in file id %d", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ }
|
|
+ else {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to get global variables parameters in file id %d", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ }
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+ break;
|
|
+ case EX_NODAL:
|
|
+ status = exi_put_nodal_var_time(exoid, var_index, num_entries_this_obj, beg_time_step,
|
|
+ end_time_step, var_vals);
|
|
+ EX_FUNC_LEAVE(status);
|
|
+ case EX_ASSEMBLY:
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, "", VAR_ASSEMBLY_TAB,
|
|
+ DIM_NUM_ASSEMBLY, DIM_NUM_ASSEMBLY_VAR, &varid);
|
|
+ break;
|
|
+ case EX_BLOB:
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, "", VAR_BLOB_TAB, DIM_NUM_BLOB,
|
|
+ DIM_NUM_BLOB_VAR, &varid);
|
|
+ break;
|
|
+ case EX_EDGE_BLOCK:
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_ID_ED_BLK, VAR_EBLK_TAB,
|
|
+ DIM_NUM_ED_BLK, DIM_NUM_EDG_VAR, &varid);
|
|
+ break;
|
|
+ case EX_FACE_BLOCK:
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_ID_FA_BLK, VAR_FBLK_TAB,
|
|
+ DIM_NUM_FA_BLK, DIM_NUM_FAC_VAR, &varid);
|
|
+ break;
|
|
+ case EX_ELEM_BLOCK:
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_ID_EL_BLK, VAR_ELEM_TAB,
|
|
+ DIM_NUM_EL_BLK, DIM_NUM_ELE_VAR, &varid);
|
|
+ break;
|
|
+ case EX_NODE_SET:
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_NS_IDS, VAR_NSET_TAB,
|
|
+ DIM_NUM_NS, DIM_NUM_NSET_VAR, &varid);
|
|
+ break;
|
|
+ case EX_EDGE_SET:
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_ES_IDS, VAR_ESET_TAB,
|
|
+ DIM_NUM_ES, DIM_NUM_ESET_VAR, &varid);
|
|
+ break;
|
|
+ case EX_FACE_SET:
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_FS_IDS, VAR_FSET_TAB,
|
|
+ DIM_NUM_FS, DIM_NUM_FSET_VAR, &varid);
|
|
+ break;
|
|
+ case EX_SIDE_SET:
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_SS_IDS, VAR_SSET_TAB,
|
|
+ DIM_NUM_SS, DIM_NUM_SSET_VAR, &varid);
|
|
+ break;
|
|
+ case EX_ELEM_SET:
|
|
+ status = exi_look_up_var(exoid, var_type, var_index, obj_id, VAR_ELS_IDS, VAR_ELSET_TAB,
|
|
+ DIM_NUM_ELS, DIM_NUM_ELSET_VAR, &varid);
|
|
+ break;
|
|
+ default:
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: invalid variable type (%d) specified for file id %d",
|
|
+ var_type, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ if (status != EX_NOERR) {
|
|
+ EX_FUNC_LEAVE(status);
|
|
+ }
|
|
+
|
|
+ /* store element variable values */
|
|
+ start[0] = beg_time_step - 1;
|
|
+ start[1] = 0;
|
|
+
|
|
+ if (var_type == EX_GLOBAL) {
|
|
+ /* global variables may be written
|
|
+ * - all at once (by setting var_index to 1 and num_entries_this_obj to
|
|
+ * num_glob, or
|
|
+ * - one at a time (by setting var_index to the desired index and
|
|
+ * num_entries_this_obj to 1.
|
|
+ */
|
|
+ start[1] = var_index - 1;
|
|
+ }
|
|
+ count[0] = end_time_step - beg_time_step + 1;
|
|
+ count[1] = num_entries_this_obj;
|
|
+
|
|
+ if (exi_comp_ws(exoid) == 4) {
|
|
+ status = nc_put_vara_float(exoid, varid, start, count, var_vals);
|
|
+ }
|
|
+ else {
|
|
+ status = nc_put_vara_double(exoid, varid, start, count, var_vals);
|
|
+ }
|
|
+
|
|
+ if (status != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to store %s %" PRId64 " variable %d at steps %d to %d in file id %d",
|
|
+ ex_name_of_object(var_type), obj_id, var_index, beg_time_step, end_time_step, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ EX_FUNC_LEAVE(EX_NOERR);
|
|
+}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_variable_name.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_variable_name.c
|
|
index 579f33cab2..780d53a695 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_variable_name.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_variable_name.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2025 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -38,14 +38,14 @@
|
|
|
|
int ex_put_variable_name(int exoid, ex_entity_type obj_type, int var_num, const char *var_name)
|
|
{
|
|
- int status;
|
|
- int varid;
|
|
+ int status = 0;
|
|
+ int varid = 0;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- const char *vname;
|
|
+ const char *vname = NULL;
|
|
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -78,7 +78,7 @@ int ex_put_variable_name(int exoid, ex_entity_type obj_type, int var_num, const
|
|
}
|
|
|
|
/* write EXODUS variable name */
|
|
- status = ex__put_name(exoid, varid, var_num - 1, var_name, obj_type, "variable", __func__);
|
|
+ status = exi_put_name(exoid, varid, var_num - 1, var_name, obj_type, "variable", __func__);
|
|
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_variable_names.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_variable_names.c
|
|
index c085241df5..58248c8b99 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_variable_names.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_variable_names.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -43,7 +43,7 @@ static int ex_put_var_names_int(int exoid, char *tname, char *dnumvar, char *vna
|
|
"ERROR: failed to locate number of %s variables in file id %d", tname, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if ((status = nc_inq_varid(exoid, vnames, varid)) != NC_NOERR) {
|
|
@@ -57,9 +57,9 @@ static int ex_put_var_names_int(int exoid, char *tname, char *dnumvar, char *vna
|
|
tname, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
/*!
|
|
@@ -122,14 +122,14 @@ error = ex_put_variable_names (exoid, EX_NODAL, num_nod_vars, var_names);
|
|
|
|
*/
|
|
|
|
-int ex_put_variable_names(int exoid, ex_entity_type obj_type, int num_vars, char *var_names[])
|
|
+int ex_put_variable_names(int exoid, ex_entity_type obj_type, int num_vars, char *const var_names[])
|
|
{
|
|
int varid = 0;
|
|
int status = 0;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -178,7 +178,7 @@ int ex_put_variable_names(int exoid, ex_entity_type obj_type, int num_vars, char
|
|
}
|
|
|
|
/* write EXODUS variable names */
|
|
- status = ex__put_names(exoid, varid, num_vars, var_names, obj_type, "variable", __func__);
|
|
+ status = exi_put_names(exoid, varid, num_vars, var_names, obj_type, "variable", __func__);
|
|
|
|
EX_FUNC_LEAVE(status);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_put_variable_param.c b/ThirdParty/exodusII/vtkexodusII/src/ex_put_variable_param.c
|
|
index f899d1c95a..3e48464c3c 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_put_variable_param.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_put_variable_param.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2020, 2022, 2023, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -7,7 +7,7 @@
|
|
*/
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
-#include "exodusII_int.h" // for ex__compress_variable, etc
|
|
+#include "exodusII_int.h" // for exi_compress_variable, etc
|
|
|
|
/*! \cond INTERNAL */
|
|
static int ex_prepare_result_var(int exoid, int num_vars, char *type_name, char *dim_name,
|
|
@@ -18,9 +18,6 @@ static int ex_prepare_result_var(int exoid, int num_vars, char *type_name, char
|
|
int varid;
|
|
int dims[2];
|
|
int dim_str_name;
|
|
-#if NC_HAS_HDF5
|
|
- int fill = NC_FILL_CHAR;
|
|
-#endif
|
|
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
@@ -37,14 +34,14 @@ static int ex_prepare_result_var(int exoid, int num_vars, char *type_name, char
|
|
"ERROR: failed to define number of %s variables in file id %d", type_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
- return (EX_FATAL); /* exit define mode and return */
|
|
+ return EX_FATAL; /* exit define mode and return */
|
|
}
|
|
|
|
/* Now define type_name variable name variable */
|
|
if ((status = nc_inq_dimid(exoid, DIM_STR_NAME, &dim_str_name)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get string length in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
dims[0] = dimid;
|
|
@@ -60,13 +57,14 @@ static int ex_prepare_result_var(int exoid, int num_vars, char *type_name, char
|
|
type_name, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
- return (EX_FATAL); /* exit define mode and return */
|
|
+ return EX_FATAL; /* exit define mode and return */
|
|
}
|
|
- ex__set_compact_storage(exoid, varid);
|
|
-#if NC_HAS_HDF5
|
|
+ exi_set_compact_storage(exoid, varid);
|
|
+#if defined(EX_CAN_USE_NC_DEF_VAR_FILL)
|
|
+ int fill = NC_FILL_CHAR;
|
|
nc_def_var_fill(exoid, varid, 0, &fill);
|
|
#endif
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
/*! \endcond */
|
|
|
|
@@ -131,7 +129,7 @@ int ex_put_variable_param(int exoid, ex_entity_type obj_type, int num_vars)
|
|
int status;
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -162,7 +160,7 @@ int ex_put_variable_param(int exoid, ex_entity_type obj_type, int num_vars)
|
|
}
|
|
|
|
if (obj_type == EX_NODAL) {
|
|
- if ((status = nc_inq_dimid(exoid, DIM_NUM_NODES, &num_nod_dim)) != NC_NOERR) {
|
|
+ if (nc_inq_dimid(exoid, DIM_NUM_NODES, &num_nod_dim) != NC_NOERR) {
|
|
EX_FUNC_LEAVE(EX_NOERR); /* Probably no nodes on database (e.g., badly
|
|
load-balanced parallel run) */
|
|
}
|
|
@@ -176,7 +174,7 @@ int ex_put_variable_param(int exoid, ex_entity_type obj_type, int num_vars)
|
|
}
|
|
|
|
/* put file into define mode */
|
|
- if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
@@ -184,8 +182,8 @@ int ex_put_variable_param(int exoid, ex_entity_type obj_type, int num_vars)
|
|
|
|
/* define dimensions and variables */
|
|
if (obj_type == EX_GLOBAL) {
|
|
- if ((status = ex_prepare_result_var(exoid, num_vars, "global", DIM_NUM_GLO_VAR,
|
|
- VAR_NAME_GLO_VAR)) != EX_NOERR) {
|
|
+ if (ex_prepare_result_var(exoid, num_vars, "global", DIM_NUM_GLO_VAR, VAR_NAME_GLO_VAR) !=
|
|
+ EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
|
|
@@ -204,14 +202,14 @@ int ex_put_variable_param(int exoid, ex_entity_type obj_type, int num_vars)
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 2);
|
|
+ exi_compress_variable(exoid, varid, 2);
|
|
if (num_vars * 8 < 64 * 1024) {
|
|
- ex__set_compact_storage(exoid, varid);
|
|
+ exi_set_compact_storage(exoid, varid);
|
|
}
|
|
}
|
|
else if (obj_type == EX_NODAL) {
|
|
- if ((status = ex_prepare_result_var(exoid, num_vars, "nodal", DIM_NUM_NOD_VAR,
|
|
- VAR_NAME_NOD_VAR)) != EX_NOERR) {
|
|
+ if (ex_prepare_result_var(exoid, num_vars, "nodal", DIM_NUM_NOD_VAR, VAR_NAME_NOD_VAR) !=
|
|
+ EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
|
|
@@ -226,7 +224,7 @@ int ex_put_variable_param(int exoid, ex_entity_type obj_type, int num_vars)
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
goto error_ret; /* exit define mode and return */
|
|
}
|
|
- ex__compress_variable(exoid, varid, 2);
|
|
+ exi_compress_variable(exoid, varid, 2);
|
|
}
|
|
}
|
|
|
|
@@ -236,68 +234,70 @@ int ex_put_variable_param(int exoid, ex_entity_type obj_type, int num_vars)
|
|
* (the info that is stored in the obj_type variable truth table)
|
|
*/
|
|
else if (obj_type == EX_ELEM_BLOCK) {
|
|
- if ((status = ex_prepare_result_var(exoid, num_vars, "element", DIM_NUM_ELE_VAR,
|
|
- VAR_NAME_ELE_VAR)) != EX_NOERR) {
|
|
+ if (ex_prepare_result_var(exoid, num_vars, "element", DIM_NUM_ELE_VAR, VAR_NAME_ELE_VAR) !=
|
|
+ EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_NODE_SET) {
|
|
- if ((status = ex_prepare_result_var(exoid, num_vars, "nodeset", DIM_NUM_NSET_VAR,
|
|
- VAR_NAME_NSET_VAR)) != EX_NOERR) {
|
|
+ if (ex_prepare_result_var(exoid, num_vars, "nodeset", DIM_NUM_NSET_VAR, VAR_NAME_NSET_VAR) !=
|
|
+ EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_SIDE_SET) {
|
|
- if ((status = ex_prepare_result_var(exoid, num_vars, "sideset", DIM_NUM_SSET_VAR,
|
|
- VAR_NAME_SSET_VAR)) != EX_NOERR) {
|
|
+ if (ex_prepare_result_var(exoid, num_vars, "sideset", DIM_NUM_SSET_VAR, VAR_NAME_SSET_VAR) !=
|
|
+ EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_ASSEMBLY) {
|
|
- if ((status = ex_prepare_result_var(exoid, num_vars, "assembly", DIM_NUM_ASSEMBLY_VAR,
|
|
- VAR_NAME_ASSEMBLY_VAR)) != EX_NOERR) {
|
|
+ if (ex_prepare_result_var(exoid, num_vars, "assembly", DIM_NUM_ASSEMBLY_VAR,
|
|
+ VAR_NAME_ASSEMBLY_VAR) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_BLOB) {
|
|
- if ((status = ex_prepare_result_var(exoid, num_vars, "blob", DIM_NUM_BLOB_VAR,
|
|
- VAR_NAME_BLOB_VAR)) != EX_NOERR) {
|
|
+ if (ex_prepare_result_var(exoid, num_vars, "blob", DIM_NUM_BLOB_VAR, VAR_NAME_BLOB_VAR) !=
|
|
+ EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_EDGE_BLOCK) {
|
|
- if ((status = ex_prepare_result_var(exoid, num_vars, "edge", DIM_NUM_EDG_VAR,
|
|
- VAR_NAME_EDG_VAR)) != EX_NOERR) {
|
|
+ if (ex_prepare_result_var(exoid, num_vars, "edge", DIM_NUM_EDG_VAR, VAR_NAME_EDG_VAR) !=
|
|
+ EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_FACE_BLOCK) {
|
|
- if ((status = ex_prepare_result_var(exoid, num_vars, "face", DIM_NUM_FAC_VAR,
|
|
- VAR_NAME_FAC_VAR)) != EX_NOERR) {
|
|
+ if (ex_prepare_result_var(exoid, num_vars, "face", DIM_NUM_FAC_VAR, VAR_NAME_FAC_VAR) !=
|
|
+ EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_EDGE_SET) {
|
|
- if ((status = ex_prepare_result_var(exoid, num_vars, "edgeset", DIM_NUM_ESET_VAR,
|
|
- VAR_NAME_ESET_VAR)) != EX_NOERR) {
|
|
+ if (ex_prepare_result_var(exoid, num_vars, "edgeset", DIM_NUM_ESET_VAR, VAR_NAME_ESET_VAR) !=
|
|
+ EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_FACE_SET) {
|
|
- if ((status = ex_prepare_result_var(exoid, num_vars, "faceset", DIM_NUM_FSET_VAR,
|
|
- VAR_NAME_FSET_VAR)) != EX_NOERR) {
|
|
+ if (ex_prepare_result_var(exoid, num_vars, "faceset", DIM_NUM_FSET_VAR, VAR_NAME_FSET_VAR) !=
|
|
+ EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
else if (obj_type == EX_ELEM_SET) {
|
|
- if ((status = ex_prepare_result_var(exoid, num_vars, "elementset", DIM_NUM_ELSET_VAR,
|
|
- VAR_NAME_ELSET_VAR)) != EX_NOERR) {
|
|
+ if (ex_prepare_result_var(exoid, num_vars, "elementset", DIM_NUM_ELSET_VAR,
|
|
+ VAR_NAME_ELSET_VAR) != EX_NOERR) {
|
|
goto error_ret;
|
|
}
|
|
}
|
|
|
|
/* leave define mode */
|
|
- if ((status = ex__leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode");
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
@@ -305,6 +305,6 @@ int ex_put_variable_param(int exoid, ex_entity_type obj_type, int num_vars)
|
|
|
|
/* Fatal error: exit definition mode and return */
|
|
error_ret:
|
|
- ex__leavedef(exoid, __func__);
|
|
+ exi_leavedef(exoid, __func__);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_threadsafe.c b/ThirdParty/exodusII/vtkexodusII/src/ex_threadsafe.c
|
|
index b334069d1f..f68cea4bf6 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_threadsafe.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_threadsafe.c
|
|
@@ -36,7 +36,7 @@ static void ex_key_destructor(void *key_val)
|
|
abort(); \
|
|
} while (0)
|
|
|
|
-void ex__pthread_first_thread_init(void)
|
|
+void exi_pthread_first_thread_init(void)
|
|
{
|
|
int err = pthread_mutexattr_init(&EX_g.attribute);
|
|
if (err != 0) {
|
|
@@ -60,7 +60,7 @@ void ex__pthread_first_thread_init(void)
|
|
}
|
|
}
|
|
|
|
-int ex__mutex_lock(EX_mutex_t *mutex)
|
|
+int exi_mutex_lock(EX_mutex_t *mutex)
|
|
{
|
|
int ret_value = pthread_mutex_lock(&mutex->atomic_lock);
|
|
if (ret_value != 0) {
|
|
@@ -69,7 +69,7 @@ int ex__mutex_lock(EX_mutex_t *mutex)
|
|
return ret_value;
|
|
}
|
|
|
|
-int ex__mutex_unlock(EX_mutex_t *mutex, const char *func, int line)
|
|
+int exi_mutex_unlock(EX_mutex_t *mutex, const char *func, int line)
|
|
{
|
|
int ret_value = pthread_mutex_unlock(&mutex->atomic_lock);
|
|
if (ret_value != 0) {
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_update.c b/ThirdParty/exodusII/vtkexodusII/src/ex_update.c
|
|
index 88cb746e9d..52b0d91013 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_update.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_update.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2021, 2024 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -20,7 +20,7 @@
|
|
|
|
#include "exodusII.h" // for ex_err, etc
|
|
#include "exodusII_int.h" // for EX_FATAL, EX_NOERR
|
|
-
|
|
+#include <assert.h>
|
|
/*!
|
|
* \ingroup Utilities
|
|
* updates an opened EXODUS file (or EXODUS history file)
|
|
@@ -29,16 +29,20 @@
|
|
|
|
int ex_update(int exoid)
|
|
{
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int status;
|
|
-
|
|
EX_FUNC_ENTER();
|
|
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
+#ifndef NDEBUG
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
+ assert(!file->in_define_mode && file->persist_define_mode == 0);
|
|
+#endif
|
|
+
|
|
+ int status;
|
|
if ((status = nc_sync(exoid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to update file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
diff --git a/ThirdParty/exodusII/vtkexodusII/src/ex_utils.c b/ThirdParty/exodusII/vtkexodusII/src/ex_utils.c
|
|
index 3b477e7841..e7b4ad2735 100644
|
|
--- a/ThirdParty/exodusII/vtkexodusII/src/ex_utils.c
|
|
+++ b/ThirdParty/exodusII/vtkexodusII/src/ex_utils.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
+ * Copyright(C) 1999-2025 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
@@ -11,8 +11,8 @@
|
|
*
|
|
*****************************************************************************/
|
|
|
|
-#if defined(DEBUG_QSORT)
|
|
-#endif
|
|
+#define _GNU_SOURCE
|
|
+#include <stdlib.h>
|
|
|
|
#include <errno.h>
|
|
#include <stdbool.h>
|
|
@@ -20,25 +20,25 @@
|
|
#include "exodusII.h"
|
|
#include "exodusII_int.h"
|
|
|
|
-struct ex__obj_stats *exoII_eb = 0;
|
|
-struct ex__obj_stats *exoII_ed = 0;
|
|
-struct ex__obj_stats *exoII_fa = 0;
|
|
-struct ex__obj_stats *exoII_ns = 0;
|
|
-struct ex__obj_stats *exoII_es = 0;
|
|
-struct ex__obj_stats *exoII_fs = 0;
|
|
-struct ex__obj_stats *exoII_ss = 0;
|
|
-struct ex__obj_stats *exoII_els = 0;
|
|
-struct ex__obj_stats *exoII_em = 0;
|
|
-struct ex__obj_stats *exoII_edm = 0;
|
|
-struct ex__obj_stats *exoII_fam = 0;
|
|
-struct ex__obj_stats *exoII_nm = 0;
|
|
-struct ex__obj_stats *exoII_ass = 0;
|
|
+struct exi_obj_stats *exoII_eb = NULL;
|
|
+struct exi_obj_stats *exoII_ed = NULL;
|
|
+struct exi_obj_stats *exoII_fa = NULL;
|
|
+struct exi_obj_stats *exoII_ns = NULL;
|
|
+struct exi_obj_stats *exoII_es = NULL;
|
|
+struct exi_obj_stats *exoII_fs = NULL;
|
|
+struct exi_obj_stats *exoII_ss = NULL;
|
|
+struct exi_obj_stats *exoII_els = NULL;
|
|
+struct exi_obj_stats *exoII_em = NULL;
|
|
+struct exi_obj_stats *exoII_edm = NULL;
|
|
+struct exi_obj_stats *exoII_fam = NULL;
|
|
+struct exi_obj_stats *exoII_nm = NULL;
|
|
+struct exi_obj_stats *exoII_ass = NULL;
|
|
|
|
/*****************************************************************************
|
|
*
|
|
* utility routines for string conversions
|
|
- * ex__catstr - concatenate string/number (where number is converted to ASCII)
|
|
- * ex__catstr2 - concatenate string1/number1/string2/number2 "
|
|
+ * exi_catstr - concatenate string/number (where number is converted to ASCII)
|
|
+ * exi_catstr2 - concatenate string1/number1/string2/number2 "
|
|
*
|
|
* NOTE: these routines reuse the same storage over and over to build
|
|
* concatenated strings, because the strings are just passed to netCDF
|
|
@@ -50,15 +50,22 @@ struct ex__obj_stats *exoII_ass = 0;
|
|
static char ret_string[10 * (MAX_VAR_NAME_LENGTH + 1)];
|
|
static char *cur_string = &ret_string[0];
|
|
|
|
-#ifndef _MSC_VER
|
|
+#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || \
|
|
+ defined(__MINGW32__) || defined(_WIN64) || defined(__MINGW64__)
|
|
+#define WINDOWS__ 1
|
|
+#endif
|
|
+
|
|
+#ifndef WINDOWS__
|
|
#if NC_HAS_HDF5
|
|
-extern int H5get_libversion(unsigned *, unsigned *, unsigned *);
|
|
+extern int NC4_hdf5get_libversion(unsigned *, unsigned *, unsigned *);
|
|
#endif
|
|
#endif
|
|
|
|
+#if 0
|
|
#if NC_HAS_PNETCDF
|
|
extern char *ncmpi_inq_libvers();
|
|
#endif
|
|
+#endif
|
|
|
|
/*!
|
|
\ingroup Utilities
|
|
@@ -67,89 +74,107 @@ extern char *ncmpi_inq_libvers();
|
|
const char *ex_config(void)
|
|
{
|
|
static char buffer[2048];
|
|
- int j =
|
|
- sprintf(buffer, "\tExodus Version %s, Released %s\n", EXODUS_VERSION, EXODUS_RELEASE_DATE);
|
|
+ int buffer_size = sizeof(buffer) / sizeof(buffer[0]);
|
|
+
|
|
+ int j = snprintf(buffer, buffer_size, "\tExodus Version %s, Released %s\n", EXODUS_VERSION,
|
|
+ EXODUS_RELEASE_DATE);
|
|
#if defined(PARALLEL_AWARE_EXODUS)
|
|
- j += sprintf(buffer + j, "\t\tParallel enabled\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tParallel enabled\n");
|
|
#else
|
|
- j += sprintf(buffer + j, "\t\tParallel NOT enabled\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tParallel NOT enabled\n");
|
|
#endif
|
|
#if defined(EXODUS_THREADSAFE)
|
|
- j += sprintf(buffer + j, "\t\tThread Safe enabled\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tThread Safe enabled\n");
|
|
#else
|
|
- j += sprintf(buffer + j, "\t\tThread Safe NOT enabled\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tThread Safe NOT enabled\n");
|
|
#endif
|
|
#if defined(SEACAS_HIDE_DEPRECATED_CODE)
|
|
- j += sprintf(buffer + j, "\t\tDeprecated Functions NOT built\n\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tDeprecated Functions NOT built\n\n");
|
|
#else
|
|
- j += sprintf(buffer + j, "\t\tDeprecated Functions available\n\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tDeprecated Functions available\n\n");
|
|
#endif
|
|
#if defined(NC_VERSION)
|
|
- j += sprintf(buffer + j, "\tNetCDF Version %s\n", NC_VERSION);
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\tNetCDF Version %s\n", NC_VERSION);
|
|
#else
|
|
- j += sprintf(buffer + j, "\tNetCDF Version < 4.3.3\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\tNetCDF Version < 4.3.3\n");
|
|
#endif
|
|
#if NC_HAS_CDF5
|
|
- j += sprintf(buffer + j, "\t\tCDF5 enabled\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tCDF5 enabled\n");
|
|
#endif
|
|
-#ifndef _MSC_VER
|
|
+#ifndef WINDOWS__
|
|
#if NC_HAS_HDF5
|
|
{
|
|
unsigned major, minor, release;
|
|
- H5get_libversion(&major, &minor, &release);
|
|
- j += sprintf(buffer + j, "\t\tHDF5 enabled (%u.%u.%u)\n", major, minor, release);
|
|
+ NC4_hdf5get_libversion(&major, &minor, &release);
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tHDF5 enabled (%u.%u.%u)\n", major, minor,
|
|
+ release);
|
|
}
|
|
- j += sprintf(buffer + j, "\t\tZlib Compression (read/write) enabled\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tZlib Compression (read/write) enabled\n");
|
|
#if NC_HAS_SZIP_WRITE == 1
|
|
- j += sprintf(buffer + j, "\t\tSZip Compression (read/write) enabled\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tSZip Compression (read/write) enabled\n");
|
|
#else
|
|
- j += sprintf(buffer + j, "\t\tSZip Compression (read/write) NOT enabled\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tSZip Compression (read/write) NOT enabled\n");
|
|
+#endif
|
|
+#if NC_HAS_ZSTD == 1
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tZstd Compression enabled\n");
|
|
+#else
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tZstd Compression NOT enabled\n");
|
|
+#endif
|
|
+#if NC_HAS_QUANTIZE == 1
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tQuantization support enabled\n");
|
|
+#else
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tQuantization support NOT enabled\n");
|
|
#endif
|
|
#endif
|
|
#endif
|
|
#if defined(PARALLEL_AWARE_EXODUS)
|
|
#if NC_HAS_PARALLEL
|
|
- j += sprintf(buffer + j, "\t\tParallel IO enabled via HDF5 and/or PnetCDF\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tParallel IO enabled via HDF5 and/or PnetCDF\n");
|
|
#else
|
|
- j += sprintf(buffer + j,
|
|
+ j +=
|
|
+ snprintf(buffer + j, buffer_size - j,
|
|
"\t\tParallel IO *NOT* enabled via HDF5 and/or PnetCDF (PROBABLY A BUILD ERROR!)\n");
|
|
#endif
|
|
#if NC_HAS_PARALLEL4
|
|
- j += sprintf(buffer + j, "\t\tParallel IO enabled via HDF5\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tParallel IO enabled via HDF5\n");
|
|
#else
|
|
- j += sprintf(buffer + j, "\t\tParallel IO *NOT* enabled via HDF5\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tParallel IO *NOT* enabled via HDF5\n");
|
|
#endif
|
|
#if NC_HAS_PAR_FILTERS
|
|
- j += sprintf(buffer + j, "\t\tParallel IO supports filters\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tParallel IO supports filters\n");
|
|
#endif
|
|
#if NC_HAS_PNETCDF
|
|
{
|
|
+#if 0
|
|
char *libver = ncmpi_inq_libvers();
|
|
- j += sprintf(buffer + j, "\t\tParallel IO enabled via PnetCDF (%s)\n", libver);
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tParallel IO enabled via PnetCDF (%s)\n", libver);
|
|
+#else
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tParallel IO enabled via PnetCDF.\n");
|
|
+#endif
|
|
}
|
|
#else
|
|
- j += sprintf(buffer + j, "\t\tParallel IO *NOT* enabled via PnetCDF\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tParallel IO *NOT* enabled via PnetCDF\n");
|
|
#endif
|
|
#endif /* PARALLEL_AWARE_EXODUS */
|
|
|
|
#if NC_HAS_ERANGE_FILL
|
|
- j += sprintf(buffer + j, "\t\tERANGE_FILL support\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tERANGE_FILL support\n");
|
|
#endif
|
|
#if NC_RELAX_COORD_BOUND
|
|
- j += sprintf(buffer + j, "\t\tRELAX_COORD_BOUND defined\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tRELAX_COORD_BOUND defined\n");
|
|
#endif
|
|
#if defined(NC_COMPACT)
|
|
- j += sprintf(buffer + j, "\t\tNC_COMPACT defined\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tNC_COMPACT defined\n");
|
|
#endif
|
|
#if defined(NC_HAVE_META_H)
|
|
- j += sprintf(buffer + j, "\t\tNC_HAVE_META_H defined\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tNC_HAVE_META_H defined\n");
|
|
#endif
|
|
#if NC_HAS_NC2
|
|
- j += sprintf(buffer + j, "\t\tAPI Version 2 support enabled\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tAPI Version 2 support enabled\n");
|
|
#else
|
|
- j += sprintf(buffer + j, "\t\tAPI Version 2 support NOT enabled\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\t\tAPI Version 2 support NOT enabled\n");
|
|
#endif
|
|
- j += sprintf(buffer + j, "\n");
|
|
+ j += snprintf(buffer + j, buffer_size - j, "\n");
|
|
|
|
assert(j < 2048);
|
|
return buffer;
|
|
@@ -160,7 +185,7 @@ void ex_print_config(void) { fprintf(stderr, "%s\n", ex_config()); }
|
|
\ingroup Utilities
|
|
\undoc
|
|
*/
|
|
-int ex__check_file_type(const char *path, int *type)
|
|
+int exi_check_file_type(const char *path, int *type)
|
|
{
|
|
/* Based on (stolen from?) NC_check_file_type from netcdf sources.
|
|
|
|
@@ -173,7 +198,7 @@ int ex__check_file_type(const char *path, int *type)
|
|
|
|
#define MAGIC_NUMBER_LEN 4
|
|
|
|
- char magic[MAGIC_NUMBER_LEN+1];
|
|
+ char magic[MAGIC_NUMBER_LEN + 1];
|
|
EX_FUNC_ENTER();
|
|
|
|
*type = 0;
|
|
@@ -181,22 +206,21 @@ int ex__check_file_type(const char *path, int *type)
|
|
/* Get the 4-byte magic from the beginning of the file. */
|
|
{
|
|
FILE *fp;
|
|
- int i;
|
|
-
|
|
if (!(fp = fopen(path, "r"))) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Could not open file '%s', error = %s.", path,
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Could not open file '%s',\n\t\terror = %s.", path,
|
|
strerror(errno));
|
|
ex_err(__func__, errmsg, EX_WRONGFILETYPE);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- i = fread(magic, MAGIC_NUMBER_LEN, 1, fp);
|
|
+ int i = fread(magic, 1, MAGIC_NUMBER_LEN, fp);
|
|
magic[MAGIC_NUMBER_LEN] = '\0';
|
|
fclose(fp);
|
|
- if (i != 1) {
|
|
+ if (i != MAGIC_NUMBER_LEN) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Could not read magic data from file '%s', err = %s.",
|
|
- path, strerror(errno));
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: Could not read magic data from file '%s',\n\t\terror = %s.", path,
|
|
+ strerror(errno));
|
|
ex_err(__func__, errmsg, EX_WRONGFILETYPE);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -238,7 +262,7 @@ int ex_set_max_name_length(int exoid, int length)
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
if (length <= 0) {
|
|
@@ -246,9 +270,9 @@ int ex_set_max_name_length(int exoid, int length)
|
|
ex_err_fn(exoid, __func__, errmsg, NC_EMAXNAME);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
- if (length > NC_MAX_NAME) {
|
|
+ if (length > EX_MAX_NAME) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
- "ERROR: Max name length (%d) exceeds netcdf max name size (%d).", length, NC_MAX_NAME);
|
|
+ "ERROR: Max name length (%d) exceeds netcdf max name size (%d).", length, EX_MAX_NAME);
|
|
ex_err_fn(exoid, __func__, errmsg, NC_EMAXNAME);
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
@@ -262,18 +286,17 @@ int ex_set_max_name_length(int exoid, int length)
|
|
\ingroup Utilities
|
|
\undoc
|
|
*/
|
|
-void ex__update_max_name_length(int exoid, int length)
|
|
+void exi_update_max_name_length(int exoid, int length)
|
|
{
|
|
- int status;
|
|
- int db_length = 0;
|
|
- int rootid = exoid & EX_FILE_ID_MASK;
|
|
-
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_VOID();
|
|
}
|
|
|
|
/* Get current value of the maximum_name_length attribute... */
|
|
+ int status;
|
|
+ int db_length = 0;
|
|
+ int rootid = exoid & EX_FILE_ID_MASK;
|
|
if ((status = nc_get_att_int(rootid, NC_GLOBAL, ATT_MAX_NAME_LENGTH, &db_length)) != NC_NOERR) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
@@ -301,27 +324,19 @@ void ex__update_max_name_length(int exoid, int length)
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-int ex__put_names(int exoid, int varid, size_t num_names, char **names, ex_entity_type obj_type,
|
|
- const char *subtype, const char *routine)
|
|
+int exi_put_names(int exoid, int varid, size_t num_names, char *const *names,
|
|
+ ex_entity_type obj_type, const char *subtype, const char *routine)
|
|
{
|
|
- size_t i;
|
|
- int status;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int max_name_len = 0;
|
|
- size_t name_length;
|
|
- size_t length;
|
|
- char * int_names = NULL;
|
|
- size_t idx = 0;
|
|
- int found_name = 0;
|
|
-
|
|
EX_FUNC_ENTER();
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
/* inquire previously defined dimensions */
|
|
- name_length = ex_inquire_int(exoid, EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH) + 1;
|
|
+ size_t name_length = ex_inquire_int(exoid, EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH) + 1;
|
|
|
|
+ char *int_names = NULL;
|
|
if (!(int_names = calloc(num_names * name_length, 1))) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate memory for internal int_names "
|
|
"array in file id %d",
|
|
@@ -330,12 +345,15 @@ int ex__put_names(int exoid, int varid, size_t num_names, char **names, ex_entit
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
- for (i = 0; i < num_names; i++) {
|
|
+ size_t idx = 0;
|
|
+ int max_name_len = 0;
|
|
+ int found_name = 0;
|
|
+ for (size_t i = 0; i < num_names; i++) {
|
|
if (names != NULL && *names != NULL && *names[i] != '\0') {
|
|
found_name = 1;
|
|
ex_copy_string(&int_names[idx], names[i], name_length);
|
|
- length = strlen(names[i]) + 1;
|
|
- if (length > name_length) {
|
|
+ size_t length = strlen(names[i]) + 1;
|
|
+ if (length > (size_t)name_length) {
|
|
fprintf(stderr,
|
|
"Warning: The %s %s name '%s' is too long.\n\tIt will "
|
|
"be truncated from %d to %d characters. [Called from %s]\n",
|
|
@@ -344,15 +362,17 @@ int ex__put_names(int exoid, int varid, size_t num_names, char **names, ex_entit
|
|
length = name_length;
|
|
}
|
|
|
|
- if (length > max_name_len) {
|
|
+ if (length > (size_t)max_name_len) {
|
|
max_name_len = length;
|
|
}
|
|
}
|
|
idx += name_length;
|
|
}
|
|
|
|
+ int status;
|
|
if ((status = nc_put_var_text(exoid, varid, int_names)) != NC_NOERR) {
|
|
free(int_names);
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to store %s names in file id %d",
|
|
ex_name_of_object(obj_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
@@ -362,7 +382,7 @@ int ex__put_names(int exoid, int varid, size_t num_names, char **names, ex_entit
|
|
if (found_name) {
|
|
|
|
/* Update the maximum_name_length attribute on the file. */
|
|
- ex__update_max_name_length(exoid, max_name_len - 1);
|
|
+ exi_update_max_name_length(exoid, max_name_len - 1);
|
|
}
|
|
free(int_names);
|
|
|
|
@@ -373,25 +393,21 @@ int ex__put_names(int exoid, int varid, size_t num_names, char **names, ex_entit
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-int ex__put_name(int exoid, int varid, size_t index, const char *name, ex_entity_type obj_type,
|
|
+int exi_put_name(int exoid, int varid, size_t index, const char *name, ex_entity_type obj_type,
|
|
const char *subtype, const char *routine)
|
|
{
|
|
- int status;
|
|
- size_t start[2], count[2];
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- size_t name_length;
|
|
-
|
|
- if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
EX_FUNC_LEAVE(EX_FATAL);
|
|
}
|
|
|
|
/* inquire previously defined dimensions */
|
|
- name_length = ex_inquire_int(exoid, EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH) + 1;
|
|
+ size_t name_length = ex_inquire_int(exoid, EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH) + 1;
|
|
|
|
if (name != NULL && *name != '\0') {
|
|
- int too_long = 0;
|
|
- start[0] = index;
|
|
- start[1] = 0;
|
|
+ size_t start[2], count[2];
|
|
+ int too_long = 0;
|
|
+ start[0] = index;
|
|
+ start[1] = 0;
|
|
|
|
count[0] = 1;
|
|
count[1] = strlen(name) + 1;
|
|
@@ -406,11 +422,13 @@ int ex__put_name(int exoid, int varid, size_t index, const char *name, ex_entity
|
|
too_long = 1;
|
|
}
|
|
|
|
+ int status;
|
|
if ((status = nc_put_vara_text(exoid, varid, start, count, name)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to store %s name in file id %d",
|
|
ex_name_of_object(obj_type), exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* Add the trailing null if the variable name was too long */
|
|
@@ -420,21 +438,18 @@ int ex__put_name(int exoid, int varid, size_t index, const char *name, ex_entity
|
|
}
|
|
|
|
/* Update the maximum_name_length attribute on the file. */
|
|
- ex__update_max_name_length(exoid, count[1] - 1);
|
|
+ exi_update_max_name_length(exoid, count[1] - 1);
|
|
}
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
/*!
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-int ex__get_names(int exoid, int varid, size_t num_names, char **names, ex_entity_type obj_type,
|
|
+int exi_get_names(int exoid, int varid, size_t num_names, char **names, ex_entity_type obj_type,
|
|
const char *routine)
|
|
{
|
|
- size_t i;
|
|
- int status;
|
|
-
|
|
/* Query size of names on file
|
|
* Use the smaller of the size on file or user-specified length
|
|
*/
|
|
@@ -442,71 +457,65 @@ int ex__get_names(int exoid, int varid, size_t num_names, char **names, ex_entit
|
|
int api_name_size = ex_inquire_int(exoid, EX_INQ_MAX_READ_NAME_LENGTH);
|
|
int name_size = db_name_size < api_name_size ? db_name_size : api_name_size;
|
|
|
|
- for (i = 0; i < num_names; i++) {
|
|
- status = ex__get_name(exoid, varid, i, names[i], name_size, obj_type, routine);
|
|
+ for (size_t i = 0; i < num_names; i++) {
|
|
+ int status = exi_get_name(exoid, varid, i, names[i], name_size, obj_type, routine);
|
|
if (status != NC_NOERR) {
|
|
- return (status);
|
|
+ return status;
|
|
}
|
|
}
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
/*!
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-int ex__get_name(int exoid, int varid, size_t index, char *name, int name_size,
|
|
+int exi_get_name(int exoid, int varid, size_t index, char *name, int name_size,
|
|
ex_entity_type obj_type, const char *routine)
|
|
{
|
|
- size_t start[2], count[2];
|
|
- int status;
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int api_name_size = 0;
|
|
-
|
|
- api_name_size = ex_inquire_int(exoid, EX_INQ_MAX_READ_NAME_LENGTH);
|
|
|
|
/* read the name */
|
|
+ size_t start[2], count[2];
|
|
start[0] = index;
|
|
count[0] = 1;
|
|
start[1] = 0;
|
|
count[1] = name_size + 1;
|
|
|
|
- status = nc_get_vara_text(exoid, varid, start, count, name);
|
|
+ int status = nc_get_vara_text(exoid, varid, start, count, name);
|
|
if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to get %s name at index %d from file id %d [Called from %s]",
|
|
ex_name_of_object(obj_type), (int)index, exoid, routine);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
+ int api_name_size = ex_inquire_int(exoid, EX_INQ_MAX_READ_NAME_LENGTH);
|
|
name[api_name_size] = '\0';
|
|
|
|
- ex__trim(name);
|
|
- return (EX_NOERR);
|
|
+ exi_trim(name);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
/*!
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-void ex__trim(char *name)
|
|
+void exi_trim(char *name)
|
|
{
|
|
/* Thread-safe, reentrant */
|
|
/* Trim trailing spaces... */
|
|
- size_t size;
|
|
- char * end;
|
|
-
|
|
if (name == NULL) {
|
|
return;
|
|
}
|
|
|
|
- size = strlen(name);
|
|
+ size_t size = strlen(name);
|
|
if (size == 0) {
|
|
return;
|
|
}
|
|
|
|
- end = name + size - 1;
|
|
+ char *end = name + size - 1;
|
|
while (end >= name && isspace(*end)) {
|
|
end--;
|
|
}
|
|
@@ -514,37 +523,38 @@ void ex__trim(char *name)
|
|
*(end + 1) = '\0';
|
|
}
|
|
|
|
-/** ex__catstr - concatenate string/number (where number is converted to ASCII)
|
|
+/** exi_catstr - concatenate string/number (where number is converted to ASCII)
|
|
*/
|
|
/*!
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-char *ex__catstr(const char *string, int num)
|
|
+char *exi_catstr(const char *string, int num)
|
|
{
|
|
/* Only called from an already locked function */
|
|
char *tmp_string = cur_string;
|
|
- cur_string += sprintf(cur_string, "%s%d", string, num) + 1;
|
|
+ cur_string += snprintf(cur_string, MAX_VAR_NAME_LENGTH + 1, "%s%d", string, num) + 1;
|
|
if (cur_string - ret_string > 9 * (MAX_VAR_NAME_LENGTH + 1)) {
|
|
cur_string = ret_string;
|
|
}
|
|
- return (tmp_string);
|
|
+ return tmp_string;
|
|
}
|
|
|
|
-/** ex__catstr2 - concatenate string1num1string2num2 */
|
|
+/** exi_catstr2 - concatenate string1num1string2num2 */
|
|
/*!
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-char *ex__catstr2(const char *string1, int num1, const char *string2, int num2)
|
|
+char *exi_catstr2(const char *string1, int num1, const char *string2, int num2)
|
|
{
|
|
/* Only called from an already locked function */
|
|
char *tmp_string = cur_string;
|
|
- cur_string += sprintf(cur_string, "%s%d%s%d", string1, num1, string2, num2) + 1;
|
|
+ cur_string +=
|
|
+ snprintf(cur_string, MAX_VAR_NAME_LENGTH + 1, "%s%d%s%d", string1, num1, string2, num2) + 1;
|
|
if (cur_string - ret_string > 9 * (MAX_VAR_NAME_LENGTH + 1)) {
|
|
cur_string = ret_string;
|
|
}
|
|
- return (tmp_string);
|
|
+ return tmp_string;
|
|
}
|
|
|
|
/*!
|
|
@@ -623,7 +633,7 @@ ex_entity_type ex_var_type_to_ex_entity_type(char var_type)
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-char *ex__dim_num_objects(ex_entity_type obj_type)
|
|
+char *exi_dim_num_objects(ex_entity_type obj_type)
|
|
{
|
|
switch (obj_type) {
|
|
case EX_NODAL: return DIM_NUM_NODES;
|
|
@@ -646,7 +656,7 @@ char *ex__dim_num_objects(ex_entity_type obj_type)
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: object type %d not supported in call to %s", obj_type,
|
|
__func__);
|
|
ex_err(__func__, errmsg, EX_BADPARAM);
|
|
- return (NULL);
|
|
+ return NULL;
|
|
}
|
|
}
|
|
}
|
|
@@ -655,7 +665,7 @@ char *ex__dim_num_objects(ex_entity_type obj_type)
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-char *ex__dim_num_entries_in_object(ex_entity_type obj_type, int idx)
|
|
+char *exi_dim_num_entries_in_object(ex_entity_type obj_type, int idx)
|
|
{
|
|
switch (obj_type) {
|
|
case EX_NODAL: return DIM_NUM_NODES;
|
|
@@ -683,7 +693,7 @@ char *ex__dim_num_entries_in_object(ex_entity_type obj_type, int idx)
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-char *ex__name_var_of_object(ex_entity_type obj_type, int i, int j)
|
|
+char *exi_name_var_of_object(ex_entity_type obj_type, int i, int j)
|
|
{
|
|
switch (obj_type) {
|
|
case EX_ASSEMBLY: return VAR_ASSEMBLY_VAR(i, j);
|
|
@@ -701,7 +711,7 @@ char *ex__name_var_of_object(ex_entity_type obj_type, int i, int j)
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: object type %d not supported in call to %s", obj_type,
|
|
__func__);
|
|
ex_err(__func__, errmsg, EX_BADPARAM);
|
|
- return (NULL);
|
|
+ return NULL;
|
|
}
|
|
}
|
|
}
|
|
@@ -710,7 +720,7 @@ char *ex__name_var_of_object(ex_entity_type obj_type, int i, int j)
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-char *ex__name_red_var_of_object(ex_entity_type obj_type, int id)
|
|
+char *exi_name_red_var_of_object(ex_entity_type obj_type, int id)
|
|
{
|
|
switch (obj_type) {
|
|
case EX_ASSEMBLY: return VAR_ASSEMBLY_RED_VAR(id);
|
|
@@ -728,7 +738,7 @@ char *ex__name_red_var_of_object(ex_entity_type obj_type, int id)
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: object type %d not supported in call to %s", obj_type,
|
|
__func__);
|
|
ex_err(__func__, errmsg, EX_BADPARAM);
|
|
- return (NULL);
|
|
+ return NULL;
|
|
}
|
|
}
|
|
}
|
|
@@ -737,7 +747,7 @@ char *ex__name_red_var_of_object(ex_entity_type obj_type, int id)
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-char *ex__name_of_map(ex_entity_type map_type, int map_index)
|
|
+char *exi_name_of_map(ex_entity_type map_type, int map_index)
|
|
{
|
|
switch (map_type) {
|
|
case EX_NODE_MAP: return VAR_NODE_MAP(map_index);
|
|
@@ -750,7 +760,7 @@ char *ex__name_of_map(ex_entity_type map_type, int map_index)
|
|
|
|
/*****************************************************************************
|
|
*
|
|
-* ex__id_lkup - look up id
|
|
+* exi_id_lkup - look up id
|
|
*
|
|
* entry conditions -
|
|
* input parameters:
|
|
@@ -770,105 +780,104 @@ char *ex__name_of_map(ex_entity_type map_type, int map_index)
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
|
|
+int exi_id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
|
|
{
|
|
- char * id_table;
|
|
- char * id_dim;
|
|
- char * stat_table;
|
|
+ char *id_table = NULL;
|
|
+ char *id_dim = NULL;
|
|
+ char *stat_table = NULL;
|
|
int varid, dimid;
|
|
- size_t dim_len, j;
|
|
+ size_t dim_len;
|
|
int64_t i;
|
|
int64_t *id_vals = NULL;
|
|
- int * stat_vals = NULL;
|
|
+ int *stat_vals = NULL;
|
|
|
|
- static bool filled = false;
|
|
static bool sequential = false;
|
|
- struct ex__obj_stats *tmp_stats;
|
|
+ struct exi_obj_stats *tmp_stats;
|
|
int status;
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
|
|
switch (id_type) {
|
|
- case EX_NODAL: return (0);
|
|
- case EX_GLOBAL: return (0);
|
|
+ case EX_NODAL: return 0;
|
|
+ case EX_GLOBAL: return 0;
|
|
case EX_ASSEMBLY: return num;
|
|
case EX_BLOB: return num;
|
|
case EX_ELEM_BLOCK:
|
|
id_table = VAR_ID_EL_BLK; /* id array name */
|
|
id_dim = DIM_NUM_EL_BLK; /* id array dimension name*/
|
|
stat_table = VAR_STAT_EL_BLK; /* id status array name */
|
|
- tmp_stats = ex__get_stat_ptr(exoid, &exoII_eb);
|
|
+ tmp_stats = exi_get_stat_ptr(exoid, &exoII_eb);
|
|
break;
|
|
case EX_NODE_SET:
|
|
id_table = VAR_NS_IDS;
|
|
id_dim = DIM_NUM_NS;
|
|
stat_table = VAR_NS_STAT;
|
|
- tmp_stats = ex__get_stat_ptr(exoid, &exoII_ns);
|
|
+ tmp_stats = exi_get_stat_ptr(exoid, &exoII_ns);
|
|
break;
|
|
case EX_SIDE_SET:
|
|
id_table = VAR_SS_IDS;
|
|
id_dim = DIM_NUM_SS;
|
|
stat_table = VAR_SS_STAT;
|
|
- tmp_stats = ex__get_stat_ptr(exoid, &exoII_ss);
|
|
+ tmp_stats = exi_get_stat_ptr(exoid, &exoII_ss);
|
|
break;
|
|
case EX_EDGE_BLOCK:
|
|
id_table = VAR_ID_ED_BLK;
|
|
id_dim = DIM_NUM_ED_BLK;
|
|
stat_table = VAR_STAT_ED_BLK;
|
|
- tmp_stats = ex__get_stat_ptr(exoid, &exoII_ed);
|
|
+ tmp_stats = exi_get_stat_ptr(exoid, &exoII_ed);
|
|
break;
|
|
case EX_FACE_BLOCK:
|
|
id_table = VAR_ID_FA_BLK;
|
|
id_dim = DIM_NUM_FA_BLK;
|
|
stat_table = VAR_STAT_FA_BLK;
|
|
- tmp_stats = ex__get_stat_ptr(exoid, &exoII_fa);
|
|
+ tmp_stats = exi_get_stat_ptr(exoid, &exoII_fa);
|
|
break;
|
|
case EX_EDGE_SET:
|
|
id_table = VAR_ES_IDS;
|
|
id_dim = DIM_NUM_ES;
|
|
stat_table = VAR_ES_STAT;
|
|
- tmp_stats = ex__get_stat_ptr(exoid, &exoII_es);
|
|
+ tmp_stats = exi_get_stat_ptr(exoid, &exoII_es);
|
|
break;
|
|
case EX_FACE_SET:
|
|
id_table = VAR_FS_IDS;
|
|
id_dim = DIM_NUM_FS;
|
|
stat_table = VAR_FS_STAT;
|
|
- tmp_stats = ex__get_stat_ptr(exoid, &exoII_fs);
|
|
+ tmp_stats = exi_get_stat_ptr(exoid, &exoII_fs);
|
|
break;
|
|
case EX_ELEM_SET:
|
|
id_table = VAR_ELS_IDS;
|
|
id_dim = DIM_NUM_ELS;
|
|
stat_table = VAR_ELS_STAT;
|
|
- tmp_stats = ex__get_stat_ptr(exoid, &exoII_els);
|
|
+ tmp_stats = exi_get_stat_ptr(exoid, &exoII_els);
|
|
break;
|
|
case EX_NODE_MAP:
|
|
id_table = VAR_NM_PROP(1);
|
|
id_dim = DIM_NUM_NM;
|
|
stat_table = "";
|
|
- tmp_stats = ex__get_stat_ptr(exoid, &exoII_nm);
|
|
+ tmp_stats = exi_get_stat_ptr(exoid, &exoII_nm);
|
|
break;
|
|
case EX_EDGE_MAP:
|
|
id_table = VAR_EDM_PROP(1);
|
|
id_dim = DIM_NUM_EDM;
|
|
stat_table = "";
|
|
- tmp_stats = ex__get_stat_ptr(exoid, &exoII_edm);
|
|
+ tmp_stats = exi_get_stat_ptr(exoid, &exoII_edm);
|
|
break;
|
|
case EX_FACE_MAP:
|
|
id_table = VAR_FAM_PROP(1);
|
|
id_dim = DIM_NUM_FAM;
|
|
stat_table = "";
|
|
- tmp_stats = ex__get_stat_ptr(exoid, &exoII_fam);
|
|
+ tmp_stats = exi_get_stat_ptr(exoid, &exoII_fam);
|
|
break;
|
|
case EX_ELEM_MAP:
|
|
id_table = VAR_EM_PROP(1);
|
|
id_dim = DIM_NUM_EM;
|
|
stat_table = "";
|
|
- tmp_stats = ex__get_stat_ptr(exoid, &exoII_em);
|
|
+ tmp_stats = exi_get_stat_ptr(exoid, &exoII_em);
|
|
break;
|
|
default:
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unsupported id array type %d for file id %d", id_type,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if ((tmp_stats->id_vals == NULL) || (!(tmp_stats->valid_ids))) {
|
|
@@ -882,7 +891,7 @@ int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate id array dimension in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* Next get value of dimension */
|
|
@@ -890,7 +899,7 @@ int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s array length in file id %d",
|
|
id_table, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* get variable id of id array */
|
|
@@ -898,7 +907,7 @@ int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s array in file id %d", id_table,
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* allocate space for id array and initialize to zero to ensure
|
|
@@ -907,7 +916,7 @@ int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate memory for %s array for file id %d", id_table, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
|
|
@@ -922,12 +931,12 @@ int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
|
|
free(id_vals);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
status = nc_get_var_int(exoid, varid, id_vals_int);
|
|
if (status == NC_NOERR) {
|
|
- for (i = 0; i < dim_len; i++) {
|
|
- id_vals[i] = (int64_t)id_vals_int[i];
|
|
+ for (size_t iii = 0; iii < dim_len; iii++) {
|
|
+ id_vals[iii] = (int64_t)id_vals_int[iii];
|
|
}
|
|
}
|
|
free(id_vals_int);
|
|
@@ -938,17 +947,17 @@ int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
free(id_vals);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* check if values in stored arrays are filled with non-zeroes */
|
|
- filled = true;
|
|
- sequential = true;
|
|
- for (i = 0; i < dim_len; i++) {
|
|
- if (id_vals[i] != i + 1) {
|
|
+ bool filled = true;
|
|
+ sequential = true;
|
|
+ for (size_t iii = 0; iii < dim_len; iii++) {
|
|
+ if (id_vals[iii] != (int64_t)iii + 1) {
|
|
sequential = false;
|
|
}
|
|
- if (id_vals[i] == EX_INVALID_ID || id_vals[i] == NC_FILL_INT) {
|
|
+ if (id_vals[iii] == EX_INVALID_ID || id_vals[iii] == NC_FILL_INT) {
|
|
filled = false;
|
|
sequential = false;
|
|
break; /* id array hasn't been completely filled with valid ids yet */
|
|
@@ -968,19 +977,19 @@ int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
|
|
sequential = tmp_stats->sequential;
|
|
}
|
|
|
|
- if (sequential && num < dim_len) {
|
|
+ if (sequential && (size_t)num < dim_len) {
|
|
i = num - 1;
|
|
}
|
|
else {
|
|
/* Do a linear search through the id array to find the array value
|
|
corresponding to the passed index number */
|
|
- for (i = 0; i < dim_len; i++) {
|
|
+ for (i = 0; i < (int64_t)dim_len; i++) {
|
|
if (id_vals[i] == num) {
|
|
break; /* found the id requested */
|
|
}
|
|
}
|
|
}
|
|
- if (i >= dim_len) /* failed to find id number */
|
|
+ if (i >= (int64_t)dim_len) /* failed to find id number */
|
|
{
|
|
if (!(tmp_stats->valid_ids)) {
|
|
free(id_vals);
|
|
@@ -988,7 +997,7 @@ int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate id %" PRId64 " for file id %d", num,
|
|
exoid);
|
|
ex_set_err(__func__, errmsg, EX_LOOKUPFAIL);
|
|
- return (-EX_LOOKUPFAIL); /*if we got here, the id array value doesn't exist */
|
|
+ return -EX_LOOKUPFAIL; /*if we got here, the id array value doesn't exist */
|
|
}
|
|
|
|
/* Now check status array to see if object is null */
|
|
@@ -1000,7 +1009,7 @@ int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to allocate memory for %s array for file id %d", id_table, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* first time through or status arrays haven't been filled yet */
|
|
@@ -1015,11 +1024,11 @@ int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to get %s array from file id %d",
|
|
stat_table, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
else {
|
|
- for (j = 0; j < dim_len; j++) {
|
|
+ for (size_t j = 0; j < dim_len; j++) {
|
|
stat_vals[j] = 1;
|
|
}
|
|
}
|
|
@@ -1043,31 +1052,32 @@ int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
|
|
if (!(tmp_stats->valid_stat)) {
|
|
free(stat_vals);
|
|
}
|
|
- return (-((int)i + 1)); /* return index into id array (1-based) */
|
|
+ return -((int)i + 1); /* return index into id array (1-based) */
|
|
}
|
|
if (!(tmp_stats->valid_stat)) {
|
|
free(stat_vals);
|
|
}
|
|
- return (i + 1); /* return index into id array (1-based) */
|
|
+ return i + 1; /* return index into id array (1-based) */
|
|
}
|
|
|
|
/******************************************************************************
|
|
*
|
|
- * ex__get_stat_ptr - returns a pointer to a structure of object ids
|
|
+ * exi_get_stat_ptr - returns a pointer to a structure of object ids
|
|
*
|
|
*****************************************************************************/
|
|
|
|
/*! this routine returns a pointer to a structure containing the ids of
|
|
* element blocks, node sets, or side sets according to exoid; if there
|
|
- * is not a structure that matches the exoid, one is created
|
|
+ * is not a structure that matches the exoid, one is created.
|
|
+ *
|
|
+ * NOTE: If this file contains `groups` or `change sets`, then each
|
|
+ * group will have its own stat_ptr set of lists...
|
|
* \internal
|
|
*/
|
|
|
|
-struct ex__obj_stats *ex__get_stat_ptr(int exoid, struct ex__obj_stats **obj_ptr)
|
|
+struct exi_obj_stats *exi_get_stat_ptr(int exoid, struct exi_obj_stats **obj_ptr)
|
|
{
|
|
- struct ex__obj_stats *tmp_ptr;
|
|
-
|
|
- tmp_ptr = *obj_ptr;
|
|
+ struct exi_obj_stats *tmp_ptr = *obj_ptr;
|
|
|
|
while (tmp_ptr) {
|
|
if ((tmp_ptr)->exoid == exoid) {
|
|
@@ -1077,7 +1087,7 @@ struct ex__obj_stats *ex__get_stat_ptr(int exoid, struct ex__obj_stats **obj_ptr
|
|
}
|
|
|
|
if (!tmp_ptr) { /* exoid not found */
|
|
- tmp_ptr = (struct ex__obj_stats *)calloc(1, sizeof(struct ex__obj_stats));
|
|
+ tmp_ptr = (struct exi_obj_stats *)calloc(1, sizeof(struct exi_obj_stats));
|
|
tmp_ptr->exoid = exoid;
|
|
tmp_ptr->next = *obj_ptr;
|
|
tmp_ptr->id_vals = 0;
|
|
@@ -1092,7 +1102,7 @@ struct ex__obj_stats *ex__get_stat_ptr(int exoid, struct ex__obj_stats **obj_ptr
|
|
|
|
/******************************************************************************
|
|
*
|
|
- * ex__rm_stat_ptr - removes a pointer to a structure of object ids
|
|
+ * exi_rm_stat_ptr - removes a pointer to a structure of object ids
|
|
*
|
|
*****************************************************************************/
|
|
|
|
@@ -1100,63 +1110,69 @@ struct ex__obj_stats *ex__get_stat_ptr(int exoid, struct ex__obj_stats **obj_ptr
|
|
* element blocks, node sets, or side sets according to exoid; this
|
|
* is necessary to clean up because netCDF reuses file ids; should be
|
|
* called from ex_close
|
|
+ *
|
|
+ * NOTE: If this file contains `groups` or `change sets`, then each
|
|
+ * group will have its own stat_ptr set of lists. However,
|
|
+ * this routine is called from ex_close which only closes the
|
|
+ * root id, so we need to iterate the entire list to see if there
|
|
+ * are any subgroups of the root group.
|
|
* \internal
|
|
*/
|
|
|
|
-void ex__rm_stat_ptr(int exoid, struct ex__obj_stats **obj_ptr)
|
|
+void exi_rm_stat_ptr(int exoid, struct exi_obj_stats **obj_ptr)
|
|
{
|
|
- struct ex__obj_stats *last_head_list_ptr, *tmp_ptr;
|
|
-
|
|
- tmp_ptr = *obj_ptr;
|
|
- last_head_list_ptr = *obj_ptr; /* save last head pointer */
|
|
-
|
|
- while (tmp_ptr) /* Walk linked list of file ids/vals */
|
|
- {
|
|
- if (exoid == tmp_ptr->exoid) /* linear search for exodus file id */
|
|
- {
|
|
- if (tmp_ptr == *obj_ptr) { /* Are we at the head of the list? */
|
|
- *obj_ptr = (*obj_ptr)->next; /* yes, reset ptr to head of list */
|
|
+ struct exi_obj_stats *tmp_ptr = *obj_ptr;
|
|
+ struct exi_obj_stats *last_head_list_ptr = *obj_ptr; /* save last head pointer */
|
|
+
|
|
+ int root_id = exoid & EX_FILE_ID_MASK;
|
|
+ while (tmp_ptr) { /* Walk linked list of file ids/vals */
|
|
+ if (root_id == (tmp_ptr->exoid & EX_FILE_ID_MASK)) { /* linear search for exodus file id */
|
|
+ if (tmp_ptr == *obj_ptr) { /* Are we at the head of the list? */
|
|
+ *obj_ptr = (*obj_ptr)->next; /* yes, reset ptr to head of list */
|
|
}
|
|
else { /* no, remove this record from chain*/
|
|
last_head_list_ptr->next = tmp_ptr->next;
|
|
}
|
|
- free(tmp_ptr->id_vals); /* free up memory */
|
|
- free(tmp_ptr->stat_vals);
|
|
- free(tmp_ptr);
|
|
- break; /* Quit if found */
|
|
+ struct exi_obj_stats *tmp = tmp_ptr;
|
|
+ tmp_ptr = tmp_ptr->next;
|
|
+ free(tmp->id_vals); /* free up memory */
|
|
+ free(tmp->stat_vals);
|
|
+ free(tmp);
|
|
+ }
|
|
+ else {
|
|
+ last_head_list_ptr = tmp_ptr; /* save last head pointer */
|
|
+ tmp_ptr = tmp_ptr->next; /* Loop back if not */
|
|
}
|
|
- last_head_list_ptr = tmp_ptr; /* save last head pointer */
|
|
- tmp_ptr = tmp_ptr->next; /* Loop back if not */
|
|
}
|
|
}
|
|
|
|
/* structures to hold number of blocks of that type for each file id */
|
|
-static struct ex__list_item *ed_ctr_list = 0; /* edge blocks */
|
|
-static struct ex__list_item *fa_ctr_list = 0; /* face blocks */
|
|
-static struct ex__list_item *eb_ctr_list = 0; /* element blocks */
|
|
+static struct exi_list_item *ed_ctr_list = NULL; /* edge blocks */
|
|
+static struct exi_list_item *fa_ctr_list = NULL; /* face blocks */
|
|
+static struct exi_list_item *eb_ctr_list = NULL; /* element blocks */
|
|
|
|
/* structures to hold number of sets of that type for each file id */
|
|
-static struct ex__list_item *ns_ctr_list = 0; /* node sets */
|
|
-static struct ex__list_item *es_ctr_list = 0; /* edge sets */
|
|
-static struct ex__list_item *fs_ctr_list = 0; /* face sets */
|
|
-static struct ex__list_item *ss_ctr_list = 0; /* side sets */
|
|
-static struct ex__list_item *els_ctr_list = 0; /* element sets */
|
|
+static struct exi_list_item *ns_ctr_list = NULL; /* node sets */
|
|
+static struct exi_list_item *es_ctr_list = NULL; /* edge sets */
|
|
+static struct exi_list_item *fs_ctr_list = NULL; /* face sets */
|
|
+static struct exi_list_item *ss_ctr_list = NULL; /* side sets */
|
|
+static struct exi_list_item *els_ctr_list = NULL; /* element sets */
|
|
|
|
/* structures to hold number of blobs/assemblies for each file id */
|
|
-static struct ex__list_item *assm_ctr_list = 0; /* assemblies */
|
|
-static struct ex__list_item *blob_ctr_list = 0; /* blobs */
|
|
+static struct exi_list_item *assm_ctr_list = NULL; /* assemblies */
|
|
+static struct exi_list_item *blob_ctr_list = NULL; /* blobs */
|
|
|
|
/* structures to hold number of maps of that type for each file id */
|
|
-static struct ex__list_item *nm_ctr_list = 0; /* node maps */
|
|
-static struct ex__list_item *edm_ctr_list = 0; /* edge maps */
|
|
-static struct ex__list_item *fam_ctr_list = 0; /* face maps */
|
|
-static struct ex__list_item *em_ctr_list = 0; /* element maps */
|
|
+static struct exi_list_item *nm_ctr_list = NULL; /* node maps */
|
|
+static struct exi_list_item *edm_ctr_list = NULL; /* edge maps */
|
|
+static struct exi_list_item *fam_ctr_list = NULL; /* face maps */
|
|
+static struct exi_list_item *em_ctr_list = NULL; /* element maps */
|
|
|
|
/*!
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-struct ex__list_item **ex__get_counter_list(ex_entity_type obj_type)
|
|
+struct exi_list_item **exi_get_counter_list(ex_entity_type obj_type)
|
|
{
|
|
/* Thread-safe, but is dealing with globals */
|
|
/* Only called from a routine which will be using locks */
|
|
@@ -1175,13 +1191,13 @@ struct ex__list_item **ex__get_counter_list(ex_entity_type obj_type)
|
|
case EX_ELEM_SET: return &els_ctr_list;
|
|
case EX_EDGE_MAP: return &edm_ctr_list;
|
|
case EX_FACE_MAP: return &fam_ctr_list;
|
|
- default: return (NULL);
|
|
+ default: return NULL;
|
|
}
|
|
}
|
|
|
|
/******************************************************************************
|
|
*
|
|
- * ex__inc_file_item - increment file item
|
|
+ * exi_inc_file_item - increment file item
|
|
*
|
|
*****************************************************************************/
|
|
|
|
@@ -1207,10 +1223,13 @@ struct ex__list_item **ex__get_counter_list(ex_entity_type obj_type)
|
|
* \internal
|
|
*/
|
|
|
|
-int ex__inc_file_item(int exoid, /* file id */
|
|
- struct ex__list_item **list_ptr) /* ptr to ptr to list_item */
|
|
+/* NOTE: If this is done for a file which contains `groups` or `change sets`, then
|
|
+ * the exoid refers to the specific group id and not the `root_id`...
|
|
+ */
|
|
+int exi_inc_file_item(int exoid, /* file id */
|
|
+ struct exi_list_item **list_ptr) /* ptr to ptr to list_item */
|
|
{
|
|
- struct ex__list_item *tlist_ptr = *list_ptr; /* use temp list ptr to walk linked list */
|
|
+ struct exi_list_item *tlist_ptr = *list_ptr; /* use temp list ptr to walk linked list */
|
|
while (tlist_ptr) { /* Walk linked list of file ids/vals */
|
|
if (exoid == tlist_ptr->exo_id) { /* linear search for exodus file id */
|
|
break; /* Quit if found */
|
|
@@ -1220,17 +1239,17 @@ int ex__inc_file_item(int exoid, /* file id */
|
|
|
|
if (!tlist_ptr) { /* ptr NULL? */
|
|
/* allocate space for new structure record */
|
|
- tlist_ptr = (struct ex__list_item *)calloc(1, sizeof(struct ex__list_item));
|
|
+ tlist_ptr = (struct exi_list_item *)calloc(1, sizeof(struct exi_list_item));
|
|
tlist_ptr->exo_id = exoid; /* insert file id */
|
|
tlist_ptr->next = *list_ptr; /* insert into head of list */
|
|
*list_ptr = tlist_ptr; /* fix up new head of list */
|
|
}
|
|
- return (tlist_ptr->value++);
|
|
+ return tlist_ptr->value++;
|
|
}
|
|
|
|
/*****************************************************************************
|
|
*
|
|
- * ex__get_file_item - return count
|
|
+ * exi_get_file_item - return count
|
|
*
|
|
*****************************************************************************/
|
|
|
|
@@ -1256,14 +1275,14 @@ int ex__inc_file_item(int exoid, /* file id */
|
|
* \internal
|
|
*/
|
|
|
|
-int ex__get_file_item(int exoid, /* file id */
|
|
- struct ex__list_item **list_ptr) /* ptr to ptr to list_item */
|
|
+int exi_get_file_item(int exoid, /* file id */
|
|
+ struct exi_list_item **list_ptr) /* ptr to ptr to list_item */
|
|
{
|
|
/* Not thread-safe: list_ptr passed in is a global
|
|
* Would probably work ok with multiple threads since read-only,
|
|
* but possible that list_ptr will be modified while being used
|
|
*/
|
|
- struct ex__list_item *tlist_ptr = *list_ptr; /* use temp list ptr to walk linked list */
|
|
+ struct exi_list_item *tlist_ptr = *list_ptr; /* use temp list ptr to walk linked list */
|
|
while (tlist_ptr) { /* Walk linked list of file ids/vals */
|
|
if (exoid == tlist_ptr->exo_id) { /* linear search for exodus file id */
|
|
break; /* Quit if found */
|
|
@@ -1272,15 +1291,15 @@ int ex__get_file_item(int exoid, /* file id */
|
|
}
|
|
|
|
if (!tlist_ptr) { /* ptr NULL? */
|
|
- return (-1);
|
|
+ return -1;
|
|
}
|
|
|
|
- return (tlist_ptr->value);
|
|
+ return tlist_ptr->value;
|
|
}
|
|
|
|
/*****************************************************************************
|
|
*
|
|
- * ex__rm_file_item - remove file item
|
|
+ * exi_rm_file_item - remove file item
|
|
*
|
|
*****************************************************************************/
|
|
|
|
@@ -1300,29 +1319,38 @@ int ex__get_file_item(int exoid, /* file id */
|
|
* number of files in one application, items must be taken out of the
|
|
* linked lists in each of the above routines. these should be called
|
|
* after ncclose().
|
|
+ *
|
|
+ * NOTE: this is called from `ex_close` which only closes the root file and
|
|
+ * not each group or change set within that `root` file. If the file
|
|
+ * contains groups, then we need to check the entire list...
|
|
* \internal
|
|
*/
|
|
|
|
-void ex__rm_file_item(int exoid, /* file id */
|
|
- struct ex__list_item **list_ptr) /* ptr to ptr to list_item */
|
|
+void exi_rm_file_item(int exoid, /* file id */
|
|
+ struct exi_list_item **list_ptr) /* ptr to ptr to list_item */
|
|
|
|
{
|
|
- struct ex__list_item *last_head_list_ptr = *list_ptr; /* save last head pointer */
|
|
+ struct exi_list_item *last_head_list_ptr = *list_ptr; /* save last head pointer */
|
|
|
|
- struct ex__list_item *tlist_ptr = *list_ptr;
|
|
- while (tlist_ptr) { /* Walk linked list of file ids/vals */
|
|
- if (exoid == tlist_ptr->exo_id) { /* linear search for exodus file id */
|
|
- if (tlist_ptr == *list_ptr) { /* Are we at the head of the list? */
|
|
- *list_ptr = (*list_ptr)->next; /* yes, reset ptr to head of list */
|
|
+ int root_id = exoid & EX_FILE_ID_MASK;
|
|
+
|
|
+ struct exi_list_item *tlist_ptr = *list_ptr;
|
|
+ while (tlist_ptr) { /* Walk linked list of file ids/vals */
|
|
+ if (root_id == (tlist_ptr->exo_id & EX_FILE_ID_MASK)) { /* linear search for exodus file id */
|
|
+ if (tlist_ptr == *list_ptr) { /* Are we at the head of the list? */
|
|
+ *list_ptr = (*list_ptr)->next; /* yes, reset ptr to head of list */
|
|
}
|
|
else { /* no, remove this record from chain*/
|
|
last_head_list_ptr->next = tlist_ptr->next;
|
|
}
|
|
- free(tlist_ptr); /* free up memory */
|
|
- break; /* Quit if found */
|
|
+ struct exi_list_item *temp = tlist_ptr;
|
|
+ tlist_ptr = tlist_ptr->next;
|
|
+ free(temp); /* free up memory */
|
|
+ }
|
|
+ else {
|
|
+ last_head_list_ptr = tlist_ptr; /* save last head pointer */
|
|
+ tlist_ptr = tlist_ptr->next; /* Loop back if not */
|
|
}
|
|
- last_head_list_ptr = tlist_ptr; /* save last head pointer */
|
|
- tlist_ptr = tlist_ptr->next; /* Loop back if not */
|
|
}
|
|
}
|
|
|
|
@@ -1378,7 +1406,7 @@ int ex_get_num_props(int exoid, ex_entity_type obj_type)
|
|
\ingroup Utilities
|
|
\undoc
|
|
*/
|
|
-int ex__get_cpu_ws(void) { return (sizeof(float)); }
|
|
+int exi_get_cpu_ws(void) { return sizeof(float); }
|
|
|
|
/* swap - interchange v[i] and v[j] */
|
|
/*!
|
|
@@ -1388,11 +1416,9 @@ int ex__get_cpu_ws(void) { return (sizeof(float)); }
|
|
static void ex_swap(int v[], int64_t i, int64_t j)
|
|
{
|
|
/* Thread-safe, reentrant */
|
|
- int temp;
|
|
-
|
|
- temp = v[i];
|
|
- v[i] = v[j];
|
|
- v[j] = temp;
|
|
+ int temp = v[i];
|
|
+ v[i] = v[j];
|
|
+ v[j] = temp;
|
|
}
|
|
|
|
/*!
|
|
@@ -1402,11 +1428,9 @@ static void ex_swap(int v[], int64_t i, int64_t j)
|
|
static void ex_swap64(int64_t v[], int64_t i, int64_t j)
|
|
{
|
|
/* Thread-safe, reentrant */
|
|
- int64_t temp;
|
|
-
|
|
- temp = v[i];
|
|
- v[i] = v[j];
|
|
- v[j] = temp;
|
|
+ int64_t temp = v[i];
|
|
+ v[i] = v[j];
|
|
+ v[j] = temp;
|
|
}
|
|
|
|
#define EX_QSORT_CUTOFF 12
|
|
@@ -1418,8 +1442,7 @@ static void ex_swap64(int64_t v[], int64_t i, int64_t j)
|
|
static int ex_int_median3(int v[], int iv[], int64_t left, int64_t right)
|
|
{
|
|
/* Thread-safe, reentrant */
|
|
- int64_t center;
|
|
- center = (left + right) / 2;
|
|
+ int64_t center = (left + right) / 2;
|
|
|
|
if (v[iv[left]] > v[iv[center]]) {
|
|
ex_swap(iv, left, center);
|
|
@@ -1442,8 +1465,7 @@ static int ex_int_median3(int v[], int iv[], int64_t left, int64_t right)
|
|
static int64_t ex_int_median3_64(int64_t v[], int64_t iv[], int64_t left, int64_t right)
|
|
{
|
|
/* Thread-safe, reentrant */
|
|
- int64_t center;
|
|
- center = (left + right) / 2;
|
|
+ int64_t center = (left + right) / 2;
|
|
|
|
if (v[iv[left]] > v[iv[center]]) {
|
|
ex_swap64(iv, left, center);
|
|
@@ -1466,13 +1488,10 @@ static int64_t ex_int_median3_64(int64_t v[], int64_t iv[], int64_t left, int64_
|
|
static void ex_int_iqsort(int v[], int iv[], int left, int right)
|
|
{
|
|
/* Thread-safe, reentrant */
|
|
- int pivot;
|
|
- int i, j;
|
|
-
|
|
if (left + EX_QSORT_CUTOFF <= right) {
|
|
- pivot = ex_int_median3(v, iv, left, right);
|
|
- i = left;
|
|
- j = right - 1;
|
|
+ int pivot = ex_int_median3(v, iv, left, right);
|
|
+ int i = left;
|
|
+ int j = right - 1;
|
|
|
|
for (;;) {
|
|
while (v[iv[++i]] < v[pivot]) {
|
|
@@ -1502,13 +1521,10 @@ static void ex_int_iqsort(int v[], int iv[], int left, int right)
|
|
static void ex_int_iqsort64(int64_t v[], int64_t iv[], int64_t left, int64_t right)
|
|
{
|
|
/* Thread-safe, reentrant */
|
|
- int64_t pivot;
|
|
- int64_t i, j;
|
|
-
|
|
if (left + EX_QSORT_CUTOFF <= right) {
|
|
- pivot = ex_int_median3_64(v, iv, left, right);
|
|
- i = left;
|
|
- j = right - 1;
|
|
+ int64_t pivot = ex_int_median3_64(v, iv, left, right);
|
|
+ int64_t i = left;
|
|
+ int64_t j = right - 1;
|
|
|
|
for (;;) {
|
|
while (v[iv[++i]] < v[pivot]) {
|
|
@@ -1538,13 +1554,9 @@ static void ex_int_iqsort64(int64_t v[], int64_t iv[], int64_t left, int64_t rig
|
|
static void ex_int_iisort(int v[], int iv[], int N)
|
|
{
|
|
/* Thread-safe, reentrant */
|
|
- int i, j;
|
|
- int ndx = 0;
|
|
- int small;
|
|
- int tmp;
|
|
-
|
|
- small = v[iv[0]];
|
|
- for (i = 1; i < N; i++) {
|
|
+ int ndx = 0;
|
|
+ int small = v[iv[0]];
|
|
+ for (int i = 1; i < N; i++) {
|
|
if (v[iv[i]] < small) {
|
|
small = v[iv[i]];
|
|
ndx = i;
|
|
@@ -1553,8 +1565,9 @@ static void ex_int_iisort(int v[], int iv[], int N)
|
|
/* Put smallest value in slot 0 */
|
|
ex_swap(iv, 0, ndx);
|
|
|
|
- for (i = 1; i < N; i++) {
|
|
- tmp = iv[i];
|
|
+ for (int i = 1; i < N; i++) {
|
|
+ int tmp = iv[i];
|
|
+ int j;
|
|
for (j = i; v[tmp] < v[iv[j - 1]]; j--) {
|
|
iv[j] = iv[j - 1];
|
|
}
|
|
@@ -1569,13 +1582,9 @@ static void ex_int_iisort(int v[], int iv[], int N)
|
|
static void ex_int_iisort64(int64_t v[], int64_t iv[], int64_t N)
|
|
{
|
|
/* Thread-safe, reentrant */
|
|
- int64_t i, j;
|
|
- int64_t ndx = 0;
|
|
- int64_t small;
|
|
- int64_t tmp;
|
|
-
|
|
- small = v[iv[0]];
|
|
- for (i = 1; i < N; i++) {
|
|
+ int64_t ndx = 0;
|
|
+ int64_t small = v[iv[0]];
|
|
+ for (int64_t i = 1; i < N; i++) {
|
|
if (v[iv[i]] < small) {
|
|
small = v[iv[i]];
|
|
ndx = i;
|
|
@@ -1584,8 +1593,9 @@ static void ex_int_iisort64(int64_t v[], int64_t iv[], int64_t N)
|
|
/* Put smallest value in slot 0 */
|
|
ex_swap64(iv, 0, ndx);
|
|
|
|
- for (i = 1; i < N; i++) {
|
|
- tmp = iv[i];
|
|
+ for (int64_t i = 1; i < N; i++) {
|
|
+ int64_t tmp = iv[i];
|
|
+ int64_t j;
|
|
for (j = i; v[tmp] < v[iv[j - 1]]; j--) {
|
|
iv[j] = iv[j - 1];
|
|
}
|
|
@@ -1598,7 +1608,7 @@ static void ex_int_iisort64(int64_t v[], int64_t iv[], int64_t N)
|
|
* \internal
|
|
* The following 'indexed qsort' routine is modified from Sedgewicks
|
|
* algorithm It selects the pivot based on the median of the left,
|
|
- * right, and center values to try to avoid degenerate cases ocurring
|
|
+ * right, and center values to try to avoid degenerate cases occurring
|
|
* when a single value is chosen. It performs a quicksort on
|
|
* intervals down to the #EX_QSORT_CUTOFF size and then performs a final
|
|
* insertion sort on the almost sorted final array. Based on data in
|
|
@@ -1613,14 +1623,14 @@ static void ex_int_iisort64(int64_t v[], int64_t iv[], int64_t N)
|
|
* representable as 'int'.
|
|
* \internal
|
|
*/
|
|
-void ex__iqsort(int v[], int iv[], int N)
|
|
+void exi_iqsort(int v[], int iv[], size_t N)
|
|
{
|
|
/* Thread-safe, reentrant */
|
|
ex_int_iqsort(v, iv, 0, N - 1);
|
|
ex_int_iisort(v, iv, N);
|
|
|
|
#if defined(DEBUG_QSORT)
|
|
- fprintf(stderr, "Checking sort of %d values\n", N + 1);
|
|
+ fprintf(stderr, "Checking sort of %zu values\n", N + 1);
|
|
int i;
|
|
for (i = 1; i < N; i++) {
|
|
assert(v[iv[i - 1]] <= v[iv[i]]);
|
|
@@ -1628,8 +1638,8 @@ void ex__iqsort(int v[], int iv[], int N)
|
|
#endif
|
|
}
|
|
|
|
-/*! \sa ex__iqsort() */
|
|
-void ex__iqsort64(int64_t v[], int64_t iv[], int64_t N)
|
|
+/*! \sa exi_iqsort() */
|
|
+void exi_iqsort64(int64_t v[], int64_t iv[], int64_t N)
|
|
{
|
|
/* Thread-safe, reentrant */
|
|
ex_int_iqsort64(v, iv, 0, N - 1);
|
|
@@ -1656,7 +1666,7 @@ void ex__iqsort64(int64_t v[], int64_t iv[], int64_t N)
|
|
int ex_large_model(int exoid)
|
|
{
|
|
if (exoid < 0) {
|
|
- return (EXODUS_DEFAULT_SIZE); /* Specified in exodusII_int.h */
|
|
+ return EXODUS_DEFAULT_SIZE; /* Specified in exodusII_int.h */
|
|
}
|
|
|
|
/* See if the ATT_FILESIZE attribute is defined in the file */
|
|
@@ -1674,11 +1684,10 @@ int ex_large_model(int exoid)
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-int ex__get_dimension(int exoid, const char *DIMENSION, const char *label, size_t *count,
|
|
+int exi_get_dimension(int exoid, const char *DIMENSION, const char *label, size_t *count,
|
|
int *dimid, const char *routine)
|
|
{
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int status;
|
|
+ int status;
|
|
|
|
*count = 0;
|
|
*dimid = -1;
|
|
@@ -1686,11 +1695,13 @@ int ex__get_dimension(int exoid, const char *DIMENSION, const char *label, size_
|
|
if ((status = nc_inq_dimid(exoid, DIMENSION, dimid)) != NC_NOERR) {
|
|
if (routine != NULL) {
|
|
if (status == NC_EBADDIM) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: no dimension defining '%s' found in file id %d",
|
|
label, exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
}
|
|
else {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to locate dimension defining number of '%s' in file id %d", label,
|
|
exoid);
|
|
@@ -1702,6 +1713,7 @@ int ex__get_dimension(int exoid, const char *DIMENSION, const char *label, size_
|
|
|
|
if ((status = nc_inq_dimlen(exoid, *dimid, count)) != NC_NOERR) {
|
|
if (routine != NULL) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to get length of dimension defining number of '%s' in file id %d",
|
|
label, exoid);
|
|
@@ -1721,7 +1733,7 @@ size_t ex_header_size(int exoid)
|
|
return 0;
|
|
}
|
|
|
|
-void ex__set_compact_storage(int exoid, int varid)
|
|
+void exi_set_compact_storage(int exoid, int varid)
|
|
{
|
|
/* Capability was released in version 4.7.4
|
|
Only applicable to netcdf-4 files, but will
|
|
@@ -1735,31 +1747,37 @@ void ex__set_compact_storage(int exoid, int varid)
|
|
#endif
|
|
}
|
|
|
|
-/* type = 1 for integer, 2 for real, 3 for character */
|
|
+/*
|
|
+ * type = 1 for integer, 2 for real, 3 for character
|
|
+ * If type < 0, then don't compress, but do set collective on parallel
|
|
+ */
|
|
+
|
|
/*!
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-void ex__compress_variable(int exoid, int varid, int type)
|
|
+
|
|
+void exi_compress_variable(int exoid, int varid, int type)
|
|
{
|
|
#if NC_HAS_HDF5
|
|
- struct ex__file_item *file = ex__find_file_item(exoid);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
|
|
if (!file) {
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d for ex__compress_variable().",
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d for exi_compress_variable().",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
}
|
|
else {
|
|
/* Compression only supported on HDF5 (NetCDF-4) files; Do not try to compress character data */
|
|
- if (type != 3 && file->is_hdf5) {
|
|
+ int status = NC_NOERR;
|
|
+ if ((type == 1 || type == 2) && file->is_hdf5) {
|
|
if (file->compression_algorithm == EX_COMPRESS_GZIP) {
|
|
int deflate_level = file->compression_level;
|
|
- int compress = 1;
|
|
- int shuffle = file->shuffle;
|
|
if (deflate_level > 0) {
|
|
- nc_def_var_deflate(exoid, varid, shuffle, compress, deflate_level);
|
|
+ int compress = 1;
|
|
+ int shuffle = file->shuffle;
|
|
+ status = nc_def_var_deflate(exoid, varid, shuffle, compress, deflate_level);
|
|
}
|
|
}
|
|
else if (file->compression_algorithm == EX_COMPRESS_SZIP) {
|
|
@@ -1769,14 +1787,16 @@ void ex__compress_variable(int exoid, int varid, int type)
|
|
for details on SZIP library and parameters.
|
|
*/
|
|
|
|
- /* const int NC_SZIP_EC = 4; */ /* Selects entropy coding method for szip. */
|
|
-#ifndef NC_SZIP_NN
|
|
- const int NC_SZIP_NN = 32; /* Selects nearest neighbor coding method for szip. */
|
|
+#if !defined(NC_SZIP_EC)
|
|
+ const int NC_SZIP_EC = 4; /* Selects entropy coding method for szip. */
|
|
+#endif
|
|
+#if !defined(NC_SZIP_NN)
|
|
+ const int NC_SZIP_NN = 32; /* Selects nearest neighbor coding method for szip. */
|
|
#endif
|
|
/* Even and between 4 and 32; typical values are 8, 10, 16, 32 */
|
|
const int SZIP_PIXELS_PER_BLOCK =
|
|
file->compression_level == 0 ? 32 : file->compression_level;
|
|
- nc_def_var_szip(exoid, varid, NC_SZIP_NN, SZIP_PIXELS_PER_BLOCK);
|
|
+ status = nc_def_var_szip(exoid, varid, NC_SZIP_NN, SZIP_PIXELS_PER_BLOCK);
|
|
#else
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
@@ -1784,13 +1804,58 @@ void ex__compress_variable(int exoid, int varid, int type)
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
#endif
|
|
}
|
|
-
|
|
-#if defined(PARALLEL_AWARE_EXODUS)
|
|
- if (file->is_parallel && file->is_hdf5) {
|
|
- nc_var_par_access(exoid, varid, NC_COLLECTIVE);
|
|
+ else if (file->compression_algorithm == EX_COMPRESS_ZSTD) {
|
|
+#if NC_HAS_ZSTD == 1
|
|
+ status = nc_def_var_zstandard(exoid, varid, file->compression_level);
|
|
+#else
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: Compression algorithm ZSTANDARD is not supported in this version of the "
|
|
+ "netCDF library.");
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+#endif
|
|
}
|
|
+ else if (file->compression_algorithm == EX_COMPRESS_BZ2) {
|
|
+#if NC_HAS_BZ2 == 1
|
|
+ status = nc_def_var_bzip2(exoid, varid, file->compression_level);
|
|
+#else
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: Compression algorithm BZIP2 / BZ2 is not supported in this version of the "
|
|
+ "netCDF library.");
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
#endif
|
|
+ }
|
|
+ if (status != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to set compression attribute on variable in file id %d", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ }
|
|
+
|
|
+ if (type == 2 && file->quantize_nsd > 0) {
|
|
+#if NC_HAS_QUANTIZE == 1
|
|
+ // Lossy compression using netCDF quantize methods.
|
|
+ if ((status = nc_def_var_quantize(exoid, varid, NC_QUANTIZE_GRANULARBR,
|
|
+ file->quantize_nsd)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to set quanitzation method on variable in file id %d", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ }
|
|
+#else
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: Quanitzation is not supported in this version of netCDF library.");
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
|
|
+#endif
|
|
+ }
|
|
}
|
|
+#if defined(PARALLEL_AWARE_EXODUS)
|
|
+ if (file->is_parallel) {
|
|
+ nc_var_par_access(exoid, varid, NC_COLLECTIVE);
|
|
+ }
|
|
+#endif
|
|
}
|
|
#endif
|
|
}
|
|
@@ -1799,23 +1864,121 @@ void ex__compress_variable(int exoid, int varid, int type)
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-int ex__leavedef(int exoid, const char *call_rout)
|
|
+int exi_leavedef(int exoid, const char *call_func)
|
|
{
|
|
- char errmsg[MAX_ERR_LENGTH];
|
|
- int status;
|
|
+ int status;
|
|
|
|
- if ((status = nc_enddef(exoid)) != NC_NOERR) {
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to complete definition for file id %d", exoid);
|
|
- ex_err_fn(exoid, call_rout, errmsg, status);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
+ if (!file) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d for %s called from %s.", exoid,
|
|
+ __func__, call_func);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+
|
|
+ if (!file->persist_define_mode && file->in_define_mode) {
|
|
+ if ((status = nc_enddef(exoid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to complete definition for file id %d",
|
|
+ exoid);
|
|
+ ex_err_fn(exoid, call_func, errmsg, status);
|
|
+
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ file->in_define_mode = 0;
|
|
+ }
|
|
+ return EX_NOERR;
|
|
+}
|
|
+
|
|
+int exi_redef(int exoid, const char *call_func)
|
|
+{
|
|
+ int status;
|
|
+
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
+
|
|
+ if (!file) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d for %s called from %s.", exoid,
|
|
+ __func__, call_func);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+
|
|
+ if (!file->in_define_mode) {
|
|
+ if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to put file %d into definition mode in exi_redef called from %s",
|
|
+ exoid, call_func);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ file->in_define_mode = 1;
|
|
+ }
|
|
+ return EX_NOERR;
|
|
+}
|
|
+
|
|
+int exi_persist_redef(int exoid, const char *call_func)
|
|
+{
|
|
+ int status;
|
|
|
|
- return (EX_FATAL);
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
+
|
|
+ if (!file) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d for %s called from %s.", exoid,
|
|
+ __func__, call_func);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+
|
|
+ if ((++file->persist_define_mode == 1) && !file->in_define_mode) {
|
|
+ if ((status = nc_redef(exoid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(
|
|
+ errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to put file %d into definition mode in exi_persist_redef called from %s",
|
|
+ exoid, call_func);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ file->in_define_mode = 1;
|
|
+ }
|
|
+ return EX_NOERR;
|
|
+}
|
|
+
|
|
+int exi_persist_leavedef(int exoid, const char *call_func)
|
|
+{
|
|
+ int status;
|
|
+
|
|
+ struct exi_file_item *file = exi_find_file_item(exoid);
|
|
+ if (!file) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d for %s called from %s.", exoid,
|
|
+ __func__, call_func);
|
|
+ ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+
|
|
+ if ((file->persist_define_mode-- == 1) && file->in_define_mode) {
|
|
+ if ((status = nc_enddef(exoid)) != NC_NOERR) {
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to complete definition for file id %d",
|
|
+ exoid);
|
|
+ ex_err_fn(exoid, call_func, errmsg, status);
|
|
+
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ file->in_define_mode = 0;
|
|
+ file->persist_define_mode = 0;
|
|
}
|
|
- return (EX_NOERR);
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
static int warning_output = 0;
|
|
|
|
-int ex__check_version(int run_version)
|
|
+int exi_check_version(int run_version)
|
|
{
|
|
if (run_version != EX_API_VERS_NODOT && warning_output == 0) {
|
|
int run_version_major = run_version / 100;
|
|
@@ -1837,7 +2000,7 @@ int ex__check_version(int run_version)
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-int ex__handle_mode(unsigned int my_mode, int is_parallel, int run_version)
|
|
+int exi_handle_mode(unsigned int my_mode, int is_parallel, int run_version)
|
|
{
|
|
char errmsg[MAX_ERR_LENGTH];
|
|
int nc_mode = 0;
|
|
@@ -1854,7 +2017,7 @@ int ex__handle_mode(unsigned int my_mode, int is_parallel, int run_version)
|
|
/* Do not include EX_64BIT_DATA in this list */
|
|
static unsigned int all_modes = EX_NORMAL_MODEL | EX_64BIT_OFFSET | EX_NETCDF4 | EX_PNETCDF;
|
|
|
|
- ex__check_version(run_version);
|
|
+ exi_check_version(run_version);
|
|
|
|
/*
|
|
* See if specified mode is supported in the version of netcdf we
|
|
@@ -2112,9 +2275,16 @@ int ex__handle_mode(unsigned int my_mode, int is_parallel, int run_version)
|
|
* unless specified differently via environment.
|
|
*/
|
|
{
|
|
- char *option = getenv("EXODUS_VERBOSE");
|
|
- if (option != NULL) {
|
|
- exoptval = EX_VERBOSE;
|
|
+ if (exoptval != EX_VERBOSE) {
|
|
+ /* Avoid getenv call if already in verbose mode */
|
|
+ char *option = getenv("EXODUS_VERBOSE");
|
|
+ if (option != NULL) {
|
|
+ exoptval = EX_VERBOSE;
|
|
+ if (option[0] != 'q') {
|
|
+ fprintf(stderr, "EXODUS: Setting EX_VERBOSE mode since EXODUS_VERBOSE environment "
|
|
+ "variable is set.\n");
|
|
+ }
|
|
+ }
|
|
}
|
|
ex_opts(exoptval); /* call required to set ncopts first time through */
|
|
}
|
|
@@ -2143,7 +2313,7 @@ int ex__handle_mode(unsigned int my_mode, int is_parallel, int run_version)
|
|
\internal
|
|
\undoc
|
|
*/
|
|
-int ex__populate_header(int exoid, const char *path, int my_mode, int is_parallel, int *comp_ws,
|
|
+int exi_populate_header(int exoid, const char *path, int my_mode, int is_parallel, int *comp_ws,
|
|
int *io_ws)
|
|
{
|
|
int status;
|
|
@@ -2164,7 +2334,7 @@ int ex__populate_header(int exoid, const char *path, int my_mode, int is_paralle
|
|
if ((status = nc_set_fill(exoid, NC_NOFILL, &old_fill)) != NC_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to set nofill mode in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* Verify that there is not an existing file_item struct for this
|
|
@@ -2175,7 +2345,7 @@ int ex__populate_header(int exoid, const char *path, int my_mode, int is_paralle
|
|
not know that file was closed and possibly new file opened for
|
|
this exoid
|
|
*/
|
|
- if (ex__find_file_item(exoid) != NULL) {
|
|
+ if (exi_find_file_item(exoid) != NULL) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: There is an existing file already using the file "
|
|
"id %d which was also assigned to file %s.\n\tWas "
|
|
@@ -2184,7 +2354,7 @@ int ex__populate_header(int exoid, const char *path, int my_mode, int is_paralle
|
|
exoid, path);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_BADFILEID);
|
|
nc_close(exoid);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* initialize floating point size conversion. since creating new file,
|
|
@@ -2202,12 +2372,12 @@ int ex__populate_header(int exoid, const char *path, int my_mode, int is_paralle
|
|
is_hdf5 = true;
|
|
}
|
|
|
|
- if (ex__conv_init(exoid, comp_ws, io_ws, 0, int64_status, is_parallel, is_hdf5, is_pnetcdf,
|
|
+ if (exi_conv_init(exoid, comp_ws, io_ws, 0, int64_status, is_parallel, is_hdf5, is_pnetcdf,
|
|
my_mode & EX_WRITE) != EX_NOERR) {
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to init conversion routines in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, EX_LASTERR);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* put the EXODUS version number, and i/o floating point word size as
|
|
@@ -2224,7 +2394,7 @@ int ex__populate_header(int exoid, const char *path, int my_mode, int is_paralle
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to store Exodus II API version attribute in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
|
|
@@ -2238,7 +2408,7 @@ int ex__populate_header(int exoid, const char *path, int my_mode, int is_paralle
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to store Exodus II file version attribute in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
|
|
@@ -2251,7 +2421,7 @@ int ex__populate_header(int exoid, const char *path, int my_mode, int is_paralle
|
|
"attribute in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
/* store Exodus file size (1=large, 0=normal) as an attribute */
|
|
@@ -2259,7 +2429,7 @@ int ex__populate_header(int exoid, const char *path, int my_mode, int is_paralle
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to store Exodus II file size attribute in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
|
|
{
|
|
@@ -2269,7 +2439,7 @@ int ex__populate_header(int exoid, const char *path, int my_mode, int is_paralle
|
|
snprintf(errmsg, MAX_ERR_LENGTH,
|
|
"ERROR: failed to add maximum_name_length attribute in file id %d", exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
|
|
@@ -2280,7 +2450,7 @@ int ex__populate_header(int exoid, const char *path, int my_mode, int is_paralle
|
|
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to add int64_status attribute in file id %d",
|
|
exoid);
|
|
ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
+ return EX_FATAL;
|
|
}
|
|
}
|
|
|
|
@@ -2290,11 +2460,11 @@ int ex__populate_header(int exoid, const char *path, int my_mode, int is_paralle
|
|
#else
|
|
if ((status = nc_enddef(exoid)) != NC_NOERR) {
|
|
#endif
|
|
- snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to complete definition for file id %d", exoid);
|
|
- ex_err_fn(exoid, __func__, errmsg, status);
|
|
- return (EX_FATAL);
|
|
-}
|
|
-return EX_NOERR;
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to complete definition for file id %d", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ return EX_NOERR;
|
|
}
|
|
|
|
/*!
|
|
@@ -2311,3 +2481,171 @@ char *ex_copy_string(char *dest, char const *source, size_t elements)
|
|
*d = '\0';
|
|
return d;
|
|
}
|
|
+
|
|
+/* Used by the entity attribute code `ex_get_attribute(s)` and `ex_put_attribute(s)` */
|
|
+int exi_get_varid(int exoid, ex_entity_type obj_type, ex_entity_id id)
|
|
+{
|
|
+ if (exi_check_valid_file_id(exoid, __func__) == EX_FATAL) {
|
|
+ EX_FUNC_LEAVE(EX_FATAL);
|
|
+ }
|
|
+
|
|
+ if (obj_type == EX_GLOBAL) {
|
|
+ return NC_GLOBAL;
|
|
+ }
|
|
+
|
|
+ int status = 0;
|
|
+ char errmsg[MAX_ERR_LENGTH];
|
|
+
|
|
+ if (obj_type == EX_NODAL) {
|
|
+ /* For the nodal entity attributes, we store it on the
|
|
+ "coor_names" variable. Not exactly logical, but it exists in any
|
|
+ model that has nodes, so it at least gives us a place to put the
|
|
+ attribute. Another possibility would be the nodal x-coordinate
|
|
+ variable...
|
|
+ */
|
|
+ int varid = 0;
|
|
+ if ((status = nc_inq_varid(exoid, VAR_NAME_COOR, &varid)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to locate node block variable id in file id %d", exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ return varid;
|
|
+ }
|
|
+
|
|
+ /* Everything else ... */
|
|
+ /* First, locate index of this objects id `obj_type` id array */
|
|
+ /* First, locate index of this objects id `obj_type` id array */
|
|
+ int id_ndx = exi_id_lkup(exoid, obj_type, id);
|
|
+ if (id_ndx <= 0) {
|
|
+ ex_get_err(NULL, NULL, &status);
|
|
+ if (status != 0) {
|
|
+ if (status == EX_NULLENTITY) { /* NULL object? */
|
|
+ return EX_NOERR;
|
|
+ }
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to locate %s id %" PRId64 " in id array in file id %d",
|
|
+ ex_name_of_object(obj_type), id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ const char *entryptr = NULL;
|
|
+ switch (obj_type) {
|
|
+ case EX_ASSEMBLY: entryptr = VAR_ENTITY_ASSEMBLY(id_ndx); break;
|
|
+ case EX_BLOB: entryptr = VAR_ENTITY_BLOB(id_ndx); break;
|
|
+ case EX_NODE_SET: entryptr = VAR_NODE_NS(id_ndx); break;
|
|
+ case EX_EDGE_SET: entryptr = VAR_EDGE_ES(id_ndx); break;
|
|
+ case EX_FACE_SET: entryptr = VAR_FACE_FS(id_ndx); break;
|
|
+ case EX_SIDE_SET: entryptr = VAR_ELEM_SS(id_ndx); break;
|
|
+ case EX_ELEM_SET: entryptr = VAR_ELEM_ELS(id_ndx); break;
|
|
+ case EX_EDGE_BLOCK: entryptr = VAR_EBCONN(id_ndx); break;
|
|
+ case EX_FACE_BLOCK: entryptr = VAR_FBCONN(id_ndx); break;
|
|
+ case EX_ELEM_BLOCK: entryptr = VAR_CONN(id_ndx); break;
|
|
+ default:
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: object type %d not supported in call to %s", obj_type,
|
|
+ __func__);
|
|
+ ex_err(__func__, errmsg, EX_BADPARAM);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+
|
|
+ int varid = 0;
|
|
+ if ((status = nc_inq_varid(exoid, entryptr, &varid)) != NC_NOERR) {
|
|
+ snprintf(errmsg, MAX_ERR_LENGTH,
|
|
+ "ERROR: failed to locate entity list array for %s %" PRId64 " in file id %d",
|
|
+ ex_name_of_object(obj_type), id, exoid);
|
|
+ ex_err_fn(exoid, __func__, errmsg, status);
|
|
+ return EX_FATAL;
|
|
+ }
|
|
+ return varid;
|
|
+}
|
|
+
|
|
+/*
|
|
+ * Code from:
|
|
+ * https://stackoverflow.com/questions/11034002/how-to-get-absolute-path-of-file-or-directory-that-does-not-exist
|
|
+ *
|
|
+ * Return the input path in a canonical form. This is achieved by
|
|
+ * expanding all symbolic links, resolving references to "." and "..",
|
|
+ * and removing duplicate "/" characters.
|
|
+ *
|
|
+ * If the file exists, its path is canonicalized and returned. If the file,
|
|
+ * or parts of the containing directory, do not exist, path components are
|
|
+ * removed from the end until an existing path is found. The remainder of the
|
|
+ * path is then appended to the canonical form of the existing path,
|
|
+ * and returned. Consequently, the returned path may not exist. The portion
|
|
+ * of the path which exists, however, is represented in canonical form.
|
|
+ *
|
|
+ * If successful, this function returns a C-string, which needs to be freed by
|
|
+ * the caller using free().
|
|
+ *
|
|
+ * ARGUMENTS:
|
|
+ * file_path
|
|
+ * File path, whose canonical form to return.
|
|
+ *
|
|
+ * RETURNS:
|
|
+ * On success, returns the canonical path to the file, which needs to be freed
|
|
+ * by the caller.
|
|
+ *
|
|
+ * On failure, returns NULL.
|
|
+ */
|
|
+char *exi_canonicalize_filename(char const *file_path)
|
|
+{
|
|
+#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || \
|
|
+ defined(__MINGW32__) || defined(_WIN64) || defined(__MINGW64__)
|
|
+ return _fullpath(NULL, file_path, _MAX_PATH);
|
|
+#else
|
|
+ char *canonical_file_path = NULL;
|
|
+ unsigned int file_path_len = strlen(file_path);
|
|
+
|
|
+ if (file_path_len > 0) {
|
|
+ canonical_file_path = realpath(file_path, NULL);
|
|
+ if (canonical_file_path == NULL && errno == ENOENT) {
|
|
+ // The file was not found. Back up to a segment which exists,
|
|
+ // and append the remainder of the path to it.
|
|
+ char *file_path_copy = NULL;
|
|
+ if (file_path[0] == '/' || (strncmp(file_path, "./", 2) == 0) ||
|
|
+ (strncmp(file_path, "../", 3) == 0)) {
|
|
+ // Absolute path, or path starts with "./" or "../"
|
|
+ file_path_copy = strdup(file_path);
|
|
+ }
|
|
+ else {
|
|
+ // Relative path
|
|
+ file_path_copy = (char *)malloc(strlen(file_path) + 3);
|
|
+ strcpy(file_path_copy, "./");
|
|
+ strcat(file_path_copy, file_path);
|
|
+ }
|
|
+
|
|
+ // Remove path components from the end, until an existing path is found
|
|
+ for (int char_idx = strlen(file_path_copy) - 1; char_idx >= 0 && canonical_file_path == NULL;
|
|
+ --char_idx) {
|
|
+ if (file_path_copy[char_idx] == '/') {
|
|
+ // Remove the slash character
|
|
+ file_path_copy[char_idx] = '\0';
|
|
+
|
|
+ canonical_file_path = realpath(file_path_copy, NULL);
|
|
+ if (canonical_file_path != NULL) {
|
|
+ // An existing path was found. Append the remainder of the path
|
|
+ // to a canonical form of the existing path.
|
|
+ char *combined_file_path = (char *)malloc(strlen(canonical_file_path) +
|
|
+ strlen(file_path_copy + char_idx + 1) + 2);
|
|
+ strcpy(combined_file_path, canonical_file_path);
|
|
+ strcat(combined_file_path, "/");
|
|
+ strcat(combined_file_path, file_path_copy + char_idx + 1);
|
|
+ free(canonical_file_path);
|
|
+ canonical_file_path = combined_file_path;
|
|
+ }
|
|
+ else {
|
|
+ // The path segment does not exist. Replace the slash character
|
|
+ // and keep trying by removing the previous path component.
|
|
+ file_path_copy[char_idx] = '/';
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
+ free(file_path_copy);
|
|
+ }
|
|
+ }
|
|
+ return canonical_file_path;
|
|
+#endif
|
|
+}
|