Skip to content
Snippets Groups Projects
HDF5WriterP.h 1.53 KiB
Newer Older
guj's avatar
guj committed
/*
guj's avatar
guj committed
 * Distributed under the OSI-approved Apache License, Version 2.0.  See
 * accompanying file Copyright.txt for details.
 *
guj's avatar
guj committed
 * HDF5WriterP.h
 *
 *  Created on: March 20, 2017
 *      Author: Junmin
 */

#ifndef ADIOS2_ENGINE_HDF5_HDF5WRITERP_H__
#define ADIOS2_ENGINE_HDF5_HDF5WRITERP_H__
guj's avatar
guj committed

#include <hdf5.h>
#include "adios2/ADIOSConfig.h"
#include "adios2/ADIOSMPICommOnly.h"
#include "adios2/core/Engine.h"
#include "adios2/core/IO.h"
#include "adios2/toolkit/interop/hdf5/HDF5Common.h"
guj's avatar
guj committed

namespace adios2
guj's avatar
guj committed
{
guj's avatar
guj committed

class HDF5WriterP : public Engine
guj's avatar
guj committed
{
guj's avatar
guj committed

public:
guj's avatar
guj committed
    /**
     * Constructor for HDF5 writer engine, writes in hdf5 format
guj's avatar
guj committed
     * @param name unique name given to the engine
     * @param accessMode
     * @param mpiComm
     * @param method
     */
William F Godoy's avatar
William F Godoy committed
    HDF5WriterP(IO &io, const std::string &name, const Mode mode,
                MPI_Comm mpiComm);
guj's avatar
guj committed

    ~HDF5WriterP();
guj's avatar
guj committed

William F Godoy's avatar
William F Godoy committed
    StepStatus BeginStep(StepMode mode, const float timeoutSeconds = 0.f) final;
    void EndStep() final;
    void Close(const int transportIndex = -1) final;
guj's avatar
guj committed

guj's avatar
guj committed
private:
    interop::HDF5Common m_H5File;
guj's avatar
guj committed

    void Init();
#define declare_type(T)                                                        \
    void DoPutSync(Variable<T> &variable, const T *values) final;              \
    void DoPutDeferred(Variable<T> &variable, const T *values) final;
    ADIOS2_FOREACH_TYPE_1ARG(declare_type)
#undef declare_type
guj's avatar
guj committed

    template <class T>
    void DoPutSyncCommon(Variable<T> &variable, const T *values);
guj's avatar
guj committed
};

William F Godoy's avatar
William F Godoy committed
} // end namespace adios2
guj's avatar
guj committed

#endif /* ADIOS2_ENGINE_HDF5_HDF5WRITERP_H__ */