Loading src/Python/pytnl/CMakeLists.txt +3 −0 Original line number Diff line number Diff line add_subdirectory( tnl ) if( BUILD_MPI ) add_subdirectory( tnl_mpi ) endif() install( DIRECTORY . DESTINATION "include/pytnl" MESSAGE_NEVER Loading src/Python/pytnl/tnl/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ set( sources Grid2D.cpp Grid3D.cpp Mesh.cpp MeshReaders.cpp Object.cpp SparseMatrix.cpp String.cpp Loading src/Python/pytnl/tnl/Mesh.cpp +0 −25 Original line number Diff line number Diff line Loading @@ -2,35 +2,10 @@ #include "../tnl_conversions.h" #include "Mesh.h" #include <TNL/Meshes/Readers/VTKReader.h> #include <TNL/Meshes/Readers/VTUReader.h> template< typename Reader > void export_reader( py::module & m, const char* name ) { py::class_< Reader >( m, name ) .def(py::init<std::string>()) .def("loadMesh", &Reader::template loadMesh< MeshOfEdges >) .def("loadMesh", &Reader::template loadMesh< MeshOfTriangles >) .def("loadMesh", &Reader::template loadMesh< MeshOfTetrahedrons >) // .def("loadMesh", []( Reader& reader, const std::string& name, MeshOfEdges & mesh ) { // return reader.loadMesh( name.c_str(), mesh ); // } ) // .def("loadMesh", []( Reader& reader, const std::string& name, MeshOfTriangles & mesh ) { // return reader.loadMesh( name.c_str(), mesh ); // } ) // .def("loadMesh", []( Reader& reader, const std::string& name, MeshOfTetrahedrons & mesh ) { // return reader.loadMesh( name.c_str(), mesh ); // } ) ; } void export_Meshes( py::module & m ) { export_Mesh< MeshOfEdges >( m, "MeshOfEdges" ); export_Mesh< MeshOfTriangles >( m, "MeshOfTriangles" ); export_Mesh< MeshOfTetrahedrons >( m, "MeshOfTetrahedrons" ); export_reader< TNL::Meshes::Readers::VTKReader >( m, "VTKReader" ); export_reader< TNL::Meshes::Readers::VTUReader >( m, "VTUReader" ); } src/Python/pytnl/tnl/MeshReaders.cpp 0 → 100644 +37 −0 Original line number Diff line number Diff line // conversions have to be registered for each object file #include "../tnl_conversions.h" #include "MeshReaders.h" #include "../typedefs.h" void export_MeshReaders( py::module & m ) { using MeshReader = TNL::Meshes::Readers::MeshReader; using XMLVTK = TNL::Meshes::Readers::XMLVTK; // base class with trampolines for virtual methods py::class_< MeshReader, PyMeshReader >( m, "MeshReader" ) .def(py::init<std::string>()) // bindings against the actual class, NOT the trampoline .def("reset", &MeshReader::reset) .def("detectMesh", &MeshReader::detectMesh) .def("loadMesh", &MeshReader::template loadMesh< MeshOfEdges >) .def("loadMesh", &MeshReader::template loadMesh< MeshOfTriangles >) .def("loadMesh", &MeshReader::template loadMesh< MeshOfTetrahedrons >) ; py::class_< TNL::Meshes::Readers::VTKReader, MeshReader >( m, "VTKReader" ) .def(py::init<std::string>()) ; // base class for VTUReader and PVTUReader py::class_< XMLVTK, PyXMLVTK, MeshReader >( m, "XMLVTK" ) .def(py::init<std::string>()) .def("readPointData", &XMLVTK::readPointData) .def("readCellData", &XMLVTK::readCellData) ; py::class_< TNL::Meshes::Readers::VTUReader, XMLVTK >( m, "VTUReader" ) .def(py::init<std::string>()) ; } src/Python/pytnl/tnl/MeshReaders.h 0 → 100644 +47 −0 Original line number Diff line number Diff line #include <TNL/Meshes/Readers/VTKReader.h> #include <TNL/Meshes/Readers/VTUReader.h> // trampoline classes needed for overriding virtual methods // https://pybind11.readthedocs.io/en/stable/advanced/classes.html class PyMeshReader : public TNL::Meshes::Readers::MeshReader { using Parent = TNL::Meshes::Readers::MeshReader; public: // inherit constructors using TNL::Meshes::Readers::MeshReader::MeshReader; // trampolines (one for each virtual method) void reset() override { PYBIND11_OVERRIDE_PURE( void, Parent, reset ); } void detectMesh() override { PYBIND11_OVERRIDE_PURE( void, Parent, detectMesh ); } }; class PyXMLVTK : public TNL::Meshes::Readers::XMLVTK { using Parent = TNL::Meshes::Readers::XMLVTK; public: // inherit constructors using TNL::Meshes::Readers::XMLVTK::XMLVTK; // trampolines (one for each virtual method) void reset() override { PYBIND11_OVERRIDE_PURE( void, Parent, reset ); } void detectMesh() override { PYBIND11_OVERRIDE_PURE( void, Parent, detectMesh ); } }; Loading
src/Python/pytnl/CMakeLists.txt +3 −0 Original line number Diff line number Diff line add_subdirectory( tnl ) if( BUILD_MPI ) add_subdirectory( tnl_mpi ) endif() install( DIRECTORY . DESTINATION "include/pytnl" MESSAGE_NEVER Loading
src/Python/pytnl/tnl/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ set( sources Grid2D.cpp Grid3D.cpp Mesh.cpp MeshReaders.cpp Object.cpp SparseMatrix.cpp String.cpp Loading
src/Python/pytnl/tnl/Mesh.cpp +0 −25 Original line number Diff line number Diff line Loading @@ -2,35 +2,10 @@ #include "../tnl_conversions.h" #include "Mesh.h" #include <TNL/Meshes/Readers/VTKReader.h> #include <TNL/Meshes/Readers/VTUReader.h> template< typename Reader > void export_reader( py::module & m, const char* name ) { py::class_< Reader >( m, name ) .def(py::init<std::string>()) .def("loadMesh", &Reader::template loadMesh< MeshOfEdges >) .def("loadMesh", &Reader::template loadMesh< MeshOfTriangles >) .def("loadMesh", &Reader::template loadMesh< MeshOfTetrahedrons >) // .def("loadMesh", []( Reader& reader, const std::string& name, MeshOfEdges & mesh ) { // return reader.loadMesh( name.c_str(), mesh ); // } ) // .def("loadMesh", []( Reader& reader, const std::string& name, MeshOfTriangles & mesh ) { // return reader.loadMesh( name.c_str(), mesh ); // } ) // .def("loadMesh", []( Reader& reader, const std::string& name, MeshOfTetrahedrons & mesh ) { // return reader.loadMesh( name.c_str(), mesh ); // } ) ; } void export_Meshes( py::module & m ) { export_Mesh< MeshOfEdges >( m, "MeshOfEdges" ); export_Mesh< MeshOfTriangles >( m, "MeshOfTriangles" ); export_Mesh< MeshOfTetrahedrons >( m, "MeshOfTetrahedrons" ); export_reader< TNL::Meshes::Readers::VTKReader >( m, "VTKReader" ); export_reader< TNL::Meshes::Readers::VTUReader >( m, "VTUReader" ); }
src/Python/pytnl/tnl/MeshReaders.cpp 0 → 100644 +37 −0 Original line number Diff line number Diff line // conversions have to be registered for each object file #include "../tnl_conversions.h" #include "MeshReaders.h" #include "../typedefs.h" void export_MeshReaders( py::module & m ) { using MeshReader = TNL::Meshes::Readers::MeshReader; using XMLVTK = TNL::Meshes::Readers::XMLVTK; // base class with trampolines for virtual methods py::class_< MeshReader, PyMeshReader >( m, "MeshReader" ) .def(py::init<std::string>()) // bindings against the actual class, NOT the trampoline .def("reset", &MeshReader::reset) .def("detectMesh", &MeshReader::detectMesh) .def("loadMesh", &MeshReader::template loadMesh< MeshOfEdges >) .def("loadMesh", &MeshReader::template loadMesh< MeshOfTriangles >) .def("loadMesh", &MeshReader::template loadMesh< MeshOfTetrahedrons >) ; py::class_< TNL::Meshes::Readers::VTKReader, MeshReader >( m, "VTKReader" ) .def(py::init<std::string>()) ; // base class for VTUReader and PVTUReader py::class_< XMLVTK, PyXMLVTK, MeshReader >( m, "XMLVTK" ) .def(py::init<std::string>()) .def("readPointData", &XMLVTK::readPointData) .def("readCellData", &XMLVTK::readCellData) ; py::class_< TNL::Meshes::Readers::VTUReader, XMLVTK >( m, "VTUReader" ) .def(py::init<std::string>()) ; }
src/Python/pytnl/tnl/MeshReaders.h 0 → 100644 +47 −0 Original line number Diff line number Diff line #include <TNL/Meshes/Readers/VTKReader.h> #include <TNL/Meshes/Readers/VTUReader.h> // trampoline classes needed for overriding virtual methods // https://pybind11.readthedocs.io/en/stable/advanced/classes.html class PyMeshReader : public TNL::Meshes::Readers::MeshReader { using Parent = TNL::Meshes::Readers::MeshReader; public: // inherit constructors using TNL::Meshes::Readers::MeshReader::MeshReader; // trampolines (one for each virtual method) void reset() override { PYBIND11_OVERRIDE_PURE( void, Parent, reset ); } void detectMesh() override { PYBIND11_OVERRIDE_PURE( void, Parent, detectMesh ); } }; class PyXMLVTK : public TNL::Meshes::Readers::XMLVTK { using Parent = TNL::Meshes::Readers::XMLVTK; public: // inherit constructors using TNL::Meshes::Readers::XMLVTK::XMLVTK; // trampolines (one for each virtual method) void reset() override { PYBIND11_OVERRIDE_PURE( void, Parent, reset ); } void detectMesh() override { PYBIND11_OVERRIDE_PURE( void, Parent, detectMesh ); } };