18 #include <structmember.h>
22 #include <boost/python.hpp>
23 #include <boost/python/suite/indexing/vector_indexing_suite.hpp>
27 #include "PyOpal/ExceptionTranslation.h"
35 using namespace interpolation;
36 namespace py = boost::python;
42 int gLength = boost::python::len(gridCoordinates);
43 std::vector<std::vector<double> > coords(gLength);
44 for (
int i = 0; i < gLength; ++i) {
45 int lineLength = boost::python::len(gridCoordinates[i]);
46 coords[i] = std::vector<double>(lineLength);
47 for (
int j = 0; j < lineLength; ++j) {
48 coords[i][j] = boost::python::extract<double>(gridCoordinates[i][j]);
56 boost::python::list spacing,
57 boost::python::list
min) {
58 int dim = boost::python::len(size);
59 if (dim != boost::python::len(spacing)) {
61 }
else if (dim != boost::python::len(min)) {
64 std::vector<int> sizeVec(dim);
65 std::vector<double> spacingVec(dim);
66 std::vector<double> minVec(dim);
67 for (
int i = 0; i < dim; ++i) {
68 sizeVec[i] = boost::python::extract<int>(size[i]);
69 spacingVec[i] = boost::python::extract<double>(spacing[i]);
70 minVec[i] = boost::python::extract<double>(min[i]);
73 return NDGrid(dim, &sizeVec[0], &spacingVec[0], &minVec[0]);
79 "Dimension out of bounds");
82 py::list coord = py::list();
83 for (
size_t i = 0; i < vec.size(); ++i) {
96 boost::python::class_<NDGrid>(
"NDGrid")
98 .staticmethod(
"initialise_variable_spacing")
100 .staticmethod(
"initialise_fixed_spacing")
BOOST_PYTHON_MODULE(ndgrid)
T::PETE_Expr_t::PETE_Return_t min(const PETE_Expr< T > &expr, NDIndex< D > &loc)
void registerExceptions()
The base class for all OPAL exceptions.
std::vector< double > coordVector(const int &dimension) const
const char * module_docstring
py::list coordVector(NDGrid &grid, int dimension)
int size(const int &dimension) const
NDGrid initialiseFixedSpacing(boost::python::list size, boost::python::list spacing, boost::python::list min)
NDGrid initialiseVariableSpacing(boost::python::list gridCoordinates)
int getPositionDimension() const