----------------------------------------------------------------------------
| 283 | |
| 284 | //---------------------------------------------------------------------------- |
| 285 | int vtkIOSSReader::ReadMetaData(vtkInformation* metadata) |
| 286 | { |
| 287 | vtkLogScopeF(TRACE, "ReadMetaData"); |
| 288 | vtkIOSSUtilities::CaptureNonErrorMessages captureMessagesRAII; |
| 289 | |
| 290 | auto& internals = (*this->Internals); |
| 291 | if (!internals.UpdateDatabaseNames(this)) |
| 292 | { |
| 293 | return 0; |
| 294 | } |
| 295 | |
| 296 | // read time information and generate that. |
| 297 | if (!internals.UpdateTimeInformation(this)) |
| 298 | { |
| 299 | return 0; |
| 300 | } |
| 301 | else |
| 302 | { |
| 303 | // add timesteps to metadata |
| 304 | const auto& timesteps = internals.GetTimeSteps(); |
| 305 | if (!timesteps.empty()) |
| 306 | { |
| 307 | metadata->Set(vtkStreamingDemandDrivenPipeline::TIME_STEPS(), timesteps.data(), |
| 308 | static_cast<int>(timesteps.size())); |
| 309 | double time_range[2] = { timesteps.front(), timesteps.back() }; |
| 310 | metadata->Set(vtkStreamingDemandDrivenPipeline::TIME_RANGE(), time_range, 2); |
| 311 | } |
| 312 | else |
| 313 | { |
| 314 | metadata->Remove(vtkStreamingDemandDrivenPipeline::TIME_STEPS()); |
| 315 | metadata->Remove(vtkStreamingDemandDrivenPipeline::TIME_RANGE()); |
| 316 | } |
| 317 | } |
| 318 | |
| 319 | // read field/entity selection meta-data. i.e. update vtkDataArraySelection |
| 320 | // instances for all available entity-blocks, entity-sets, and their |
| 321 | // corresponding data arrays. |
| 322 | if (!internals.UpdateEntityAndFieldSelections(this)) |
| 323 | { |
| 324 | return 0; |
| 325 | } |
| 326 | |
| 327 | // read assembly information. |
| 328 | if (!internals.UpdateAssembly(this, &this->AssemblyTag)) |
| 329 | { |
| 330 | return 0; |
| 331 | } |
| 332 | |
| 333 | metadata->Set(vtkAlgorithm::CAN_HANDLE_PIECE_REQUEST(), 1); |
| 334 | if (internals.HaveRestartFiles()) |
| 335 | { |
| 336 | // All meta-data have been read successfully, so we can release all the regions. |
| 337 | // Subsequent ReadMesh calls create only the requested regions (if needed) and release previous |
| 338 | // regions (if no longer needed). |
| 339 | internals.ReleaseRegions(); |
| 340 | } |
| 341 | return 1; |
| 342 | } |
no test coverage detected