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

Method extendDataset

SRC/recorder/VTKHDF_Recorder.cpp:3404–3500  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3402
3403
3404int VTKHDF_Recorder::extendDataset(hid_t dataGroup,
3405 const char* datasetName,
3406 const void* newData,
3407 hid_t datatype,
3408 size_t numNewElements,
3409 size_t numColumns) {
3410 // Open dataset
3411 hid_t dset_id = H5Dopen(dataGroup, datasetName, H5P_DEFAULT);
3412 if (dset_id < 0) {
3413 opserr << "Error opening dataset '" << datasetName << "'\n";
3414 return -1;
3415 }
3416
3417 // Get the current dataspace
3418 hid_t space_id = H5Dget_space(dset_id);
3419 if (space_id < 0) {
3420 opserr << "Error getting dataspace for '" << datasetName << "'\n";
3421 H5Dclose(dset_id);
3422 return -1;
3423 }
3424
3425 // Get rank and dimensions
3426 int rank = H5Sget_simple_extent_ndims(space_id);
3427 std::vector<hsize_t> current_dims(rank);
3428 if (H5Sget_simple_extent_dims(space_id, current_dims.data(), NULL) < 0) {
3429 opserr << "Error getting current dimensions\n";
3430 H5Sclose(space_id);
3431 H5Dclose(dset_id);
3432 return -1;
3433 }
3434
3435 // Prepare new dimensions
3436 std::vector<hsize_t> new_dims = current_dims;
3437 new_dims[0] += static_cast<hsize_t>(numNewElements); // Extend first dimension
3438
3439 // Extend the dataset
3440 if (H5Dset_extent(dset_id, new_dims.data()) < 0) {
3441 opserr << "Error setting new extent for '" << datasetName << "'\n";
3442 H5Sclose(space_id);
3443 H5Dclose(dset_id);
3444 return -1;
3445 }
3446
3447 // Get the new dataspace
3448 hid_t new_space_id = H5Dget_space(dset_id);
3449 if (new_space_id < 0) {
3450 opserr << "Error getting new dataspace for '" << datasetName << "'\n";
3451 H5Sclose(space_id);
3452 H5Dclose(dset_id);
3453 return -1;
3454 }
3455
3456 // Prepare hyperslab selection
3457 std::vector<hsize_t> offset(rank, 0);
3458 std::vector<hsize_t> count(rank);
3459
3460 offset[0] = current_dims[0]; // Start from end of existing data
3461 count[0] = numNewElements; // Number of new elements

Callers 4

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

Calls 1

dataMethod · 0.45

Tested by

no test coverage detected