Skip to content

Commit feb551a

Browse files
committed
refactor: Correct spline naming/types in python module
Signed-off-by: Sietze van Buuren <s.van.buuren@gmail.com>
1 parent 2c7aad6 commit feb551a

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

include/cubic_splines_2d.hpp

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class AkimaSpline2D : public CubicInterpND<T, N>
5050

5151

5252

53-
template <typename T, cip::BoundaryConditionType BC=cip::BoundaryConditionType::NotAKnot, std::size_t N=2>
53+
template <typename T, cip::BoundaryConditionType BC=cip::BoundaryConditionType::Natural, std::size_t N=2>
5454
class NaturalSpline2D : public CubicInterpND<T, N>
5555
{
5656
using Vector = std::vector<T>;
@@ -71,4 +71,25 @@ class NaturalSpline2D : public CubicInterpND<T, N>
7171
};
7272

7373

74+
template <typename T, cip::BoundaryConditionType BC=cip::BoundaryConditionType::Periodic, std::size_t N=2>
75+
class NaturalPeriodicSpline2D : public CubicInterpND<T, N>
76+
{
77+
using Vector = std::vector<T>;
78+
using Mdspan1D = std::mdspan<T, std::dextents<std::size_t, 1>, std::layout_stride>;
79+
using VectorN = cip::VectorN<T, N>;
80+
public:
81+
NaturalPeriodicSpline2D(const Vector &_x, const Vector &_y, const VectorN &_f)
82+
: CubicInterpND<T, N>(_f, _x, _y)
83+
{
84+
this->build(_f, _x, _y);
85+
}
86+
~NaturalPeriodicSpline2D() {}
87+
88+
Vector calc_slopes(const Vector &x, const Mdspan1D &f) const override
89+
{
90+
return natural_spline_slopes<T, BC>(x, f);
91+
}
92+
};
93+
94+
7495
} // namespace cip

include/cubic_splines_3d.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
namespace cip {
88

99

10-
template <typename T, cip::BoundaryConditionType BC=cip::BoundaryConditionType::NotAKnot, std::size_t N=3>
10+
template <typename T, cip::BoundaryConditionType BC=cip::BoundaryConditionType::Natural, std::size_t N=3>
1111
class NaturalSpline3D : public CubicInterpND<T, N>
1212
{
1313
using Vector = std::vector<T>;

src/cubinterpp_py_module.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ PYBIND11_MODULE(cubinterpp_py, m) {
6060
.def(py::init<DoubleVector, DoubleVector, DoubleVector2>())
6161
.def("eval", &cip::NaturalSpline2D<double>::eval<double, double>, py::return_value_policy::reference_internal);
6262

63+
py::class_<cip::NaturalPeriodicSpline2D<double>>(m, "NaturalPeriodicSpline2D")
64+
.def(py::init<DoubleVector, DoubleVector, DoubleVector2>())
65+
.def("eval", &cip::NaturalPeriodicSpline2D<double>::eval<double, double>, py::return_value_policy::reference_internal);
66+
6367
py::class_<cip::NaturalSpline3D<double>>(m, "NaturalSpline3D")
6468
.def(py::init<DoubleVector, DoubleVector, DoubleVector, DoubleVector3>())
6569
.def("eval", &cip::NaturalSpline3D<double>::eval<double, double, double>, py::return_value_policy::reference_internal);

0 commit comments

Comments
 (0)