@@ -12,6 +12,8 @@ void define_mesh(py::module_ &m)
1212{
1313 py::class_<Mesh>(m, " Mesh" , " Mesh" )
1414
15+ .def (" dimension" , &Mesh::dimension, " Dimension of the mesh (2 or 3)" )
16+
1517 .def (" n_elements" , &Mesh::n_elements, " Number of elements" )
1618
1719 .def (" n_boundary_elements" , &Mesh::n_boundary_elements,
@@ -92,6 +94,18 @@ void define_mesh(py::module_ &m)
9294 },
9395 " Get all vertex positions" )
9496
97+ .def (
98+ " set_vertices" ,
99+ [](Mesh &mesh, const Eigen::VectorXi &ids,
100+ const Eigen::MatrixXd &points) {
101+ for (int i = 0 ; i < ids.size (); i++)
102+ {
103+ assert (ids (i) < mesh.n_vertices ());
104+ mesh.set_point (ids (i), points.row (i));
105+ }
106+ },
107+ " Set a subset of vertex positions given a list of vertex indices" )
108+
95109 .def (
96110 " set_vertices" ,
97111 [](Mesh &mesh, const Eigen::MatrixXd &points) {
@@ -103,12 +117,13 @@ void define_mesh(py::module_ &m)
103117 .def (
104118 " elements" ,
105119 [](const Mesh &mesh) {
106- Eigen::MatrixXi elements (mesh.n_elements (), mesh.n_cell_vertices (0 ));
120+ Eigen::MatrixXi elements (mesh.n_elements (),
121+ mesh.n_cell_vertices (0 ));
107122 for (int e = 0 ; e < mesh.n_elements (); e++)
108123 {
109- assert (mesh.n_cell_vertices (e) == elements.cols ());
110- for (int i = 0 ; i < elements.cols (); i++)
111- elements (e, i) = mesh.element_vertex (e, i);
124+ assert (mesh.n_cell_vertices (e) == elements.cols ());
125+ for (int i = 0 ; i < elements.cols (); i++)
126+ elements (e, i) = mesh.element_vertex (e, i);
112127 }
113128 return elements;
114129 },
0 commit comments