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

📄 write_blocks_hdf5_r4.c

📁 做网格的好程序
💻 C
📖 第 1 页 / 共 2 页
字号:
		  (udim[0] * it[1]) +		  it[0]];	    *off = *off + 1;	  }	  	} /* end ivar loop */      } /* end i loop */    } /* end j loop */  } /* end k loop */   }void WRITE_Blocks_hdf5_r4(hid_t* file_id, 			 hid_t* dset_block, 			 hid_t* block_type_id, 			 int* max_lnblocks, 			 int* n_to_left, 			 int* lnblocks, 			 int* mdim,			 int* ndim,			 int* ngid,			 int* mflags,			 int lrefine[], 			 int nodetype[], 			 int which_child[], 			 int gid[], 			 int bflags[],			 float coord[],			 float bnd_box[],			 float work_block[],			 float unk[],			 int*  nvar,			 int*  nvar_chk_cc,			 int   checkp_on_cc[],			 float facevarx[], float facevary[], float facevarz[],			 int*  nbndvar,			 int*  nvar_chk_fc,			 int   checkp_on_fc[],			 float unk_e_x[], float unk_e_y[], float unk_e_z[],			 int*  nbndvare,			 int*  nvar_chk_ec,			 int   checkp_on_ec[],			 float unk_n[],			 int*  nbndvarc,			 int*  nvar_chk_nc,			 int   checkp_on_nc[],			 int*  nx,  int* ny, int* nz,			 int*  il0, int* iu0,			 int*  jl0, int* ju0,			 int*  kl0, int* ku0,			 int   iorder[]){  hid_t  memspace, filespace;  hsize_t  count[1];  hssize_t offset[1];  hid_t plist_id;  int ivar, i, j, k, lb, i2, j2, k2, nx2, ny2, ivar2;  int istart, iend, jstart, jend, kstart, kend;  herr_t status;  int k2d, k3d;  int off, size_block_type;  float * block_pointer;  k2d = 0;  if (*ndim >= 2) k2d = 1;  k3d = 0;  if (*ndim == 3) k3d = 1;  size_block_type = (sizeof(float)*3) +     (sizeof(float) * *ngid) * + (sizeof(float) * *mflags) +    (sizeof(float) * *mdim) + (sizeof(float) * 2 * *mdim) +    (sizeof(float)) +     (sizeof(float) * *nvar_chk_cc * (*iu0-*il0) * (*ju0-*jl0) * (*ku0-*kl0)) +    (sizeof(float) * *nvar_chk_fc * (*iu0-*il0+1) * (*ju0-*jl0) * (*ku0-*kl0)) +    (sizeof(float) * *nvar_chk_fc * (*iu0-*il0) * (*ju0-*jl0+k2d) * (*ku0-*kl0)) +    (sizeof(float) * *nvar_chk_fc * (*iu0-*il0) * (*ju0-*jl0) * (*ku0-*kl0+k3d)) +    (sizeof(float) * *nvar_chk_ec * (*iu0-*il0) * (*ju0-*jl0+k2d) * (*ku0-*kl0+k3d)) +    (sizeof(float) * *nvar_chk_ec * (*iu0-*il0+1) * (*ju0-*jl0) * (*ku0-*kl0+k3d)) +    (sizeof(float) * *nvar_chk_ec * (*iu0-*il0+1) * (*ju0-*jl0+k2d) * (*ku0-*kl0)) +    (sizeof(float) * *nvar_chk_nc * (*iu0-*il0+1) * (*ju0-*jl0+k2d) * (*ku0-*kl0+k3d));  block_pointer = (float *) malloc(size_block_type);    /* Create property list for collective dataset write */  plist_id = H5Pcreate(H5P_DATASET_XFER);  /*H5Pset_dxpl_mpio(plist_id, H5FD_MPIO_COLLECTIVE);*/  H5Pset_dxpl_mpio(plist_id, H5FD_MPIO_INDEPENDENT);  nx2 = *iu0 - *il0;  ny2 = *ju0 - *jl0;  kstart = *kl0;  kend   = *ku0;  jstart = *jl0;  jend   = *ju0;  istart = *il0;  iend   = *iu0;  if (*ndim < 3) {    kstart = 0;    kend   = 1;  }  if (*ndim < 2) {    kstart = 0;    kend   = 1;    jstart = 0;    jend   = 1;  }    for (lb = 0; lb < *max_lnblocks; lb++) {    if (lb < *lnblocks) {      off = 0;      *block_pointer = (float)lrefine[lb];      off = off + 1;      *(block_pointer+off) = (float)nodetype[lb];      off = off + 1;      *(block_pointer+off) = (float)which_child[lb];      off = off + 1;       for (i = 0; i < *ngid; i++) {	*(block_pointer+off) = (float)gid[(*ngid * lb) + i];	off = off + 1;       }      for (i = 0; i < *mflags; i++) {	*(block_pointer+off) = (float)bflags[(*mflags * lb) + i];	off = off + 1;      }      for (i = 0; i < *mdim; i++) {	*(block_pointer+off) = coord[(*mdim * lb) + i];	off = off + 1;      }      for (i = 0; i < 2 * *mdim; i++) {	*(block_pointer+off) = bnd_box[(2 * *mdim * lb) + i];	off = off + 1;      }      *(block_pointer+off) = work_block[lb];      off = off + 1;      /* unk data */      if (*nvar_chk_cc > 0) {	block_pointer_to_var(unk, iorder, *nvar, *nx, *ny, *nz,			     kstart, kend,			     jstart, jend,			     istart, iend,			     checkp_on_cc, 0, 0, lb,			     &off, block_pointer);        } /* end if (nvar_chk_cc */      /* facevarx data */      if (*nvar_chk_fc > 0) {	block_pointer_to_var(facevarx, iorder, *nbndvar, *nx+1, *ny, *nz,			     kstart, kend,			     jstart, jend,			     istart, iend+1,			     checkp_on_fc, 2, 0, lb,			     &off, block_pointer);        /* facevary data */	block_pointer_to_var(facevary, iorder, *nbndvar, *nx, *ny+k2d, *nz,			     kstart, kend,			     jstart, jend+k2d,			     istart, iend,			     checkp_on_fc, 2, 1, lb,			     &off, block_pointer);      /* facevarz data */	block_pointer_to_var(facevarz, iorder, *nbndvar, *nx, *ny, *nz+k3d,			     kstart, kend+k3d,			     jstart, jend,			     istart, iend,			     checkp_on_fc, 2, 2, lb,			     &off, block_pointer);      } /* end if (nvar_chk_fc */      /* unk_e_x data */      if (*nvar_chk_ec > 0) {	block_pointer_to_var(unk_e_x, iorder, *nbndvare, *nx, *ny+k2d, *nz+k3d,			     kstart, kend+k3d,			     jstart, jend+k2d,			     istart, iend,			     checkp_on_ec, 2, 0, lb,			     &off, block_pointer);      /* unk_e_y data */	block_pointer_to_var(unk_e_y, iorder, *nbndvare, *nx+1, *ny, *nz+k3d,			     kstart, kend+k3d,			     jstart, jend,			     istart, iend+1,			     checkp_on_ec, 2, 1, lb,			     &off, block_pointer);      /* unk_e_z data */	block_pointer_to_var(unk_e_z, iorder, *nbndvare, *nx+1, *ny+k2d, *nz,			     kstart, kend,			     jstart, jend+k2d,			     istart, iend+1,			     checkp_on_ec, 2, 2, lb,			     &off, block_pointer);      } /* end if (nvar_chk_ec */      /* unk_n data */      if (*nvar_chk_nc > 0) {	block_pointer_to_var(unk_n, iorder, *nbndvarc, *nx+1, *ny+k2d, *nz+k3d,			     kstart, kend+k3d,			     jstart, jend+k2d,			     istart, iend+1,			     checkp_on_nc, 0, 0, lb,			     &off, block_pointer);      } /* end if (nvar_chk_nc */      count[0] = 1;      memspace = H5Screate_simple(1, count, NULL);        offset[0] = *n_to_left + lb;       filespace = H5Dget_space(*dset_block);      H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset,                           NULL, count, NULL);    } else {      int lb2;      lb2 = *lnblocks - 1;      count[0] = 1;      memspace = H5Screate_simple(1, count, NULL);        offset[0] = *n_to_left + lb2;       filespace = H5Dget_space(*dset_block);      H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset,                           NULL, count, NULL);    }        status = H5Dwrite(*dset_block, *block_type_id, memspace, filespace,                       plist_id, block_pointer);    H5Sclose(filespace);    H5Sclose(memspace);      }  H5Pclose(plist_id);  free(block_pointer);}#ifdef UNDERSCOREvoid write_blocks_hdf5_r4_ (char* file_name_in, #endif#ifdef DOUBLE_UNDERSCOREvoid write_blocks_hdf5_r4__ (char* file_name_in, #endif#ifndef UNDERSCORE #ifndef DOUBLE_UNDERSCOREvoid write_blocks_hdf5_r4 (char* file_name_in, #endif#endif			   int*  tot_blocks,			   int*  tot_blocks_wr,			   int*  max_lnblocks,			   int*  lnblocks,			   int*  n_to_left,			   int*  mdim,			   int*  ndim,			   int*  ngid,			   int*  mflags,			   int   lrefine[], 			   int   nodetype[], 			   int   which_child[], 			   int   gid[], 			   int   bflags[],			   float coord[],			   float bnd_box[],			   float work_block[],			   float unk[],			   int*  nvar,			   int*  nvar_chk_cc,			   int   checkp_on_cc[],			   float facevarx[], float facevary[], float facevarz[],			   int*  nbndvar,			   int*  nvar_chk_fc,			   int   checkp_on_fc[],			   float unk_e_x[], float unk_e_y[], float unk_e_z[],			   int*  nbndvare,			   int*  nvar_chk_ec,			   int   checkp_on_ec[],			   float unk_n[],			   int*  nbndvarc,			   int*  nvar_chk_nc,			   int   checkp_on_nc[],			   int*  nx,  int* ny, int* nz,			   int*  il0, int* iu0,			   int*  jl0, int* ju0, 			   int*  kl0, int* ku0,			   float* user_attr_1,			   float* user_attr_2,			   float* user_attr_3,			   float* user_attr_4,			   float* user_attr_5,                           int iorder[]){  hid_t  file_id, dset_block;  /* file and dataset ids */  hid_t  block_type_id;  CREATE_File_hdf5_r4(file_name_in, &file_id);  WRITE_Header_hdf5_r4(&file_id, tot_blocks,		       user_attr_1,		       user_attr_2,		       user_attr_3,		       user_attr_4,		       user_attr_5		       );  CREATE_Block_data_type_hdf5_r4(&block_type_id, 				 mdim, 				 ndim, 				 ngid, 				 mflags,				 nvar_chk_cc, 				 nvar_chk_fc, 				 nvar_chk_ec, 				 nvar_chk_nc, 				 il0, iu0, 				 jl0, ju0, 				 kl0, ku0);   CREATE_Block_data_set_hdf5_r4(&dset_block, 				&file_id, 				&block_type_id, 				tot_blocks_wr);    WRITE_Blocks_hdf5_r4(&file_id, 		       &dset_block, 		       &block_type_id, 		       max_lnblocks, 		       n_to_left, 		       lnblocks, 		       mdim, 		       ndim, 		       ngid, 		       mflags, 		       lrefine, 		       nodetype, 		       which_child, 		       gid, 		       bflags, 		       coord, 		       bnd_box, 		       work_block, 		       unk,		       nvar, 		       nvar_chk_cc,		       checkp_on_cc,		       facevarx, facevary, facevarz,		       nbndvar, 		       nvar_chk_fc,		       checkp_on_fc,		       unk_e_x, unk_e_y, unk_e_z,		       nbndvare, 		       nvar_chk_ec,		       checkp_on_ec,		       unk_n,		       nbndvarc, 		       nvar_chk_nc,		       checkp_on_nc,		       nx, ny, nz,		       il0, iu0, jl0, ju0, kl0, ku0,		       iorder);    /* Close resources */  H5Dclose(dset_block);  H5Fclose(file_id);  H5Tclose(block_type_id);}     

⌨️ 快捷键说明

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