📄 write_blocks_hdf5_r8.c
字号:
(udim[1] * udim[0] * it[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_r8(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_r8_ (char* file_name_in, #endif#ifdef DOUBLE_UNDERSCOREvoid write_blocks_hdf5_r8__ (char* file_name_in, #endif#ifndef UNDERSCORE #ifndef DOUBLE_UNDERSCOREvoid write_blocks_hdf5_r8 (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_r8(file_name_in, &file_id); WRITE_Header_hdf5_r8(&file_id, tot_blocks, user_attr_1, user_attr_2, user_attr_3, user_attr_4, user_attr_5 ); CREATE_Block_data_type_hdf5_r8(&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_r8(&dset_block, &file_id, &block_type_id, tot_blocks_wr); WRITE_Blocks_hdf5_r8(&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 + -