int ex_put_name(int exoid, ex_entity_type obj_type, ex_entity_id entity_id, const char *name)
{
  int         status;
  int         varid, ent_ndx;
  char        errmsg[MAX_ERR_LENGTH];
  const char *vobj;

  EX_FUNC_ENTER();
  ex_check_valid_file_id(exoid, __func__);

  switch (obj_type) {
  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;
  case EX_NODE_SET: vobj = VAR_NAME_NS; break;
  case EX_SIDE_SET: vobj = VAR_NAME_SS; break;
  case EX_EDGE_SET: vobj = VAR_NAME_ES; break;
  case EX_FACE_SET: vobj = VAR_NAME_FS; break;
  case EX_ELEM_SET: vobj = VAR_NAME_ELS; break;
  case EX_NODE_MAP: vobj = VAR_NAME_NM; break;
  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:
    snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: Invalid type specified in file id %d", exoid);
    ex_err(__func__, errmsg, EX_BADPARAM);
    EX_FUNC_LEAVE(EX_FATAL);
  }

  if ((status = nc_inq_varid(exoid, vobj, &varid)) != NC_NOERR) {
    snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to locate %s names in file id %d",
             ex_name_of_object(obj_type), exoid);
    ex_err(__func__, errmsg, status);
    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(__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...
   */
  if (ent_ndx < 0) {
    ent_ndx = -ent_ndx;
  }

  /* write EXODUS entityname */
  status = ex_put_name_internal(exoid, varid, ent_ndx - 1, name, obj_type, "", __func__);

  EX_FUNC_LEAVE(status);
}
Beispiel #2
0
int ex_put_name (int   exoid,
		 ex_entity_type obj_type,
		 ex_entity_id   entity_id,
		 const char *name)
{
  int status;
  int varid, ent_ndx; 
  char errmsg[MAX_ERR_LENGTH];
  const char *routine = "ex_put_name";
  const char *vobj;
   
  exerrval = 0; /* clear error code */

  switch(obj_type) {
  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;
  case EX_NODE_SET:
    vobj = VAR_NAME_NS;
    break;
  case EX_SIDE_SET:
    vobj = VAR_NAME_SS;
    break;
  case EX_EDGE_SET:
    vobj = VAR_NAME_ES;
    break;
  case EX_FACE_SET:
    vobj = VAR_NAME_FS;
    break;
  case EX_ELEM_SET:
    vobj = VAR_NAME_ELS;
    break;
  case EX_NODE_MAP:
    vobj = VAR_NAME_NM;
    break;
  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:
    exerrval = EX_BADPARAM;
    sprintf(errmsg,
	    "Error: Invalid type specified in file id %d", exoid);
    ex_err(routine,errmsg,exerrval);
    return(EX_FATAL);
  }
   
  if ((status = nc_inq_varid(exoid, vobj, &varid)) != NC_NOERR) {
    exerrval = status;
    sprintf(errmsg,
	    "Error: failed to locate %s names in file id %d",
	    ex_name_of_object(obj_type), exoid);
    ex_err(routine,errmsg,exerrval);
    return (EX_FATAL);
  }

  ent_ndx = ex_id_lkup(exoid, obj_type, entity_id);

  if (exerrval == EX_LOOKUPFAIL) {   /* could not find the element block id */
    sprintf(errmsg,
            "Error: %s id %"PRId64" not found in file id %d",
	    ex_name_of_object(obj_type), entity_id, exoid);
    ex_err("ex_put_name",errmsg,exerrval);
    return (EX_FATAL);
  }

  /* If this is a null entity, then 'ent_ndx' will be negative.
   * We don't care in this routine, so make it positive and continue...
   */
  if (ent_ndx < 0) ent_ndx = -ent_ndx;
   
  /* write EXODUS entityname */
  status = ex_put_name_internal(exoid, varid, ent_ndx-1, name, obj_type, "", routine);

  return(status);
}
int ex_put_variable_name (int   exoid,
			  ex_entity_type obj_type,
			  int   var_num,
			  const char *var_name)
{
  int status;
  int varid; 
  char errmsg[MAX_ERR_LENGTH];
  const char* vname;

  exerrval = 0; /* clear error code */

 /* inquire previously defined variables  */
  switch (obj_type) {
  case EX_GLOBAL:
    vname = VAR_NAME_GLO_VAR;
    break;
  case EX_NODAL:
    vname = VAR_NAME_NOD_VAR;
    break;
  case EX_EDGE_BLOCK:
    vname = VAR_NAME_EDG_VAR;
    break;
  case EX_FACE_BLOCK:
    vname = VAR_NAME_FAC_VAR;
    break;
  case EX_ELEM_BLOCK:
    vname = VAR_NAME_ELE_VAR;
    break;
  case EX_NODE_SET:
    vname = VAR_NAME_NSET_VAR;
    break;
  case EX_EDGE_SET:
    vname = VAR_NAME_ESET_VAR;
    break;
  case EX_FACE_SET:
    vname = VAR_NAME_FSET_VAR;
    break;
  case EX_SIDE_SET:
    vname = VAR_NAME_SSET_VAR;
    break;
  case EX_ELEM_SET:
    vname = VAR_NAME_ELSET_VAR;
    break;
  default:
    exerrval = EX_BADPARAM;
    sprintf( errmsg, "Error: Invalid variable type (%d) given for file id %d", obj_type, exoid );
    ex_err( "ex_put_variable_name", errmsg, exerrval );
    return (EX_WARN);
  }

  if ((status = nc_inq_varid(exoid, vname, &varid)) != NC_NOERR) {
    exerrval = status;
    sprintf( errmsg,
	     "Warning: no %s variables names stored in file id %d",
	     ex_name_of_object(obj_type), exoid );
    ex_err("ex_put_variable_name",errmsg,exerrval);
    return (EX_WARN);
  }

  /* write EXODUS variable name */
  status = ex_put_name_internal(exoid, varid, var_num-1, var_name, obj_type,
				"variable", "ex_put_variable_name");

  return(status);
}