MCPcopy Create free account
hub / github.com/Kitware/VTK / GenerateSubset

Method GenerateSubset

IO/IOSS/vtkIOSSReaderInternal.cxx:263–313  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

261}
262
263vtkIOSSReaderInternal::DatabaseNamesType vtkIOSSReaderInternal::GenerateSubset(
264 const vtkIOSSReaderInternal::DatabaseNamesType& databases, vtkIOSSReader* self)
265{
266 int fileRange[2];
267 self->GetFileRange(fileRange);
268 const int stride = self->GetFileStride();
269 if (fileRange[0] >= fileRange[1] || stride < 1 || databases.empty())
270 {
271 return databases;
272 }
273
274 // We need to filter filenames.
275 DatabaseNamesType result = databases;
276 for (auto& pair : result)
277 {
278 auto& dbaseInfo = pair.second;
279 if (dbaseInfo.ProcessCount <= 0)
280 {
281 continue;
282 }
283
284 // remove all "ranks" not fitting the requested range.
285 for (auto iter = dbaseInfo.Ranks.begin(); iter != dbaseInfo.Ranks.end();)
286 {
287 const int rank = (*iter);
288 if ((rank < fileRange[0] || rank >= fileRange[1] || (rank - fileRange[0]) % stride != 0))
289 {
290 iter = dbaseInfo.Ranks.erase(iter);
291 }
292 else
293 {
294 ++iter;
295 }
296 }
297 }
298
299 // remove any databases which have no ranks to be read in.
300 for (auto iter = result.begin(); iter != result.end();)
301 {
302 auto& dbaseInfo = iter->second;
303 if (dbaseInfo.ProcessCount > 0 && dbaseInfo.Ranks.empty())
304 {
305 iter = result.erase(iter);
306 }
307 else
308 {
309 ++iter;
310 }
311 }
312 return result;
313}
314
315bool vtkIOSSReaderInternal::UpdateTimeInformation(vtkIOSSReader* self)
316{

Callers 1

UpdateDatabaseNamesMethod · 0.95

Calls 4

emptyMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
eraseMethod · 0.45

Tested by

no test coverage detected