1 /*
2 * Copyright(C) 1999-2020 National Technology & Engineering Solutions
3 * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
4 * NTESS, the U.S. Government retains certain rights in this software.
5 *
6 * See packages/seacas/LICENSE for details
7 */
8 /*****************************************************************************
9 *
10 * expnam - ex_put_names
11 *
12 * environment - UNIX
13 *
14 * entry conditions -
15 * input parameters:
16 * int exoid exodus file id
17 * int obj_type object type
18 * char* names ptr array of entity names
19 *
20 * exit conditions -
21 *
22 * revision history -
23 *
24 *
25 *****************************************************************************/
26
27 #include "exodusII.h" // for ex_err, etc
28 #include "exodusII_int.h" // for EX_FATAL, etc
29
30 /*!
31 * writes the entity names to the database
32 * \param exoid exodus file id
33 * \param obj_type object type
34 * \param names ptr array of entity names
35 */
36
ex_put_names(int exoid,ex_entity_type obj_type,char * names[])37 int ex_put_names(int exoid, ex_entity_type obj_type, char *names[])
38 {
39 int status;
40 int varid;
41 size_t num_entity;
42 char errmsg[MAX_ERR_LENGTH];
43
44 const char *vname = NULL;
45
46 EX_FUNC_ENTER();
47 if (ex__check_valid_file_id(exoid, __func__) == EX_FATAL) {
48 EX_FUNC_LEAVE(EX_FATAL);
49 }
50
51 switch (obj_type) {
52 /* ======== ASSEMBLY ========= */
53 case EX_ASSEMBLY:
54 snprintf(errmsg, MAX_ERR_LENGTH,
55 "ERROR: Assembly names are written using `ex_put_assembly()` function");
56 ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
57 EX_FUNC_LEAVE(EX_FATAL);
58 break;
59
60 /* ======== BLOCKS ========= */
61 case EX_EDGE_BLOCK: vname = VAR_NAME_ED_BLK; break;
62 case EX_FACE_BLOCK: vname = VAR_NAME_FA_BLK; break;
63 case EX_ELEM_BLOCK: vname = VAR_NAME_EL_BLK; break;
64
65 /* ======== SETS ========= */
66 case EX_NODE_SET: vname = VAR_NAME_NS; break;
67 case EX_EDGE_SET: vname = VAR_NAME_ES; break;
68 case EX_FACE_SET: vname = VAR_NAME_FS; break;
69 case EX_SIDE_SET: vname = VAR_NAME_SS; break;
70 case EX_ELEM_SET: vname = VAR_NAME_ELS; break;
71
72 /* ======== MAPS ========= */
73 case EX_NODE_MAP: vname = VAR_NAME_NM; break;
74 case EX_EDGE_MAP: vname = VAR_NAME_EDM; break;
75 case EX_FACE_MAP: vname = VAR_NAME_FAM; break;
76 case EX_ELEM_MAP: vname = VAR_NAME_EM; break;
77
78 /* ======== ERROR (Invalid type) ========= */
79 default:
80 snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Invalid type specified in file id %d", exoid);
81 ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
82 EX_FUNC_LEAVE(EX_FATAL);
83 }
84
85 ex__get_dimension(exoid, ex__dim_num_objects(obj_type), ex_name_of_object(obj_type), &num_entity,
86 &varid, __func__);
87
88 if ((status = nc_inq_varid(exoid, vname, &varid)) != NC_NOERR) {
89 snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s names in file id %d",
90 ex_name_of_object(obj_type), exoid);
91 ex_err_fn(exoid, __func__, errmsg, status);
92 EX_FUNC_LEAVE(EX_FATAL);
93 }
94
95 /* write EXODUS entitynames */
96 status = ex__put_names(exoid, varid, num_entity, names, obj_type, "", __func__);
97
98 EX_FUNC_LEAVE(status);
99 }
100