MCPcopy Create free account
hub / github.com/OpenSees/OpenSees / extendOffsetDataset

Method extendOffsetDataset

SRC/recorder/VTKHDF_Recorder.cpp:3564–3651  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3562}
3563
3564int VTKHDF_Recorder::extendOffsetDataset(hid_t group_id,
3565 const char* dataset_name,
3566 const void* new_value,
3567 hid_t datatype,
3568 size_t extra_rows) {
3569 // Open dataset
3570 hid_t dset_id = H5Dopen(group_id, dataset_name, H5P_DEFAULT);
3571 if (dset_id < 0) {
3572 opserr << "Error opening dataset '" << dataset_name << "'\n";
3573 return -1;
3574 }
3575
3576 // Get current dataspace and dimensions
3577 hid_t space_id = H5Dget_space(dset_id);
3578 if (space_id < 0) {
3579 opserr << "Error getting dataspace for '" << dataset_name << "'\n";
3580 H5Dclose(dset_id);
3581 return -1;
3582 }
3583
3584 // Get current dimensions
3585 hsize_t current_dims[1];
3586 if (H5Sget_simple_extent_dims(space_id, current_dims, NULL) < 0) {
3587 opserr << "Error getting current dimensions\n";
3588 H5Sclose(space_id);
3589 H5Dclose(dset_id);
3590 return -1;
3591 }
3592
3593 // Calculate new dimensions
3594 hsize_t new_dims[1] = {current_dims[0] + static_cast<hsize_t>(extra_rows)};
3595
3596 // Extend dataset
3597 if (H5Dset_extent(dset_id, new_dims) < 0) {
3598 opserr << "Error setting new extent for '" << dataset_name << "'\n";
3599 H5Sclose(space_id);
3600 H5Dclose(dset_id);
3601 return -1;
3602 }
3603
3604 // Get new dataspace
3605 hid_t new_space_id = H5Dget_space(dset_id);
3606 if (new_space_id < 0) {
3607 opserr << "Error getting new dataspace for '" << dataset_name << "'\n";
3608 H5Sclose(space_id);
3609 H5Dclose(dset_id);
3610 return -1;
3611 }
3612
3613 // Select hyperslab for new data
3614 hsize_t offset[1] = {current_dims[0]};
3615 hsize_t count[1] = {1};
3616 if (H5Sselect_hyperslab(new_space_id, H5S_SELECT_SET, offset, NULL, count, NULL) < 0) {
3617 opserr << "Error selecting hyperslab\n";
3618 H5Sclose(new_space_id);
3619 H5Sclose(space_id);
3620 H5Dclose(dset_id);
3621 return -1;

Callers 4

writeStress2D3Method · 0.95
writeStrain2D3Method · 0.95
writeStrees3D6Method · 0.95
writeStrain3D6Method · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected