Skip to content
Snippets Groups Projects
Commit 5a0129e4 authored by Jaswant Panchumarti (Kitware)'s avatar Jaswant Panchumarti (Kitware) Committed by Kitware Robot
Browse files

Merge topic 'fix-amrex-particle-reader-without-top-level-header'


2f2329d0 AMReX - continue reading particle file when top level header does not exist

Acked-by: default avatarKitware Robot <kwrobot@kitware.com>
Acked-by: default avatarbuildbot <buildbot@kitware.com>
Reviewed-by: default avatarCorey Wetterer-Nelson (Kitware) <c.wetterer-nelson@kitware.com>
Merge-request: !11809
parents 17894e4b 2f2329d0
No related branches found
No related tags found
No related merge requests found
# Fix AMReX particle reader for files without top-level header
The `vtkAMReXParticlesReader` now continues to read the particles even when a
top level header does not exist. Normally, the reader obtained the data time step
from the top level header. It initializes the time step to 0 if that header file
does not exist.
...@@ -35,8 +35,8 @@ VTK_ABI_NAMESPACE_BEGIN ...@@ -35,8 +35,8 @@ VTK_ABI_NAMESPACE_BEGIN
namespace namespace
{ {
// returns empty string on failure. // returns empty string on failure.
std::string ReadAndBroadCastFile( std::string ReadAndBroadCastFile(const std::string& filename, vtkMultiProcessController* controller,
const std::string& filename, vtkMultiProcessController* controller, vtkAMReXParticlesReader* self) vtkAMReXParticlesReader* self, bool errorOnFailedToOpenFile = true)
{ {
std::string contents; std::string contents;
if (controller == nullptr || controller->GetLocalProcessId() == 0) if (controller == nullptr || controller->GetLocalProcessId() == 0)
...@@ -62,7 +62,7 @@ std::string ReadAndBroadCastFile( ...@@ -62,7 +62,7 @@ std::string ReadAndBroadCastFile(
delete[] data; delete[] data;
data = nullptr; data = nullptr;
} }
else else if (errorOnFailedToOpenFile)
{ {
vtkErrorWithObjectMacro(self, "Failed to open file '" << filename << "'."); vtkErrorWithObjectMacro(self, "Failed to open file '" << filename << "'.");
} }
...@@ -791,21 +791,25 @@ bool vtkAMReXParticlesReader::ReadMetaData() ...@@ -791,21 +791,25 @@ bool vtkAMReXParticlesReader::ReadMetaData()
// read the top level header to get time information // read the top level header to get time information
const std::string gridHdrFileName = this->PlotFileName + "/Header"; const std::string gridHdrFileName = this->PlotFileName + "/Header";
const auto gridHeaderData = ::ReadAndBroadCastFile(gridHdrFileName, this->Controller, this); const auto gridHeaderData = ::ReadAndBroadCastFile(
if (gridHeaderData.empty()) gridHdrFileName, this->Controller, this, /*errorOnFailedToOpenFile=*/false);
if (!gridHeaderData.empty())
{ {
return false; auto gridHeaderPtr = new vtkAMReXGridHeader();
if (!gridHeaderPtr->Parse(gridHeaderData))
{
delete gridHeaderPtr;
return false;
}
// Add time information.
this->dataTimeStep = gridHeaderPtr->time;
delete gridHeaderPtr;
} }
else
auto gridHeaderPtr = new vtkAMReXGridHeader();
if (!gridHeaderPtr->Parse(gridHeaderData))
{ {
delete gridHeaderPtr; // there is no top level header.
return false; this->dataTimeStep = 0;
} }
// Add time information.
this->dataTimeStep = gridHeaderPtr->time;
delete gridHeaderPtr;
this->Header = headerPtr; this->Header = headerPtr;
this->Header->PopulatePointArraySelection(this->PointDataArraySelection); this->Header->PopulatePointArraySelection(this->PointDataArraySelection);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment