void BkgParamH5::IncrementalWriteParam(DataCube<float> &cube, H5DataSet *set, int flow, int saveWellsFrequency,int numFlows) { int testWellFrequency = saveWellsFrequency*NUMFB; // block size if (((flow+1) % (saveWellsFrequency*NUMFB) == 0 && (flow != 0)) || (flow+1) >= numFlows) { fprintf(stdout, "Writing incremental wells at flow: %d\n", flow); MemUsage("BeforeWrite"); size_t starts[3]; size_t ends[3]; cube.SetStartsEnds(starts, ends); set->WriteRangeData(starts, ends, cube.GetMemPtr()); cube.SetRange(0, cube.GetNumX(), 0, cube.GetNumY(), flow+1, flow + 1 + min(testWellFrequency,numFlows-(flow+1))); MemUsage("AfterWrite"); } }
void BkgParamH5::WriteOneFlowBlock ( DataCube<int> &cube, H5DataSet *set, int flow, int chunksize ) { // fprintf ( stdout, "Writing incremental H5-diagnostics at flow: %d\n", flow ); MemUsage ( "BeforeWrite" ); size_t starts[3]; size_t ends[3]; cube.SetStartsEnds ( starts, ends ); // here's the actual write set->WriteRangeData ( starts, ends, cube.GetMemPtr() ); // set for next iteration int nextflow = flow+1; int nextchunk = min ( chunksize,datacube_numflows- ( flow+1 ) ); cube.SetRange ( 0, cube.GetNumX(), 0, cube.GetNumY(), nextflow, nextflow+nextchunk ); MemUsage ( "AfterWrite" ); }
// set to write one compute block void BkgParamH5::WriteOneBlock ( DataCube<int> &cube, H5DataSet *set, int iBlk ) { if ( set!=NULL ) { // fprintf ( stdout, "Writing incremental H5-diagnostics at compute block: %d\n", iBlk ); MemUsage ( "BeforeWrite" ); size_t starts[3]; size_t ends[3]; cube.SetStartsEnds ( starts, ends ); // here's the actual write set->WriteRangeData ( starts, ends, cube.GetMemPtr() ); // set for next iteration int nextBlk = iBlk+1; int nextChunk = min ( 1,nFlowBlks-nextBlk ); cube.SetRange ( 0, cube.GetNumX(), 0, cube.GetNumY(), nextBlk, nextBlk+nextChunk ); MemUsage ( "AfterWrite" ); } }