1 /*
2 * Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
3 * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
4 * retains certain rights in this software.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * * Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
17 *
18 * * Neither the name of Sandia Corporation nor the names of its
19 * contributors may be used to endorse or promote products derived
20 * from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 */
35 /*****************************************************************************
36 *
37 * exgmp - ex_get_map_param
38 *
39 * entry conditions -
40 * input parameters:
41 * int exoid exodus file id
42 *
43 * exit conditions -
44 * int* num_node_maps number of node maps
45 * int* num_elem_maps number of element maps
46 *
47 * revision history -
48 *
49 *****************************************************************************/
50
51 #include "exodusII.h"
52 #include "exodusII_int.h"
53
54 /*
55 * reads the number of node and element maps
56 */
57
ex_get_map_param(int exoid,int * num_node_maps,int * num_elem_maps)58 int ex_get_map_param (int exoid,
59 int *num_node_maps,
60 int *num_elem_maps)
61 {
62 int status;
63 int dimid;
64 size_t lnum_node_maps, lnum_elem_maps;
65 char errmsg[MAX_ERR_LENGTH];
66
67 exerrval = 0; /* clear error code */
68
69
70 /* node maps are optional */
71 if (nc_inq_dimid(exoid, DIM_NUM_NM, &dimid) != NC_NOERR) {
72 *num_node_maps = 0;
73 } else {
74 if ((status = nc_inq_dimlen(exoid, dimid, &lnum_node_maps)) != NC_NOERR) {
75 exerrval = status;
76 sprintf(errmsg,
77 "Error: failed to get number of node maps in file id %d",
78 exoid);
79 ex_err("ex_get_map_param",errmsg,exerrval);
80 return (EX_FATAL);
81 }
82 *num_node_maps = lnum_node_maps;
83 }
84
85 /* element maps are optional */
86 if (nc_inq_dimid(exoid, DIM_NUM_EM, &dimid) != NC_NOERR) {
87 *num_elem_maps = 0;
88 } else {
89 if ((status = nc_inq_dimlen(exoid, dimid, &lnum_elem_maps)) != NC_NOERR) {
90 exerrval = status;
91 sprintf(errmsg,
92 "Error: failed to get number of element maps in file id %d",
93 exoid);
94 ex_err("ex_get_map_param",errmsg,exerrval);
95 return (EX_FATAL);
96 }
97 *num_elem_maps = lnum_elem_maps;
98 }
99 return (EX_NOERR);
100 }
101