⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 expblk.c

📁 一个用来实现偏微分方程中网格的计算库
💻 C
📖 第 1 页 / 共 2 页
字号:
    return(EX_NOERR);  }  /* put netcdf file into define mode  */  if ((status=nc_redef (exoid)) != NC_NOERR) {    exerrval = status;    sprintf(errmsg,"Error: failed to place file id %d into define mode",exoid);    ex_err("ex_put_block",errmsg,exerrval);    return (EX_FATAL);  }  switch (blk_type) {  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;    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;    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;    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;    break;  case EX_ELEM_BLOCK:    dneblk = DIM_NUM_EL_IN_BLK(blk_id_ndx);    dnnpe = DIM_NUM_NOD_PER_EL(blk_id_ndx);    dnepe = DIM_NUM_EDG_PER_EL(blk_id_ndx);    dnfpe = DIM_NUM_FAC_PER_EL(blk_id_ndx);    dnape = DIM_NUM_ATT_IN_BLK(blk_id_ndx);    vblkatt = VAR_ATTRIB(blk_id_ndx);    vattnam = VAR_NAME_ATTRIB(blk_id_ndx);    vnodcon = VAR_CONN(blk_id_ndx);    vedgcon = VAR_ECONN(blk_id_ndx);    vfaccon = VAR_FCONN(blk_id_ndx);    break;  }  /* define some dimensions and variables*/  if ((status = nc_def_dim(exoid,dneblk,num_entries_this_blk, &numblkdim )) != NC_NOERR) {    if (status == NC_ENAMEINUSE) {        /* duplicate entry */      exerrval = status;      sprintf(errmsg,	      "Error: %s %d already defined in file id %d",	      ex_name_of_object(blk_type), blk_id,exoid);      ex_err("ex_put_block",errmsg,exerrval);    } else {      exerrval = status;      sprintf(errmsg,	      "Error: failed to define number of entities/block for %s %d file id %d",	      ex_name_of_object(blk_type), blk_id,exoid);      ex_err("ex_put_block",errmsg,exerrval);    }    goto error_ret;         /* exit define mode and return */  }  if ((status = nc_def_dim(exoid,dnnpe,num_nodes_per_entry, &nnodperentdim)) != NC_NOERR) {    exerrval = status;    sprintf(errmsg,	    "Error: failed to define number of nodes/entity for %s %d in file id %d",	    ex_name_of_object(blk_type), blk_id,exoid);    ex_err("ex_put_block",errmsg,exerrval);    goto error_ret;         /* exit define mode and return */  }  if (dnepe && num_edges_per_entry > 0 ) {    if ((status = nc_def_dim (exoid,dnepe,num_edges_per_entry, &nedgperentdim)) != NC_NOERR) {      exerrval = status;      sprintf(errmsg,	      "Error: failed to define number of edges/entity for %s %d in file id %d",	      ex_name_of_object(blk_type), blk_id,exoid);      ex_err("ex_put_block",errmsg,exerrval);      goto error_ret;         /* exit define mode and return */    }  }  if ( dnfpe && num_faces_per_entry > 0 ) {    if ((status = nc_def_dim(exoid,dnfpe,num_faces_per_entry, &nfacperentdim)) != NC_NOERR) {      exerrval = status;      sprintf(errmsg,	      "Error: failed to define number of faces/entity for %s %d in file id %d",	      ex_name_of_object(blk_type), blk_id,exoid);      ex_err("ex_put_block",errmsg,exerrval);      goto error_ret;         /* exit define mode and return */    }  }  /* element attribute array */  if (num_attr_per_entry > 0) {    if ((status = nc_def_dim(exoid, dnape, num_attr_per_entry, &numattrdim)) != NC_NOERR) {      exerrval = status;      sprintf(errmsg,	      "Error: failed to define number of attributes in %s %d in file id %d",	      ex_name_of_object(blk_type), blk_id,exoid);      ex_err("ex_put_block",errmsg,exerrval);      goto error_ret;         /* exit define mode and return */    }    dims[0] = numblkdim;    dims[1] = numattrdim;    if ((status = nc_def_var(exoid, vblkatt, nc_flt_code(exoid), 2, dims, &varid)) != NC_NOERR) {      exerrval = status;      sprintf(errmsg,	      "Error:  failed to define attributes for %s %d in file id %d",	      ex_name_of_object(blk_type), blk_id,exoid);      ex_err("ex_put_block",errmsg,exerrval);      goto error_ret;         /* exit define mode and return */    }    /* inquire previously defined dimensions  */    if ((status = nc_inq_dimid(exoid, DIM_STR, &strdim)) != NC_NOERR) {      exerrval = status;      sprintf(errmsg,	      "Error: failed to get string length in file id %d",exoid);      ex_err("ex_put_block",errmsg,exerrval);      return (EX_FATAL);    }         /* Attribute names... */    dims[0] = numattrdim;    dims[1] = strdim;	        if ((status = nc_def_var(exoid, vattnam, NC_CHAR, 2, dims, &varid)) != NC_NOERR) {      exerrval = status;      sprintf(errmsg,	      "Error: failed to define %s attribute name array in file id %d",	      ex_name_of_object(blk_type), exoid);      ex_err("ex_put_block",errmsg,exerrval);      goto error_ret;         /* exit define mode and return */    }  }  /* element connectivity array */  dims[0] = numblkdim;  dims[1] = nnodperentdim;  if ((status = nc_def_var(exoid, vnodcon, NC_INT, 2, dims, &connid)) != NC_NOERR) {    exerrval = status;    sprintf(errmsg,	    "Error: failed to create connectivity array for %s %d in file id %d",	    ex_name_of_object(blk_type), blk_id,exoid);    ex_err("ex_put_block",errmsg,exerrval);    goto error_ret;         /* exit define mode and return */  }  /* store element type as attribute of connectivity variable */  if ((status = nc_put_att_text(exoid, connid, ATT_NAME_ELB, strlen(entry_descrip)+1, 				entry_descrip)) != NC_NOERR) {    exerrval = status;    sprintf(errmsg,	    "Error: failed to store %s type name %s in file id %d",	    ex_name_of_object(blk_type), entry_descrip,exoid);    ex_err("ex_put_block",errmsg,exerrval);    goto error_ret;         /* exit define mode and return */  }  if (vedgcon && num_edges_per_entry ) {    dims[0] = numblkdim;    dims[1] = nedgperentdim;    if ((status = nc_def_var(exoid, vedgcon, NC_INT, 2, dims, &varid)) != NC_NOERR) {      exerrval = status;      sprintf(errmsg,	      "Error: failed to create edge connectivity array for %s %d in file id %d",	      ex_name_of_object(blk_type), blk_id,exoid);      ex_err("ex_put_block",errmsg,exerrval);      goto error_ret;         /* exit define mode and return */    }  }  if ( vfaccon && num_faces_per_entry ) {    dims[0] = numblkdim;    dims[1] = nfacperentdim;    if ((status = nc_def_var(exoid, vfaccon, NC_INT, 2, dims, &varid)) != NC_NOERR) {      exerrval = status;      sprintf(errmsg,	      "Error: failed to create face connectivity array for %s %d in file id %d",	      ex_name_of_object(blk_type), blk_id,exoid);      ex_err("ex_put_block",errmsg,exerrval);      goto error_ret;         /* exit define mode and return */    }  }  /* leave define mode  */  if ((exerrval=nc_enddef (exoid)) != NC_NOERR) {    sprintf(errmsg,	    "Error: failed to complete %s definition in file id %d", 	    ex_name_of_object(blk_type), exoid);    ex_err("ex_put_block",errmsg,exerrval);    return (EX_FATAL);  }  return (EX_NOERR);  /* Fatal error: exit definition mode and return */ error_ret:  if (nc_enddef (exoid) != NC_NOERR) {    /* exit define mode */    sprintf(errmsg,	    "Error: failed to complete definition for file id %d",	    exoid);    ex_err("ex_put_block",errmsg,exerrval);  }  return (EX_FATAL);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -