Nektar++
Functions
SpatialDomains.cpp File Reference
#include <LibUtilities/Python/NekPyConfig.hpp>

Go to the source code of this file.

Functions

void export_Geometry ()
 
void export_Curve ()
 
void export_MeshGraph ()
 MeshGraph exports. More...
 
void export_GeomElements ()
 
 BOOST_PYTHON_MODULE (_SpatialDomains)
 

Function Documentation

◆ BOOST_PYTHON_MODULE()

BOOST_PYTHON_MODULE ( _SpatialDomains  )

Definition at line 42 of file SpatialDomains.cpp.

References export_Curve(), export_GeomElements(), export_Geometry(), and export_MeshGraph().

43 {
44  np::initialize();
45 
47  export_Curve();
50 }
void export_Geometry()
void export_Curve()
Definition: Curve.cpp:61
void export_GeomElements()
void export_MeshGraph()
MeshGraph exports.

◆ export_Curve()

void export_Curve ( )

Definition at line 61 of file Curve.cpp.

References Curve_GetPoints(), Curve_SetPoints(), Nektar::SpatialDomains::Curve::m_curveID, and Nektar::SpatialDomains::Curve::m_ptype.

Referenced by BOOST_PYTHON_MODULE().

62 {
63  py::class_<Curve, std::shared_ptr<Curve>>(
64  "Curve", py::init<int, LibUtilities::PointsType>())
65 
66  .def_readwrite("curveID", &Curve::m_curveID)
67  .def_readwrite("ptype", &Curve::m_ptype)
68  .add_property("points", &Curve_GetPoints, &Curve_SetPoints)
69  ;
70 }
void Curve_SetPoints(CurveSharedPtr curve, py::list &pts)
Definition: Curve.cpp:51
py::list Curve_GetPoints(CurveSharedPtr curve)
Definition: Curve.cpp:41

◆ export_GeomElements()

void export_GeomElements ( )

Definition at line 94 of file GeomElements.cpp.

References Nektar::SpatialDomains::SegGeom::GetCurve(), NEKPY_SHPTR_FIX, and SegGeom_Init().

Referenced by BOOST_PYTHON_MODULE().

95 {
96  // Geometry dimensioned base classes
97  py::class_<Geometry1D, py::bases<Geometry>, std::shared_ptr<Geometry1D>,
98  boost::noncopyable>(
99  "Geometry1D", py::no_init);
100  py::class_<Geometry2D, py::bases<Geometry>, std::shared_ptr<Geometry2D>,
101  boost::noncopyable>(
102  "Geometry2D", py::no_init);
103  py::class_<Geometry3D, py::bases<Geometry>, std::shared_ptr<Geometry3D>,
104  boost::noncopyable>(
105  "Geometry3D", py::no_init);
106 
107  // Point geometries
108  py::class_<PointGeom, py::bases<Geometry>, std::shared_ptr<PointGeom> >(
109  "PointGeom", py::init<>())
110  .def(py::init<int, int, NekDouble, NekDouble, NekDouble>());
111 
112  // Segment geometries
113  py::class_<SegGeom, py::bases<Geometry>, std::shared_ptr<SegGeom> >(
114  "SegGeom", py::init<>())
115  .def("__init__", py::make_constructor(
116  &SegGeom_Init, py::default_call_policies(), (
117  py::arg("id"), py::arg("coordim"),
118  py::arg("points")=py::list(),
119  py::arg("curve")=py::object())))
120  .def("GetCurve", &SegGeom::GetCurve);
121 
122  export_Geom<TriGeom, SegGeom, Geometry2D>("TriGeom");
123  export_Geom<QuadGeom, SegGeom, Geometry2D>("QuadGeom");
124  export_Geom<TetGeom, TriGeom, Geometry3D>("TetGeom");
125  export_Geom<PrismGeom, Geometry2D, Geometry3D>("PrismGeom");
126  export_Geom<PyrGeom, Geometry2D, Geometry3D>("PyrGeom");
127  export_Geom<HexGeom, QuadGeom, Geometry3D>("HexGeom");
128 
134 }
Base class for shape geometry information.
Definition: Geometry.h:83
#define NEKPY_SHPTR_FIX(SOURCE, TARGET)
SegGeomSharedPtr SegGeom_Init(int id, int coordim, py::list &points, py::object &curve)
3D geometry information
Definition: Geometry3D.h:67
1D geometry information
Definition: Geometry1D.h:54
2D geometry information
Definition: Geometry2D.h:68

◆ export_Geometry()

void export_Geometry ( )

Definition at line 55 of file Python/Geometry.cpp.

References Nektar::SpatialDomains::Geometry::FillGeom(), Geometry_ContainsPoint(), Geometry_GenGeomFactors(), Nektar::SpatialDomains::Geometry::GetCoeffs(), Nektar::SpatialDomains::Geometry::GetCoordim(), Nektar::SpatialDomains::Geometry::GetEdge(), Nektar::SpatialDomains::Geometry::GetEid(), Nektar::SpatialDomains::Geometry::GetEorient(), Nektar::SpatialDomains::Geometry::GetFace(), Nektar::SpatialDomains::Geometry::GetFid(), Nektar::SpatialDomains::Geometry::GetForient(), Nektar::SpatialDomains::Geometry::GetGlobalID(), Nektar::SpatialDomains::Geometry::GetNumEdges(), Nektar::SpatialDomains::Geometry::GetNumFaces(), Nektar::SpatialDomains::Geometry::GetNumVerts(), Nektar::SpatialDomains::Geometry::GetShapeDim(), Nektar::SpatialDomains::Geometry::GetShapeType(), Nektar::SpatialDomains::Geometry::GetTid(), Nektar::SpatialDomains::Geometry::GetVertex(), Nektar::SpatialDomains::Geometry::GetVid(), Nektar::SpatialDomains::Geometry::GetXmap(), and Nektar::SpatialDomains::Geometry::Setup().

Referenced by BOOST_PYTHON_MODULE().

56 {
57  py::class_<Geometry,
58  std::shared_ptr<Geometry>,
59  boost::noncopyable>(
60  "Geometry", py::no_init)
61 
62  .def("GetCoordim", &Geometry::GetCoordim)
63  .def("GetGlobalID", &Geometry::GetGlobalID)
64 
65  .def("Setup", &Geometry::Setup)
66  .def("FillGeom", &Geometry::FillGeom)
67  .def("GenGeomFactors", &Geometry_GenGeomFactors)
68 
69  .def("ContainsPoint", &Geometry_ContainsPoint)
70 
71  .def("GetVertex", &Geometry::GetVertex)
72  .def("GetEdge", &Geometry::GetEdge)
73  .def("GetFace", &Geometry::GetFace)
74  .def("GetVid", &Geometry::GetVid)
75  .def("GetEid", &Geometry::GetEid)
76  .def("GetFid", &Geometry::GetFid)
77  .def("GetTid", &Geometry::GetTid)
78 
79  .def("GetNumVerts", &Geometry::GetNumVerts)
80  .def("GetNumEdges", &Geometry::GetNumEdges)
81  .def("GetNumFaces", &Geometry::GetNumFaces)
82  .def("GetShapeDim", &Geometry::GetShapeDim)
83  .def("GetShapeType", &Geometry::GetShapeType)
84  .def("GetEorient", &Geometry::GetEorient)
85  .def("GetForient", &Geometry::GetForient)
86 
87  .def("GetXmap", &Geometry::GetXmap)
88  .def("GetCoeffs", &Geometry::GetCoeffs,
89  py::return_value_policy<py::copy_const_reference>())
90  ;
91 }
void Geometry_GenGeomFactors(GeometrySharedPtr geom)
Base class for shape geometry information.
Definition: Geometry.h:83
bool Geometry_ContainsPoint(GeometrySharedPtr geom, const Array< OneD, const NekDouble > &gloCoord)

◆ export_MeshGraph()

void export_MeshGraph ( )

MeshGraph exports.

Definition at line 55 of file Python/MeshGraph.cpp.

References Nektar::SpatialDomains::MeshGraph::GetAllHexGeoms(), Nektar::SpatialDomains::MeshGraph::GetAllPointGeoms(), Nektar::SpatialDomains::MeshGraph::GetAllPrismGeoms(), Nektar::SpatialDomains::MeshGraph::GetAllPyrGeoms(), Nektar::SpatialDomains::MeshGraph::GetAllQuadGeoms(), Nektar::SpatialDomains::MeshGraph::GetAllSegGeoms(), Nektar::SpatialDomains::MeshGraph::GetAllTetGeoms(), Nektar::SpatialDomains::MeshGraph::GetAllTriGeoms(), Nektar::SpatialDomains::MeshGraph::GetCurvedEdges(), Nektar::SpatialDomains::MeshGraph::GetCurvedFaces(), Nektar::SpatialDomains::MeshGraph::GetMeshDimension(), Nektar::SpatialDomains::MeshGraph::GetNumElements(), MeshGraph_Read(), Nektar::SpatialDomains::MeshGraph::SetExpansionsToEvenlySpacedPoints(), Nektar::SpatialDomains::MeshGraph::SetExpansionsToPointOrder(), and Nektar::SpatialDomains::MeshGraph::SetExpansionsToPolyOrder().

Referenced by BOOST_PYTHON_MODULE().

56 {
57  py::class_<PointGeomMap>("PointGeomMap")
58  .def(py::map_indexing_suite<PointGeomMap, true>());
59  py::class_<SegGeomMap>("SegGeomMap")
60  .def(py::map_indexing_suite<SegGeomMap, true>());
61  py::class_<QuadGeomMap>("QuadGeomMap")
62  .def(py::map_indexing_suite<QuadGeomMap, true>());
63  py::class_<TriGeomMap>("TriGeomMap")
64  .def(py::map_indexing_suite<TriGeomMap, true>());
65  py::class_<TetGeomMap>("TetGeomMap")
66  .def(py::map_indexing_suite<TetGeomMap, true>());
67  py::class_<PrismGeomMap>("PrismGeomMap")
68  .def(py::map_indexing_suite<PrismGeomMap, true>());
69  py::class_<PyrGeomMap>("PyrGeomMap")
70  .def(py::map_indexing_suite<PyrGeomMap, true>());
71  py::class_<HexGeomMap>("HexGeomMap")
72  .def(py::map_indexing_suite<HexGeomMap, true>());
73  py::class_<CurveMap>("CurveMap")
74  .def(py::map_indexing_suite<CurveMap, true>());
75 
76  py::class_<MeshGraph,
77  std::shared_ptr<MeshGraph>,
78  boost::noncopyable>(
79  "MeshGraph", py::no_init)
80 
81  .def("Read", MeshGraph_Read)
82  .staticmethod("Read")
83 
84  .def("GetMeshDimension", &MeshGraph::GetMeshDimension)
85  .def("GetAllPointGeoms", &MeshGraph::GetAllPointGeoms,
86  py::return_internal_reference<>())
87  .def("GetAllSegGeoms", &MeshGraph::GetAllSegGeoms,
88  py::return_internal_reference<>())
89  .def("GetAllQuadGeoms", &MeshGraph::GetAllQuadGeoms,
90  py::return_internal_reference<>())
91  .def("GetAllTriGeoms", &MeshGraph::GetAllTriGeoms,
92  py::return_internal_reference<>())
93  .def("GetAllTetGeoms", &MeshGraph::GetAllTetGeoms,
94  py::return_internal_reference<>())
95  .def("GetAllPrismGeoms", &MeshGraph::GetAllPrismGeoms,
96  py::return_internal_reference<>())
97  .def("GetAllPyrGeoms", &MeshGraph::GetAllPyrGeoms,
98  py::return_internal_reference<>())
99  .def("GetAllHexGeoms", &MeshGraph::GetAllHexGeoms,
100  py::return_internal_reference<>())
101  .def("GetCurvedEdges", &MeshGraph::GetCurvedEdges,
102  py::return_internal_reference<>())
103  .def("GetCurvedFaces", &MeshGraph::GetCurvedFaces,
104  py::return_internal_reference<>())
105 
106  .def("GetNumElements", &MeshGraph::GetNumElements)
107 
108  .def("SetExpansionsToEvenlySpacedPoints",
109  &MeshGraph::SetExpansionsToEvenlySpacedPoints)
110  .def("SetExpansionsToPolyOrder", &MeshGraph::SetExpansionsToPolyOrder)
111  .def("SetExpansionsToPointOrder", &MeshGraph::SetExpansionsToPointOrder)
112  ;
113 }
MeshGraphSharedPtr MeshGraph_Read(const LibUtilities::SessionReaderSharedPtr &session)
Base class for a spectral/hp element mesh.
Definition: MeshGraph.h:167