Skip to content

Commit 2cfe835

Browse files
authored
Set to never write fill values to the dataset for HDF5 output (#2450)
1 parent 6e97881 commit 2cfe835

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

Src/Base/AMReX_PlotFileUtil.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -981,6 +981,10 @@ void WriteMultiLevelPlotfileHDF5 (const std::string& plotfilename,
981981

982982
// Write data for each level
983983
char level_name[32];
984+
985+
hid_t dcpl_id = H5Pcreate(H5P_DATASET_CREATE);
986+
H5Pset_fill_time(dcpl_id, H5D_FILL_TIME_NEVER);
987+
984988
for (int level = 0; level <= finest_level; ++level) {
985989
sprintf(level_name, "level_%d", level);
986990
#ifdef AMREX_USE_HDF5_ASYNC
@@ -1007,9 +1011,9 @@ void WriteMultiLevelPlotfileHDF5 (const std::string& plotfilename,
10071011
boxdataspace = H5Screate_simple(1, flatdims, NULL);
10081012

10091013
#ifdef AMREX_USE_HDF5_ASYNC
1010-
boxdataset = H5Dcreate_async(grp, bdsname.c_str(), babox_id, boxdataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT, es_id_g);
1014+
boxdataset = H5Dcreate_async(grp, bdsname.c_str(), babox_id, boxdataspace, H5P_DEFAULT, dcpl_id, H5P_DEFAULT, es_id_g);
10111015
#else
1012-
boxdataset = H5Dcreate(grp, bdsname.c_str(), babox_id, boxdataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
1016+
boxdataset = H5Dcreate(grp, bdsname.c_str(), babox_id, boxdataspace, H5P_DEFAULT, dcpl_id, H5P_DEFAULT);
10131017
#endif
10141018
if (boxdataset < 0) { std::cout << "H5Dcreate [" << bdsname << "] failed!" << std::endl; break; }
10151019

@@ -1037,19 +1041,19 @@ void WriteMultiLevelPlotfileHDF5 (const std::string& plotfilename,
10371041
oflatdims[0] = sortedGrids.size() + 1;
10381042
offsetdataspace = H5Screate_simple(1, oflatdims, NULL);
10391043
#ifdef AMREX_USE_HDF5_ASYNC
1040-
offsetdataset = H5Dcreate_async(grp, odsname.c_str(), H5T_NATIVE_LLONG, offsetdataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT, es_id_g);
1044+
offsetdataset = H5Dcreate_async(grp, odsname.c_str(), H5T_NATIVE_LLONG, offsetdataspace, H5P_DEFAULT, dcpl_id, H5P_DEFAULT, es_id_g);
10411045
#else
1042-
offsetdataset = H5Dcreate(grp, odsname.c_str(), H5T_NATIVE_LLONG, offsetdataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
1046+
offsetdataset = H5Dcreate(grp, odsname.c_str(), H5T_NATIVE_LLONG, offsetdataspace, H5P_DEFAULT, dcpl_id, H5P_DEFAULT);
10431047
#endif
10441048
if(offsetdataset < 0) { std::cout << "create offset dataset failed! ret = " << offsetdataset << std::endl; break;}
10451049

10461050
hsize_t centerdims[1];
10471051
centerdims[0] = sortedGrids.size() ;
10481052
centerdataspace = H5Screate_simple(1, centerdims, NULL);
10491053
#ifdef AMREX_USE_HDF5_ASYNC
1050-
centerdataset = H5Dcreate_async(grp, centername.c_str(), center_id, centerdataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT, es_id_g);
1054+
centerdataset = H5Dcreate_async(grp, centername.c_str(), center_id, centerdataspace, H5P_DEFAULT, dcpl_id, H5P_DEFAULT, es_id_g);
10511055
#else
1052-
centerdataset = H5Dcreate(grp, centername.c_str(), center_id, centerdataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
1056+
centerdataset = H5Dcreate(grp, centername.c_str(), center_id, centerdataspace, H5P_DEFAULT, dcpl_id, H5P_DEFAULT);
10531057
#endif
10541058
if(centerdataset < 0) { std::cout << "Create center dataset failed! ret = " << centerdataset << std::endl; break;}
10551059

@@ -1198,6 +1202,7 @@ void WriteMultiLevelPlotfileHDF5 (const std::string& plotfilename,
11981202
H5Tclose(center_id);
11991203
H5Tclose(babox_id);
12001204
H5Pclose(fapl);
1205+
H5Pclose(dcpl_id);
12011206
H5Pclose(dxpl_col);
12021207
H5Pclose(dxpl_ind);
12031208
H5Pclose(dcpl);

Src/Particle/AMReX_WriteBinaryParticleData.H

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1293,6 +1293,10 @@ void WriteHDF5ParticleDataSync (PC const& pc,
12931293

12941294
char level_name[128];
12951295
int ngrids;
1296+
1297+
hid_t dcpl_id = H5Pcreate(H5P_DATASET_CREATE);
1298+
H5Pset_fill_time(dcpl_id, H5D_FILL_TIME_NEVER);
1299+
12961300
for (int lev = 0; lev <= finest_level; ++lev) {
12971301
sprintf(level_name, "level_%d", lev);
12981302

@@ -1313,7 +1317,9 @@ void WriteHDF5ParticleDataSync (PC const& pc,
13131317
hsize_t mfs_dim = (hsize_t)ngrids;
13141318

13151319
hid_t mfs_dset_space = H5Screate_simple(1, &mfs_dim, NULL);
1316-
hid_t mfs_dset= H5Dcreate(grp, "boxes", comp_dtype, mfs_dset_space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
1320+
1321+
1322+
hid_t mfs_dset= H5Dcreate(grp, "boxes", comp_dtype, mfs_dset_space, H5P_DEFAULT, dcpl_id, H5P_DEFAULT);
13171323

13181324
Vector<int> vbox(ngrids * mfs_size);
13191325
for(int j = 0; j < pc.ParticleBoxArray(lev).size(); ++j) {
@@ -1334,7 +1340,7 @@ void WriteHDF5ParticleDataSync (PC const& pc,
13341340

13351341
H5Gclose(grp);
13361342
}
1337-
1343+
H5Pclose(dcpl_id);
13381344
H5Fclose(fid);
13391345
}
13401346

0 commit comments

Comments
 (0)