Skip to content

Commit 91af97f

Browse files
committed
Add convexity-constrained fitting and knot insertion
- New fitpack_convex_curve type wrapping concon (automatic knots) and cocosp (least-squares with given knots) for local convexity/concavity constraints on cubic splines - Add insert_knot method to fitpack_curve (single and multiple, with automatic storage growth and periodic curve support) - Add FP_BOOL comm helpers (size/pack/expand) for logical array round-trip communication - Add CONCON_MAXBIN, CONCON_MAXTR, CONCON_QP_FAIL error constants - 4 new tests: convex fit, convex least-squares, knot insertion, periodic knot insertion
1 parent 43d18c9 commit 91af97f

File tree

8 files changed

+786
-15
lines changed

8 files changed

+786
-15
lines changed

project/fitpack.cbp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,12 @@
9090
<Unit filename="../src/fitpack_constrained_c.f90">
9191
<Option weight="0" />
9292
</Unit>
93-
<Unit filename="../src/fitpack_core.F90" />
93+
<Unit filename="../src/fitpack_convex_curves.f90">
94+
<Option weight="0" />
95+
</Unit>
96+
<Unit filename="../src/fitpack_core.F90">
97+
<Option weight="0" />
98+
</Unit>
9499
<Unit filename="../src/fitpack_core.f90">
95100
<Option weight="0" />
96101
</Unit>
@@ -103,7 +108,9 @@
103108
<Unit filename="../src/fitpack_curves_c.f90">
104109
<Option weight="0" />
105110
</Unit>
106-
<Unit filename="../src/fitpack_fitters.f90" />
111+
<Unit filename="../src/fitpack_fitters.f90">
112+
<Option weight="0" />
113+
</Unit>
107114
<Unit filename="../src/fitpack_grid_surfaces.f90">
108115
<Option weight="0" />
109116
</Unit>

project/fitpack.fdepend

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,51 @@
11
# fdepslib dependency file v1.1
2-
1771258224source:/Users/federico/code/fitpack/src/fitpack.f90
2+
1771352414source:/Users/federico/code/fitpack/src/fitpack.f90
33

44
1704620662source:/Users/federico/code/fitpack/src/fitpack_closed_c.f90
55

66
1704623491source:/Users/federico/code/fitpack/src/fitpack_constrained_c.f90
77

8-
1771258028source:/Users/federico/code/fitpack/src/fitpack_core.f90
8+
1771352396source:/Users/federico/code/fitpack/src/fitpack_convex_curves.f90
9+
10+
1771352267source:/Users/federico/code/fitpack/src/fitpack_core.F90
11+
12+
1771352267source:/Users/federico/code/fitpack/src/fitpack_core.f90
913

1014
1766849605source:/Users/federico/code/fitpack/src/fitpack_core_c.f90
1115

12-
1771259882source:/Users/federico/code/fitpack/src/fitpack_curves.f90
16+
1771352308source:/Users/federico/code/fitpack/src/fitpack_curves.f90
1317

1418
1764238257source:/Users/federico/code/fitpack/src/fitpack_curves_c.f90
1519

16-
1771259888source:/Users/federico/code/fitpack/src/fitpack_grid_surfaces.f90
20+
1771259735source:/Users/federico/code/fitpack/src/fitpack_fitters.f90
21+
22+
1771269940source:/Users/federico/code/fitpack/src/fitpack_grid_surfaces.f90
1723

18-
1771259891source:/Users/federico/code/fitpack/src/fitpack_gridded_polar.f90
24+
1771269944source:/Users/federico/code/fitpack/src/fitpack_gridded_polar.f90
1925

20-
1771259893source:/Users/federico/code/fitpack/src/fitpack_gridded_sphere.f90
26+
1771269947source:/Users/federico/code/fitpack/src/fitpack_gridded_sphere.f90
2127

22-
1771259882source:/Users/federico/code/fitpack/src/fitpack_parametric.f90
28+
1771269934source:/Users/federico/code/fitpack/src/fitpack_parametric.f90
2329

2430
1741628651source:/Users/federico/code/fitpack/src/fitpack_parametric_c.f90
2531

26-
1771259895source:/Users/federico/code/fitpack/src/fitpack_parametric_surfaces.f90
32+
1771269941source:/Users/federico/code/fitpack/src/fitpack_parametric_surfaces.f90
2733

2834
1703948614source:/Users/federico/code/fitpack/src/fitpack_periodic_curves_c.f90
2935

30-
1771259887source:/Users/federico/code/fitpack/src/fitpack_polar.f90
36+
1771269943source:/Users/federico/code/fitpack/src/fitpack_polar.f90
3137

32-
1771259889source:/Users/federico/code/fitpack/src/fitpack_spheres.f90
38+
1771269945source:/Users/federico/code/fitpack/src/fitpack_spheres.f90
3339

34-
1771259882source:/Users/federico/code/fitpack/src/fitpack_surfaces.f90
40+
1771269938source:/Users/federico/code/fitpack/src/fitpack_surfaces.f90
3541

3642
1704617612source:/Users/federico/code/fitpack/test/fitpack_cpp_tests.f90
3743

38-
1771258900source:/Users/federico/code/fitpack/test/fitpack_curve_tests.f90
44+
1771352536source:/Users/federico/code/fitpack/test/fitpack_curve_tests.f90
3945

4046
1740771300source:/Users/federico/code/fitpack/test/fitpack_test_data.f90
4147

4248
1765036074source:/Users/federico/code/fitpack/test/fitpack_tests.f90
4349

44-
1771258788source:/Users/federico/code/fitpack/test/test.f90
50+
1771352474source:/Users/federico/code/fitpack/test/test.f90
4551

src/fitpack.f90

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ module fitpack
2727
use fitpack_gridded_sphere
2828
use fitpack_polar_domains
2929
use fitpack_sphere_domains
30+
use fitpack_convex_curves
3031
use fitpack_parametric_curves
3132
use fitpack_parametric_surfaces
3233

@@ -48,6 +49,7 @@ module fitpack
4849
public :: fitpack_periodic_curve
4950
public :: fitpack_parametric_curve
5051
public :: fitpack_constrained_curve
52+
public :: fitpack_convex_curve
5153

5254
public :: fitpack_polar
5355
public :: fitpack_grid_polar
@@ -71,6 +73,7 @@ module fitpack
7173
public :: FITPACK_TOO_MANY_KNOTS, FITPACK_OVERLAPPING_KNOTS, FITPACK_INVALID_RANGE
7274
public :: FITPACK_INPUT_ERROR, FITPACK_TEST_ERROR
7375
public :: FITPACK_INVALID_CONSTRAINT, FITPACK_INSUFFICIENT_KNOTS
76+
public :: CONCON_MAXBIN, CONCON_MAXTR, CONCON_QP_FAIL
7477

7578
! Public interface: error utility functions
7679
public :: FITPACK_SUCCESS, FITPACK_MESSAGE, IOPT_MESSAGE

0 commit comments

Comments
 (0)