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
namespace
{
// returns empty string on failure.
std::string ReadAndBroadCastFile(
const std::string& filename, vtkMultiProcessController* controller, vtkAMReXParticlesReader* self)
std::string ReadAndBroadCastFile(const std::string& filename, vtkMultiProcessController* controller,
vtkAMReXParticlesReader* self, bool errorOnFailedToOpenFile = true)
{
std::string contents;
if (controller == nullptr || controller->GetLocalProcessId() == 0)
......@@ -62,7 +62,7 @@ std::string ReadAndBroadCastFile(
delete[] data;
data = nullptr;
}
else
else if (errorOnFailedToOpenFile)
{
vtkErrorWithObjectMacro(self, "Failed to open file '" << filename << "'.");
}
......@@ -791,21 +791,25 @@ bool vtkAMReXParticlesReader::ReadMetaData()
// read the top level header to get time information
const std::string gridHdrFileName = this->PlotFileName + "/Header";
const auto gridHeaderData = ::ReadAndBroadCastFile(gridHdrFileName, this->Controller, this);
if (gridHeaderData.empty())
const auto gridHeaderData = ::ReadAndBroadCastFile(
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;
}
auto gridHeaderPtr = new vtkAMReXGridHeader();
if (!gridHeaderPtr->Parse(gridHeaderData))
else
{
delete gridHeaderPtr;
return false;
// there is no top level header.
this->dataTimeStep = 0;
}
// Add time information.
this->dataTimeStep = gridHeaderPtr->time;
delete gridHeaderPtr;
this->Header = headerPtr;
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