diff --git a/source/adios2/engine/adios1/ADIOS1Writer.cpp b/source/adios2/engine/adios1/ADIOS1Writer.cpp index e8a90d71d3f6cec17a2ba52c3eb89dff21bf826b..e6290d9ee9a0332d0008b803db3111ca666d7195 100644 --- a/source/adios2/engine/adios1/ADIOS1Writer.cpp +++ b/source/adios2/engine/adios1/ADIOS1Writer.cpp @@ -25,7 +25,7 @@ namespace adios ADIOS1Writer::ADIOS1Writer(IO &io, const std::string &name, const OpenMode openMode, MPI_Comm mpiComm) : Engine("ADIOS1Writer", io, name, openMode, mpiComm), - m_ADIOS1(io.m_Name, name, openMode, mpiComm, io.m_DebugMode) + m_ADIOS1(io.m_Name, name, mpiComm, io.m_DebugMode) { m_EndMessage = " in call to ADIOS1Writer " + m_Name + " Open\n"; Init(); @@ -35,7 +35,7 @@ void ADIOS1Writer::Init() { InitParameters(); InitTransports(); - m_ADIOS1.Open(); + m_ADIOS1.Open(m_OpenMode); } #define declare_type(T) \ diff --git a/source/adios2/helper/adiosType.cpp b/source/adios2/helper/adiosType.cpp index b74e68f1e5ccda2963abf3b7a155dd92948955ab..f5d3e3430fa5d03d943c85cd0d44f30b1581f1e8 100644 --- a/source/adios2/helper/adiosType.cpp +++ b/source/adios2/helper/adiosType.cpp @@ -171,21 +171,43 @@ size_t BytesFactor(const std::string units, const bool debugMode) return factor; } -std::string OpenModeToString(const OpenMode openMode) noexcept +std::string OpenModeToString(const OpenMode openMode, + const bool oneLetter) noexcept { - std::string openModeString; + if (openMode == OpenMode::Write) { - openModeString = "Write"; + if (oneLetter) + { + openModeString = "w"; + } + else + { + openModeString = "Write"; + } } else if (openMode == OpenMode::Append) { - openModeString = "Append"; + if (oneLetter) + { + openModeString = "a"; + } + else + { + openModeString = "Append"; + } } else if (openMode == OpenMode::Read) { - openModeString = "Read"; + if (oneLetter) + { + openModeString = "r"; + } + else + { + openModeString = "Read"; + } } return openModeString; } diff --git a/source/adios2/helper/adiosType.h b/source/adios2/helper/adiosType.h index 25f96d6d417a4ea2128e210dcd916a6b37d684d3..d98d9a4f95eff007df21a3e2bbbc6fffb611d4e1 100644 --- a/source/adios2/helper/adiosType.h +++ b/source/adios2/helper/adiosType.h @@ -102,9 +102,11 @@ size_t BytesFactor(const std::string units, const bool debugMode); /** * Returns open mode as a string * @param openMode from ADIOSTypes.h - * @return + * @param oneLetter if true returns a one letter version ("w", "a" or "r") + * @return string with open mode */ -std::string OpenModeToString(const OpenMode openMode) noexcept; +std::string OpenModeToString(const OpenMode openMode, + const bool oneLetter = false) noexcept; } #include "adiosType.inl" diff --git a/source/adios2/toolkit/interop/adios1/ADIOS1Common.cpp b/source/adios2/toolkit/interop/adios1/ADIOS1Common.cpp index 424d96e52857926a09e0a8c12fcd2794937c45d7..2f981e94c22d67b2595ca17e9bdc403a23803ed4 100644 --- a/source/adios2/toolkit/interop/adios1/ADIOS1Common.cpp +++ b/source/adios2/toolkit/interop/adios1/ADIOS1Common.cpp @@ -24,10 +24,9 @@ namespace interop { ADIOS1Common::ADIOS1Common(const std::string &groupName, - const std::string &fileName, const OpenMode openMode, - MPI_Comm mpiComm, const bool debugMode) -: m_GroupName(groupName), m_FileName(fileName), - m_OpenModeString(OpenModeToString(openMode)), m_MPIComm(mpiComm), + const std::string &fileName, MPI_Comm mpiComm, + const bool debugMode) +: m_GroupName(groupName), m_FileName(fileName), m_MPIComm(mpiComm), m_DebugMode(debugMode) { Init(); @@ -126,10 +125,10 @@ void ADIOS1Common::InitTransports( } } -bool ADIOS1Common::Open() +bool ADIOS1Common::Open(const OpenMode openMode) { adios_open(&m_ADIOSFile, m_GroupName.c_str(), m_FileName.c_str(), - m_OpenModeString.c_str(), m_MPIComm); + OpenModeToString(openMode, true).c_str(), m_MPIComm); if (adios_errno == err_no_error) { m_IsFileOpen = true; diff --git a/source/adios2/toolkit/interop/adios1/ADIOS1Common.h b/source/adios2/toolkit/interop/adios1/ADIOS1Common.h index c5e2297f4320b67fad2fd4dda198c403635fed15..11a7e1b2e2bbdd1cf6522775fa126a67660f0a2f 100644 --- a/source/adios2/toolkit/interop/adios1/ADIOS1Common.h +++ b/source/adios2/toolkit/interop/adios1/ADIOS1Common.h @@ -53,14 +53,13 @@ public: ADIOS_ERRCODES m_ErrorNumber = static_cast<ADIOS_ERRCODES>(-1); ADIOS1Common(const std::string &groupName, const std::string &fileName, - const OpenMode openMode, MPI_Comm mpiComm, - const bool debugMode); + MPI_Comm mpiComm, const bool debugMode); ~ADIOS1Common(); void InitParameters(const Params ¶meters); void InitTransports(const std::vector<Params> &transportsParameters); - bool Open(); // return true if file is opened + bool Open(const OpenMode openMode); // return true if file is opened bool ReOpenAsNeeded(); // return true if file is open or reopened template <class T>