1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
/*
* Distributed under the OSI-approved Apache License, Version 2.0. See
* accompanying file Copyright.txt for details.
*
* py11Variable.h :
*
* Created on: Sep 7, 2018
* Author: William F Godoy godoywf@ornl.gov
*/
#ifndef ADIOS2_BINDINGS_PYTHON_VARIABLE_H_
#define ADIOS2_BINDINGS_PYTHON_VARIABLE_H_
#include <pybind11/numpy.h>
#include "py11Operator.h"
#include "adios2/core/VariableBase.h"
namespace adios2
{
namespace py11
{
class IO;
class Engine;
class Variable
{
friend class IO;
friend class Engine;
public:
Variable() = default;
~Variable() = default;
explicit operator bool() const noexcept;
void SetShape(const Dims &shape);
void SetBlockSelection(const size_t blockID);
void SetSelection(const Box<Dims> &selection);
void SetStepSelection(const Box<size_t> &stepSelection);
size_t SelectionSize() const;
std::string Name() const;
std::string Type() const;
/**
* Inspects size of the current element type, sizeof(T)
* @return sizeof(T) for current system
*/
size_t Sizeof() const;
/**
* Inspects shape id for current variable
* @return from enum adios2::ShapeID
*/
adios2::ShapeID ShapeID() const;
/**
* Inspects current shape
* @return shape vector
*/
Dims Shape(const size_t step = adios2::EngineCurrentStep) const;
/**
* Inspects current start point
* @return start vector
*/
Dims Start() const;
/**
* Inspects current count from start
* @return count vector
*/
Dims Count() const;
/**
* For read mode, inspect the number of available steps
* @return available steps
*/
size_t Steps() const;
/**
* For read mode, inspect the start step for available steps
* @return available start step
*/
size_t StepsStart() const;
size_t BlockID() const;
size_t SingleValue() const;
/**
* EXPERIMENTAL: Adds operation and parameters to current Variable object
* @param op operator to be added
* @param parameters key/value settings particular to the Variable, not to
* be confused by op own parameters
* @return operation index handler in Operations()
*/
size_t AddOperation(const Operator op, const Params ¶meters = Params());
/**
* EXPERIMENTAL: Adds operation and parameters to current Variable object
* @param op operator to be added
* @param parameters key/value settings particular to the Variable, not to
* be confused by op own parameters
* @return operation index handler in Operations()
*/
size_t AddOperation(const std::string &op, const Params ¶meters = Params());
/**
* EXPERIMENTAL: inspects current operators added with AddOperator
* @return vector of Variable<T>::OperatorInfo
*/
std::vector<Operator> Operations() const;
/**
* Removes all current Operations associated with AddOperation.
* Provides the posibility to apply or not operators on a step basis.
*/
void RemoveOperations();
/** Contains sub-block information for a particular Variable<T> */
struct Info
{
Dims Start;
Dims Count;
pybind11::array Min = pybind11::array();
pybind11::array Max = pybind11::array();
pybind11::array Value = pybind11::array();
bool IsValue;
};
private:
Variable(core::VariableBase *variable);
core::VariableBase *m_VariableBase = nullptr;
};
} // end namespace py11
} // end namespace adios2
#endif /* ADIOS2_BINDINGS_PYTHON_PY11VARIABLE_H_ */
|