diff --git a/source/adios2/engine/dataman/DataManWriter.cpp b/source/adios2/engine/dataman/DataManWriter.cpp index 1cf180ffe0fb5bbf3ec55ea8e8756ce948cdd4c5..39825a6ace651337c3fb41e01bd2970f060f2485 100644 --- a/source/adios2/engine/dataman/DataManWriter.cpp +++ b/source/adios2/engine/dataman/DataManWriter.cpp @@ -9,6 +9,7 @@ */ #include "DataManWriter.h" +#include "DataManWriter.tcc" #include <iostream> //needs to go away, this is just for demo purposes diff --git a/source/adios2/engine/dataman/DataManWriter.h b/source/adios2/engine/dataman/DataManWriter.h index 44567dddff6d6fc6b497d17cfbe713b738c413db..1420ccc1f4994c4a638e607dc05d29f52d119d39 100644 --- a/source/adios2/engine/dataman/DataManWriter.h +++ b/source/adios2/engine/dataman/DataManWriter.h @@ -127,56 +127,7 @@ private: const std::map<std::string, std::string> &mdtmParameters); template <class T> - void WriteVariableCommon(Variable<T> &variable, const T *values) - { - // here comes your magic at Writing now variable.m_UserValues has the - // data - // passed by the user - // set variable - variable.m_AppValues = values; - m_WrittenVariables.insert(variable.m_Name); - - // This part will go away, this is just to monitor variables per rank - - json jmsg; - jmsg["doid"] = m_Name; - jmsg["var"] = variable.m_Name; - jmsg["dtype"] = GetType<T>(); - jmsg["putshape"] = variable.m_LocalDimensions; - if (variable.m_GlobalDimensions.size() == 0) - variable.m_GlobalDimensions = variable.m_LocalDimensions; - jmsg["varshape"] = variable.m_GlobalDimensions; - if (variable.m_Offsets.size() == 0) - variable.m_Offsets.assign(variable.m_LocalDimensions.size(), 0); - jmsg["offset"] = variable.m_Offsets; - jmsg["timestep"] = 0; - m_Man.put(values, jmsg); - - if (m_DoMonitor) - { - MPI_Barrier(m_MPIComm); - std::cout << "I am hooked to the DataMan library\n"; - std::cout << "putshape " << variable.m_LocalDimensions.size() - << std::endl; - std::cout << "varshape " << variable.m_GlobalDimensions.size() - << std::endl; - std::cout << "offset " << variable.m_Offsets.size() << std::endl; - for (int i = 0; i < m_SizeMPI; ++i) - { - if (i == m_RankMPI) - { - std::cout << "Rank: " << m_RankMPI << "\n"; - variable.Monitor(std::cout); - std::cout << std::endl; - } - else - { - sleep(1); - } - } - MPI_Barrier(m_MPIComm); - } - } + void WriteVariableCommon(Variable<T> &variable, const T *values); }; } // end namespace adios diff --git a/source/adios2/engine/dataman/DataManWriter.tcc b/source/adios2/engine/dataman/DataManWriter.tcc new file mode 100644 index 0000000000000000000000000000000000000000..e22d2e4b5fa9483030349cc094cc62c466fe0044 --- /dev/null +++ b/source/adios2/engine/dataman/DataManWriter.tcc @@ -0,0 +1,75 @@ +/* + * Distributed under the OSI-approved Apache License, Version 2.0. See + * accompanying file Copyright.txt for details. + * + * DataMan.h + * + * Created on: Jan 10, 2017 + * Author: wfg + */ + +#ifndef ADIOS2_ENGINE_DATAMAN_DATAMAN_WRITER_TCC_ +#define ADIOS2_ENGINE_DATAMAN_DATAMAN_WRITER_TCC_ + +#include "DataManWriter.h" + +#include "adios2/ADIOSMPI.h" + +namespace adios +{ + +template <class T> +void DataManWriter::WriteVariableCommon(Variable<T> &variable, const T *values) +{ + // here comes your magic at Writing now variable.m_UserValues has the + // data + // passed by the user + // set variable + variable.m_AppValues = values; + m_WrittenVariables.insert(variable.m_Name); + + // This part will go away, this is just to monitor variables per rank + + json jmsg; + jmsg["doid"] = m_Name; + jmsg["var"] = variable.m_Name; + jmsg["dtype"] = GetType<T>(); + jmsg["putshape"] = variable.m_LocalDimensions; + if (variable.m_GlobalDimensions.size() == 0) + variable.m_GlobalDimensions = variable.m_LocalDimensions; + jmsg["varshape"] = variable.m_GlobalDimensions; + if (variable.m_Offsets.size() == 0) + variable.m_Offsets.assign(variable.m_LocalDimensions.size(), 0); + jmsg["offset"] = variable.m_Offsets; + jmsg["timestep"] = 0; + m_Man.put(values, jmsg); + + if (m_DoMonitor) + { + MPI_Barrier(m_MPIComm); + std::cout << "I am hooked to the DataMan library\n"; + std::cout << "putshape " << variable.m_LocalDimensions.size() + << std::endl; + std::cout << "varshape " << variable.m_GlobalDimensions.size() + << std::endl; + std::cout << "offset " << variable.m_Offsets.size() << std::endl; + for (int i = 0; i < m_SizeMPI; ++i) + { + if (i == m_RankMPI) + { + std::cout << "Rank: " << m_RankMPI << "\n"; + variable.Monitor(std::cout); + std::cout << std::endl; + } + else + { + sleep(1); + } + } + MPI_Barrier(m_MPIComm); + } +} + +} // end namespace adios + +#endif /* ADIOS2_ENGINE_DATAMAN_DATAMAN_WRITER_H_ */