-
William F Godoy authored
Removed IO Open that takes a new communicator (didn't work)
William F Godoy authoredRemoved IO Open that takes a new communicator (didn't work)
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
gluePyBind11_nompi.cpp 2.51 KiB
/*
* Distributed under the OSI-approved Apache License, Version 2.0. See
* accompanying file Copyright.txt for details.
*
* gluePyBind11_nompi.cpp
*
* Created on: Jun 12, 2017
* Author: William F Godoy godoywf@ornl.gov
*/
#include <stdexcept>
#include <adios2.h>
#include <pybind11/pybind11.h>
#include "ADIOSPy.h"
#include "EnginePy.h"
#include "IOPy.h"
#include "VariablePy.h"
#include "adiosPyFunctions.h"
#include "adiosPyTypes.h"
adios::ADIOSPy ADIOSPyInit(const bool debugMode)
{
return adios::ADIOSPy(debugMode);
}
PYBIND11_PLUGIN(adios2)
{
pybind11::module m("adios2", "ADIOS2 Python bindings using pybind11");
m.attr("DebugON") = true;
m.attr("DebugOFF") = false;
m.attr("ConstantDims") = true;
m.attr("OpenModeWrite") = static_cast<int>(adios::OpenMode::Write);
m.attr("OpenModeRead") = static_cast<int>(adios::OpenMode::Read);
m.attr("OpenModeAppend") = static_cast<int>(adios::OpenMode::Append);
m.attr("OpenModeReadWrite") = static_cast<int>(adios::OpenMode::ReadWrite);
m.def("ADIOS", &ADIOSPyInit, "Function that creates an ADIOS class object");
pybind11::class_<adios::ADIOSPy>(m, "ADIOSPy")
.def("DeclareIO", &adios::ADIOSPy::DeclareIO);
pybind11::class_<adios::IOPy>(m, "IOPy")
.def("SetEngine", &adios::IOPy::SetEngine)
.def("SetParameters", &adios::IOPy::SetParameters)
.def("AddTransport", &adios::IOPy::AddTransport)
.def("DefineVariable", &adios::IOPy::DefineVariable,
pybind11::return_value_policy::reference_internal,
pybind11::arg("name"), pybind11::arg("shape") = adios::pyList(),
pybind11::arg("start") = adios::pyList(),
pybind11::arg("count") = adios::pyList(),
pybind11::arg("isConstantDims") = false)
.def("GetVariable", &adios::IOPy::GetVariable,
pybind11::return_value_policy::reference_internal)
.def("Open", (adios::EnginePy (adios::IOPy::*)(const std::string &,
const int)) &
adios::IOPy::Open);
pybind11::class_<adios::VariablePy>(m, "VariablePy")
.def("SetDimensions", &adios::VariablePy::SetDimensions);
pybind11::class_<adios::EnginePy>(m, "EnginePy")
.def("Write", &adios::EnginePy::Write)
.def("Advance", &adios::EnginePy::Advance,
pybind11::arg("timeoutSeconds") = 0.)
.def("Close", &adios::EnginePy::Close,
pybind11::arg("transportIndex") = -1);
return m.ptr();
}