From 33006f46d44a739ef7bb64a35bf2298173e741c3 Mon Sep 17 00:00:00 2001 From: Bruno Turcksin Date: Wed, 1 Jun 2016 11:40:05 -0400 Subject: [PATCH] Use templated functions. --- source/python/export_point.cc | 10 +++-- source/python/export_triangulation.cc | 61 +++++++++++++++------------ 2 files changed, 40 insertions(+), 31 deletions(-) diff --git a/source/python/export_point.cc b/source/python/export_point.cc index 1ddfbdb2c1..92c981723b 100644 --- a/source/python/export_point.cc +++ b/source/python/export_point.cc @@ -19,12 +19,14 @@ namespace PyDealII { - double get_x(const dealii::Point<2> &point) + template + double get_x(const dealii::Point &point) { return point(0); } - double get_y(const dealii::Point<2> &point) + template + double get_y(const dealii::Point &point) { return point(1); } @@ -33,8 +35,8 @@ namespace PyDealII { boost::python::class_> ("Point", "Constructor. Requires x and y.", boost::python::init()) - .add_property("x", get_x, "Return the x component of the point.") - .add_property("y", get_y, "Return the y component of the point."); + .add_property("x", get_x<2>, "Return the x component of the point.") + .add_property("y", get_y<2>, "Return the y component of the point."); } } diff --git a/source/python/export_triangulation.cc b/source/python/export_triangulation.cc index c626cc6802..9fe9c4accc 100644 --- a/source/python/export_triangulation.cc +++ b/source/python/export_triangulation.cc @@ -23,17 +23,19 @@ namespace PyDealII { - unsigned int n_active_cells(const dealii::Triangulation<2> &triangulation) + template + unsigned int n_active_cells(const dealii::Triangulation &triangulation) { return triangulation.n_active_cells(); } - void generate_hyper_cube(dealii::Triangulation<2> &triangulation, - const double left = 0., - const double right = 0., - const bool colorize = false) + template + void generate_hyper_cube(dealii::Triangulation &triangulation, + const double left = 0., + const double right = 0., + const bool colorize = false) { dealii::GridGenerator::hyper_cube(triangulation, left, right, colorize); } @@ -55,10 +57,11 @@ namespace PyDealII - void generate_subdivided_hyper_cube(dealii::Triangulation<2> &triangulation, - const unsigned int repetitions, - const double left = 0., - const double right = 1.) + template + void generate_subdivided_hyper_cube(dealii::Triangulation &triangulation, + const unsigned int repetitions, + const double left = 0., + const double right = 1.) { dealii::GridGenerator::subdivided_hyper_cube(triangulation, repetitions, left, right); @@ -66,10 +69,11 @@ namespace PyDealII - void generate_hyper_rectangle(dealii::Triangulation<2> &triangulation, - const dealii::Point<2> &p1, - const dealii::Point<2> &p2, - const bool colorize = false) + template + void generate_hyper_rectangle(dealii::Triangulation &triangulation, + const dealii::Point &p1, + const dealii::Point &p2, + const bool colorize = false) { dealii::GridGenerator::hyper_rectangle(triangulation, p1, p2, colorize); } @@ -92,17 +96,19 @@ namespace PyDealII - void generate_hyper_ball(dealii::Triangulation<2> &triangulation, - const dealii::Point<2> ¢er = dealii::Point<2>(), - const double radius = 1.) + template + void generate_hyper_ball(dealii::Triangulation &triangulation, + const dealii::Point ¢er = dealii::Point(), + const double radius = 1.) { dealii::GridGenerator::hyper_ball(triangulation, center, radius); } - void save(const dealii::Triangulation<2> &triangulation, - const std::string filename) + template + void save(const dealii::Triangulation &triangulation, + const std::string filename) { std::ofstream ofs(filename); boost::archive::text_oarchive oa(ofs); @@ -111,8 +117,9 @@ namespace PyDealII - void load(dealii::Triangulation<2> &triangulation, - const std::string filename) + template + void load(dealii::Triangulation &triangulation, + const std::string filename) { std::ifstream ifs(filename); boost::archive::text_iarchive ia(ifs); @@ -135,21 +142,21 @@ namespace PyDealII void export_triangulation() { boost::python::class_> ("Triangulation") - .def("n_active_cells", n_active_cells, + .def("n_active_cells", n_active_cells<2>, "Return the number of active cells", boost::python::args("self")) - .def("generate_hyper_cube", generate_hyper_cube, + .def("generate_hyper_cube", generate_hyper_cube<2>, generate_hyper_cube_overloads( boost::python::args("self", "left", "right", "colorize"), "Generate a hyper_cube.")) .def("generate_simplex", generate_simplex, "Generate a simplex.", boost::python::args("self", "vertex_1", "vertex_2", "vertex_3")) - .def("generate_subdivided_hyper_cube", generate_subdivided_hyper_cube, + .def("generate_subdivided_hyper_cube", generate_subdivided_hyper_cube<2>, generate_subdivided_hyper_cube_overloads( boost::python::args("self", "repetitions", "left", "right"), "Generate a subdivided hyper_cube.")) - .def("generate_hyper_rectangle", generate_hyper_rectangle, + .def("generate_hyper_rectangle", generate_hyper_rectangle<2>, generate_hyper_rectangle_overloads( boost::python::args("self", "p1", "p2", "colorize"), "Generate a hyper_rectangle.")) @@ -161,16 +168,16 @@ namespace PyDealII "colorize"), "Generate a subdivided hyper_rectangle.")) .def("generate_hyper_ball", - generate_hyper_ball, + generate_hyper_ball<2>, generate_hyper_ball_overloads( boost::python::args("self", "center", "radius"), "Generate a hyper_ball.")) .def("refine_global", &dealii::Triangulation<2>::refine_global, "Refine the mesh uniformly.", boost::python::args("self", "times")) - .def("save", save, "Serialize and save the triangulation.", + .def("save", save<2>, "Serialize and save the triangulation.", boost::python::args("self", "filename")) - .def("load", load, "Load and deserialize a triangulation.", + .def("load", load<2>, "Load and deserialize a triangulation.", boost::python::args("self", "filename")); } -- 2.39.5