Skip to content
Snippets Groups Projects
Commit 531260fc authored by Godoy, William's avatar Godoy, William
Browse files

Adding more BPLS2 functionality

parent 5374db3f
No related branches found
No related tags found
1 merge request!294Bp1read : Initial Reading Capabilities and latest API
...@@ -93,8 +93,9 @@ std::vector<std::string> TransportMan::GetFilesBaseNames( ...@@ -93,8 +93,9 @@ std::vector<std::string> TransportMan::GetFilesBaseNames(
throw std::invalid_argument( throw std::invalid_argument(
"ERROR: two IO AddTransport of the same type can't " "ERROR: two IO AddTransport of the same type can't "
"have the same name : " + "have the same name : " +
name + ", use Name=value parameter, in " name +
"call to Open"); ", use Name=value parameter, in "
"call to Open");
} }
} }
itType->second.insert(name); itType->second.insert(name);
...@@ -154,7 +155,7 @@ void TransportMan::WriteFiles(const char *buffer, const size_t size, ...@@ -154,7 +155,7 @@ void TransportMan::WriteFiles(const char *buffer, const size_t size,
} }
} }
size_t TransportMan::GetFileSize(const size_t transportIndex) size_t TransportMan::GetFileSize(const size_t transportIndex) const
{ {
auto itTransport = m_Transports.find(transportIndex); auto itTransport = m_Transports.find(transportIndex);
CheckFile(itTransport, ", in call to GetFileSize with index " + CheckFile(itTransport, ", in call to GetFileSize with index " +
......
...@@ -101,7 +101,7 @@ public: ...@@ -101,7 +101,7 @@ public:
void WriteFiles(const char *buffer, const size_t size, void WriteFiles(const char *buffer, const size_t size,
const int transportIndex = -1); const int transportIndex = -1);
size_t GetFileSize(const size_t transportIndex = 0); size_t GetFileSize(const size_t transportIndex = 0) const;
/** /**
* Read contents from a single file and assign it to buffer * Read contents from a single file and assign it to buffer
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "BPLS2.h" #include "BPLS2.h"
#include <iomanip>
#include <iostream> #include <iostream>
#include "adios2/ADIOSMPICommOnly.h" #include "adios2/ADIOSMPICommOnly.h"
...@@ -97,8 +98,8 @@ void BPLS2::ProcessParameters() const ...@@ -97,8 +98,8 @@ void BPLS2::ProcessParameters() const
std::cout << "\n"; std::cout << "\n";
std::cout << "Found --help , -h option, discarding others\n"; std::cout << "Found --help , -h option, discarding others\n";
std::cout << "Rerun without --help , -h option\n"; std::cout << "Rerun without --help , -h option\n";
throw std::invalid_argument("");
} }
return;
} }
if (m_FileName.empty()) if (m_FileName.empty())
...@@ -118,8 +119,9 @@ void BPLS2::PrintUsage() const noexcept ...@@ -118,8 +119,9 @@ void BPLS2::PrintUsage() const noexcept
std::cout << "-l , --long Print variables and attributes metadata\n"; std::cout << "-l , --long Print variables and attributes metadata\n";
std::cout << " information, no overhead\n"; std::cout << " information, no overhead\n";
std::cout << "-a , --attributes List attributes metadata\n"; std::cout << "-a , --attributes List attributes metadata\n";
std::cout << "-v , --verbose Added file information\n";
std::cout << "Example: bpls2 -lav bpfile\n"; std::cout << "\n";
std::cout << "Example: bpls2 -lav bpfile" << std::endl;
} }
void BPLS2::PrintExamples() const noexcept {} void BPLS2::PrintExamples() const noexcept {}
...@@ -183,34 +185,75 @@ void BPLS2::SetParameters(const std::string argument, const bool isLong) ...@@ -183,34 +185,75 @@ void BPLS2::SetParameters(const std::string argument, const bool isLong)
void BPLS2::ProcessTransport() const void BPLS2::ProcessTransport() const
{ {
ADIOS adios(true); auto lf_PrintVerboseHeader = [](const BPFileReader &bpFileReader,
IO &io = adios.DeclareIO("bpls2"); const size_t variablesSize,
BPFileReader bpFileReader(io, m_FileName, Mode::Read, io.m_MPIComm); const size_t attributesSize) {
const auto variablesMap = io.GetAvailableVariables();
// const auto attributesMap = io.GetAvailableAttributes();
if (m_Parameters.count("verbose") == 1)
{
const auto &metadataSet = bpFileReader.m_BP3Deserializer.m_MetadataSet; const auto &metadataSet = bpFileReader.m_BP3Deserializer.m_MetadataSet;
std::cout << "File info:\n"; std::cout << "File info:\n";
std::cout << " groups: " << metadataSet.DataPGCount << "\n"; std::cout << " groups: " << metadataSet.DataPGCount << "\n";
std::cout << " variables: " << variablesMap.size() << "\n"; std::cout << " variables: " << variablesSize << "\n";
std::cout << " attributes: TODO\n"; std::cout << " attributes: " << attributesSize << "\n";
std::cout << " meshes: TODO\n"; std::cout << " meshes: TODO\n";
std::cout << " time steps: " << metadataSet.TimeStep << "\n"; std::cout << " steps: " << metadataSet.TimeStep << "\n";
std::cout << " file size: " std::cout << " file size: "
<< bpFileReader.m_FileManager.GetFileSize(0) << " bytes\n"; << bpFileReader.m_FileManager.GetFileSize(0) << " bytes\n";
const auto &minifooter = bpFileReader.m_BP3Deserializer.m_Minifooter; const auto &minifooter = bpFileReader.m_BP3Deserializer.m_Minifooter;
std::cout << " bp version: " << std::to_string(minifooter.Version) std::cout << " bp version: " << std::to_string(minifooter.Version)
<< "\n"; << "\n";
std::string endianness("Little Endian"); std::string endianness("Little Endian");
if (!minifooter.IsLittleEndian) if (!minifooter.IsLittleEndian)
{ {
endianness = "Big Endian"; endianness = "Big Endian";
} }
std::cout << " Endianness: " << endianness << "\n"; std::cout << " endianness: " << endianness << "\n";
std::cout << " statistics: Min / Max / Avg / Std_dev\n" << std::endl;
};
auto lf_PrintVariables =
[&](const std::map<std::string, std::string> &variablesMap) {
// get maximum sizes
size_t maxTypeSize = 0;
size_t maxNameSize = 0;
for (const auto &variablePair : variablesMap)
{
const size_t nameSize = variablePair.first.size();
if (nameSize > maxNameSize)
{
maxNameSize = nameSize;
}
const size_t typeSize = variablePair.second.size();
if (typeSize > maxTypeSize)
{
maxTypeSize = typeSize;
}
}
for (const auto &variablePair : variablesMap)
{
std::cout << " ";
std::cout << std::left << std::setw(maxTypeSize)
<< variablePair.second << " ";
std::cout << std::left << std::setw(maxNameSize)
<< variablePair.first << std::endl;
}
};
ADIOS adios(true);
IO &io = adios.DeclareIO("bpls2");
BPFileReader bpFileReader(io, m_FileName, Mode::Read, io.m_MPIComm);
const auto variablesMap = io.GetAvailableVariables();
// const auto attributesMap = io.GetAvailableAttributes();
if (m_Parameters.count("verbose") == 1)
{
lf_PrintVerboseHeader(bpFileReader, variablesMap.size(), 0);
} }
lf_PrintVariables(variablesMap);
} }
} // end namespace utils } // end namespace utils
......
...@@ -25,7 +25,6 @@ int main(int argc, char *argv[]) ...@@ -25,7 +25,6 @@ int main(int argc, char *argv[])
} }
catch (std::exception &e) catch (std::exception &e)
{ {
std::cout << "bpls2 Caught an Exception\n";
std::cout << e.what() << "\n"; std::cout << e.what() << "\n";
} }
......
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