Skip to content

Commit

Permalink
Merge pull request #161 from tataratat/ft-cpp-mp
Browse files Browse the repository at this point in the history
Core implementation of MultiPatch
  • Loading branch information
j042 committed Jun 19, 2023
2 parents 2aeb70d + b873f2b commit 6b81d28
Show file tree
Hide file tree
Showing 31 changed files with 3,220 additions and 1,893 deletions.
2 changes: 1 addition & 1 deletion cpp/splinepy/py/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ set(PYSPLINEPY_SRCS
init/coordinate_reference.cpp
init/core_spline.cpp
init/fitting.cpp
init/multi_patch.cpp
init/reader.cpp
init/spline_extensions.cpp
init/spline_list.cpp
init/uffpy.cpp
splinepy_core.cpp)

Expand Down
52 changes: 1 addition & 51 deletions cpp/splinepy/py/init/exporter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,56 +2,6 @@

namespace splinepy::py::init {

void init_exporter(py::module_& m) {
// Void functions that define arguments
// returns [connectivity, vertex_ids, edge_information, boundaries]
m.def("retrieve_mfem_information",
&splinepy::py::RetrieveMfemInformation,
py::arg("corner_vertices"),
py::arg("tolerance"));
m.def("interfaces_from_boundary_centers",
&splinepy::py::InterfacesFromBoundaryCenters,
py::arg("face_center_vertices"),
py::arg("tolerance"),
py::arg("para_dim"));
m.def("extract_all_boundary_splines",
&splinepy::py::ExtractAllBoundarySplines,
py::arg("splines"),
py::arg("interfaces"),
py::arg("nthreads") = 1);
m.def("orientations",
&splinepy::py::GetBoundaryOrientations,
py::arg("splines"),
py::arg("base_ids"),
py::arg("base_face_ids"),
py::arg("neighbor_ids"),
py::arg("neighbor_face_ids"),
py::arg("tolerance"),
py::arg("nthreads") = 1);
m.def("boundaries_from_continuity",
&splinepy::py::AddBoundariesFromContinuity,
py::arg("boundary_splines"),
py::arg("boundary_interfaces"),
py::arg("global_interfaces"),
py::arg("tolerance"),
py::arg("nthreads") = 1);
m.def("export_iges",
&splinepy::py::ExportIges,
py::arg("fname"),
py::arg("splines"));
m.def("export_irit",
&splinepy::py::ExportIrit,
py::arg("fname"),
py::arg("splines"));
m.def("export_xml",
&splinepy::py::ExportXml,
py::arg("fname"),
py::arg("splines"));
m.def("export_vtk",
&splinepy::py::ExportVtk,
py::arg("fname"),
py::arg("splines"),
py::arg("resolutions_per_spline"));
}
void init_exporter(py::module_& m) { add_spline_exporter(m); }

} // namespace splinepy::py::init
35 changes: 1 addition & 34 deletions cpp/splinepy/py/init/fitting.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,6 @@

namespace splinepy::py::init {

void init_fitting(py::module_& m) {
// Functions that return fitted bspline as dict.
m.def("interpolate_curve",
&splinepy::py::InterpolateCurve,
py::arg("points"),
py::arg("degree"),
py::arg("centripetal"),
py::arg("knot_vector"));
m.def("approximate_curve",
&splinepy::py::ApproximateCurve,
py::arg("points"),
py::arg("degree"),
py::arg("n_control_points"),
py::arg("centripetal"),
py::arg("knot_vector"));
m.def("interpolate_surface",
&splinepy::py::InterpolateSurface,
py::arg("points"),
py::arg("size_u"),
py::arg("size_v"),
py::arg("degree_u"),
py::arg("degree_v"),
py::arg("centripetal"));
m.def("approximate_surface",
&splinepy::py::ApproximateSurface,
py::arg("points"),
py::arg("num_points_u"),
py::arg("num_points_v"),
py::arg("size_u"),
py::arg("size_v"),
py::arg("degree_u"),
py::arg("degree_v"),
py::arg("centripetal"));
}
void init_fitting(py::module_& m) { add_fitting(m); }

} // namespace splinepy::py::init
7 changes: 7 additions & 0 deletions cpp/splinepy/py/init/multi_patch.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#include <splinepy/py/py_multi_patch.hpp>

namespace splinepy::py::init {

void init_multi_patch(py::module_& m) { add_multi_patch(m); }

} // namespace splinepy::py::init
8 changes: 1 addition & 7 deletions cpp/splinepy/py/init/reader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,6 @@

namespace splinepy::py::init {

void init_reader(py::module_& m) {
// Functions that return list of dict.
// Keys are ["knot_vectors", "control_points", "degrees"] (+ ["weights"])
m.def("read_iges", &read_iges, py::arg("fname"))
.def("read_xml", &read_xml, py::arg("fname"))
.def("read_irit", &read_irit, py::arg("fname"));
}
void init_reader(py::module_& m) { add_spline_reader(m); }

} // namespace splinepy::py::init
7 changes: 0 additions & 7 deletions cpp/splinepy/py/init/spline_list.cpp

This file was deleted.

35 changes: 35 additions & 0 deletions cpp/splinepy/py/py_fitting.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -278,4 +278,39 @@ py::dict ApproximateSurface(py::array_t<double> points,
return dict_spline;
}

inline void add_fitting(py::module& m) {
// Functions that return fitted bspline as dict.
m.def("interpolate_curve",
&splinepy::py::InterpolateCurve,
py::arg("points"),
py::arg("degree"),
py::arg("centripetal"),
py::arg("knot_vector"));
m.def("approximate_curve",
&splinepy::py::ApproximateCurve,
py::arg("points"),
py::arg("degree"),
py::arg("n_control_points"),
py::arg("centripetal"),
py::arg("knot_vector"));
m.def("interpolate_surface",
&splinepy::py::InterpolateSurface,
py::arg("points"),
py::arg("size_u"),
py::arg("size_v"),
py::arg("degree_u"),
py::arg("degree_v"),
py::arg("centripetal"));
m.def("approximate_surface",
&splinepy::py::ApproximateSurface,
py::arg("points"),
py::arg("num_points_u"),
py::arg("num_points_v"),
py::arg("size_u"),
py::arg("size_v"),
py::arg("degree_u"),
py::arg("degree_v"),
py::arg("centripetal"));
}

} // namespace splinepy::py
Loading

0 comments on commit 6b81d28

Please sign in to comment.