Skip to content
Snippets Groups Projects
ADIOS1Writer.cpp 1.89 KiB
Newer Older
 * Distributed under the OSI-approved Apache License, Version 2.0.  See
 * accompanying file Copyright.txt for details.
 *
 * ADIOS1Writer.cpp
 * Class to write files using old adios 1.x library.
 * It requires adios 1.x installed
 *
 *  Created on: Mar 27, 2017
 *      Author: Norbert Podhorszki pnorbert@ornl.gov
#include "adios2/helper/adiosFunctions.h"
// Enable compatibility with ADIOS 1.10 adios_declare_group signature
#if !ADIOS_VERSION_GE(1, 11, 0)
#define adios_stat_default adios_flag_yes
#endif

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_EndMessage = " in call to ADIOS1Writer " + m_Name + " Open\n";
}

void ADIOS1Writer::Init()
{
    InitParameters();
    InitTransports();
pnorbert's avatar
pnorbert committed
    m_ADIOS1.Open();
#define declare_type(T)                                                        \
    void ADIOS1Writer::DoWrite(Variable<T> &variable, const T *values)         \
    {                                                                          \
        m_ADIOS1.WriteVariable(variable.m_Name, variable.m_ShapeID,            \
                               variable.m_Count, variable.m_Shape,             \
                               variable.m_Start, values);                      \
ADIOS2_FOREACH_TYPE_1ARG(declare_type)
#undef declare_type
void ADIOS1Writer::Advance(const float /*timeout_sec*/) { m_ADIOS1.Advance(); }
void ADIOS1Writer::Close(const int transportIndex) { m_ADIOS1.Close(); }

// PRIVATE FUNCTIONS
void ADIOS1Writer::InitParameters()
{
    m_ADIOS1.InitParameters(m_IO.m_Parameters);
}

void ADIOS1Writer::InitTransports()
{
    m_ADIOS1.InitTransports(m_IO.m_TransportsParameters);
}

} // end namespace adios