/Users/enrico/Ricerca/develop/PINS/pins-mechatronix/LibSources/submodules/Splines/src/Splines/SplineSet.hxx Source FileΒΆ

Splines: /Users/enrico/Ricerca/develop/PINS/pins-mechatronix/LibSources/submodules/Splines/src/Splines/SplineSet.hxx Source File
Splines
SplineSet.hxx
1/*--------------------------------------------------------------------------*\
2 | |
3 | Copyright (C) 2016 |
4 | |
5 | , __ , __ |
6 | /|/ \ /|/ \ |
7 | | __/ _ ,_ | __/ _ ,_ |
8 | | \|/ / | | | | \|/ / | | | |
9 | |(__/|__/ |_/ \_/|/|(__/|__/ |_/ \_/|/ |
10 | /| /| |
11 | \| \| |
12 | |
13 | Enrico Bertolazzi |
14 | Dipartimento di Ingegneria Industriale |
15 | Universita` degli Studi di Trento |
16 | email: enrico.bertolazzi@unitn.it |
17 | |
18\*--------------------------------------------------------------------------*/
19
20/*\
21 | ____ _ _ ____ _
22 | / ___| _ __ | (_)_ __ ___/ ___| ___| |_
23 | \___ \| '_ \| | | '_ \ / _ \___ \ / _ \ __|
24 | ___) | |_) | | | | | | __/___) | __/ |_
25 | |____/| .__/|_|_|_| |_|\___|____/ \___|\__|
26 | |_|
27\*/
28
29namespace Splines {
30
32 class SplineSet {
33
34 SplineSet( SplineSet const & ) = delete;
35 SplineSet const & operator = ( SplineSet const & ) = delete;
36
37 class BinarySearch {
38 public:
39 typedef std::pair<std::string,integer> DATA_TYPE;
40 private:
41 mutable std::vector<DATA_TYPE> data;
42 public:
43 BinarySearch() { data.clear(); data.reserve(256); }
44 ~BinarySearch() { data.clear(); }
45
46 void clear() { data.clear(); data.reserve(256); }
47
48 integer n_elem() const { return integer(data.size()); }
49
50 DATA_TYPE const &
51 get_elem( integer i ) const { return data[size_t(i)]; }
52
53 integer search( std::string const & id ) const;
54 void insert( std::string const & id, integer position );
55 };
56
57 protected:
58
59 #ifndef DOXYGEN_SHOULD_SKIP_THIS
60
61 string const m_name;
62
63 Utils::Malloc<real_type> m_mem;
64 Utils::Malloc<real_type*> m_mem_p;
65 Utils::Malloc<void*> m_mem_splines;
66 Utils::Malloc<int> m_mem_int;
67
68 integer m_npts{0};
69 integer m_nspl{0};
70
71 real_type * m_X{nullptr};
72 real_type ** m_Y{nullptr};
73 real_type ** m_Yp{nullptr};
74 real_type ** m_Ypp{nullptr};
75 real_type * m_Ymin{nullptr};
76 real_type * m_Ymax{nullptr};
77
78 Spline ** m_splines{nullptr};
79 int * m_is_monotone{nullptr};
80
81 std::map<string,integer> m_header_to_position;
82
83 #endif
84
85 private:
86
91 Spline const * intersect( integer spl, real_type zeta, real_type & x ) const;
92
93 public:
94
99
105 SplineSet( string const & name = "SplineSet" );
106
110 virtual
111 ~SplineSet();
113
121 string const & name() const { return m_name; }
122
126 string const & header( integer i ) const { return m_splines[i]->name(); }
127
128 // vectorial values
132 void get_headers( std::vector<std::string> & names ) const;
133
137 string name_list() const;
138
145 int
147 { return m_is_monotone[i]; }
148
152 integer num_points() const { return m_npts; }
153
157 integer num_splines() const { return m_nspl; }
158
163 integer get_position( char const hdr[] ) const;
164
168 real_type const * x_nodes() const { return m_X; }
169
173 real_type const * y_nodes( integer i ) const;
174
178 real_type x_node( integer npt ) const { return m_X[npt]; }
179
183 real_type y_node( integer npt, integer spl ) const { return m_Y[spl][npt]; }
184
188 real_type x_min() const { return m_X[0]; }
189
193 real_type x_max() const { return m_X[m_npts-1]; }
194
198 real_type y_min( integer spl ) const { return m_Ymin[size_t(spl)]; }
199
203 real_type y_max( integer spl ) const { return m_Ymax[size_t(spl)]; }
204
209 y_min( char const spl[] ) const {
210 integer idx{ this->get_position(spl) };
211 return m_Ymin[idx];
212 }
213
218 y_max( char const spl[] ) const {
219 integer idx{ this->get_position(spl) };
220 return m_Ymax[idx];
221 }
222
224
227
231 Spline * get_spline( integer i ) const;
232
236 Spline *
237 get_spline( char const hdr[] ) const {
238 integer idx{ this->get_position(hdr) };
239 return m_splines[idx];
240 }
241
243
246
252 Spline const * S{ this->get_spline(spl) };
253 return S->eval(x);
254 }
255
260 eval( real_type x, integer spl ) const {
261 Spline const * S{ this->get_spline(spl) };
262 return S->eval(x);
263 }
264
269 D( real_type x, integer spl ) const {
270 Spline const * S{ this->get_spline(spl) };
271 return S->D(x);
272 }
273
278 eval_D( real_type x, integer spl ) const {
279 Spline const * S{ this->get_spline(spl) };
280 return S->D(x);
281 }
282
287 DD( real_type x, integer spl ) const {
288 Spline const * S{ this->get_spline(spl) };
289 return S->DD(x);
290 }
291
296 eval_DD( real_type x, integer spl ) const {
297 Spline const * S{ this->get_spline(spl) };
298 return S->DD(x);
299 }
300
305 DDD( real_type x, integer spl ) const {
306 Spline const * S{ this->get_spline(spl) };
307 return S->DDD(x);
308 }
309
314 eval_DDD( real_type x, integer spl ) const {
315 Spline const * S{ this->get_spline(spl) };
316 return S->DDD(x);
317 }
318
323 DDDD( real_type x, integer spl ) const {
324 Spline const * S{ this->get_spline(spl) };
325 return S->DDDD(x);
326 }
327
332 eval_DDDD( real_type x, integer spl ) const {
333 Spline const * S{ this->get_spline(spl) };
334 return S->DDDD(x);
335 }
336
341 DDDDD( real_type x, integer spl ) const {
342 Spline const * S{ this->get_spline(spl) };
343 return S->DDDDD(x);
344 }
345
350 eval_DDDDD( real_type x, integer spl ) const {
351 Spline const * S{ this->get_spline(spl) };
352 return S->DDDDD(x);
353 }
354
359 eval( real_type x, char const name[] ) const {
360 Spline const * S{ this->get_spline(name) };
361 return S->eval(x);
362 }
363
368 eval_D( real_type x, char const name[] ) const {
369 Spline const * S{ this->get_spline(name) };
370 return S->D(x);
371 }
372
377 eval_DD( real_type x, char const name[] ) const {
378 Spline const * S{ this->get_spline(name) };
379 return S->DD(x);
380 }
381
386 eval_DDD( real_type x, char const name[] ) const {
387 Spline const * S{ this->get_spline(name) };
388 return S->DDD(x);
389 }
390
395 eval_DDDD( real_type x, char const name[] ) const {
396 Spline const * S{ this->get_spline(name) };
397 return S->DDDD(x);
398 }
399
404 eval_DDDDD( real_type x, char const name[] ) const {
405 Spline const * S{ this->get_spline(name) };
406 return S->DDDDD(x);
407 }
408
410
411 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
412
417
421 void eval( real_type x, vector<real_type> & vals ) const;
422
426 void eval_D( real_type x, vector<real_type> & vals ) const;
427
431 void eval_DD( real_type x, vector<real_type> & vals ) const;
432
436 void eval_DDD( real_type x, vector<real_type> & vals ) const;
437
441 void eval_DDDD( real_type x, vector<real_type> & vals ) const;
442
446 void eval_DDDDD( real_type x, vector<real_type> & vals ) const;
447
449
452
456 void
457 eval(
458 real_type x,
459 real_type vals[],
460 integer incy = 1
461 ) const;
462
466 void
467 eval_D(
468 real_type x,
469 real_type vals[],
470 integer incy = 1
471 ) const;
472
476 void
477 eval_DD(
478 real_type x,
479 real_type vals[],
480 integer incy = 1
481 ) const;
482
486 void
487 eval_DDD(
488 real_type x,
489 real_type vals[],
490 integer incy = 1
491 ) const;
492
496 void
498 real_type x,
499 real_type vals[],
500 integer incy = 1
501 ) const;
502
506 void
508 real_type x,
509 real_type vals[],
510 integer incy = 1
511 ) const;
512
514
517
521 void
522 eval2(
523 integer spl,
524 real_type zeta,
525 vector<real_type> & vals
526 ) const;
527
532 void
533 eval2_D(
534 integer spl,
535 real_type zeta,
536 vector<real_type> & vals
537 ) const;
538
543 void
544 eval2_DD(
545 integer spl,
546 real_type zeta,
547 vector<real_type> & vals
548 ) const;
549
554 void
555 eval2_DDD(
556 integer spl,
557 real_type zeta,
558 vector<real_type> & vals
559 ) const;
560
562
565
569 void
570 eval2(
571 integer spl,
572 real_type zeta,
573 real_type vals[],
574 integer incy = 1
575 ) const;
576
581 void
582 eval2_D(
583 integer spl,
584 real_type zeta,
585 real_type vals[],
586 integer incy = 1
587 ) const;
588
593 void
594 eval2_DD(
595 integer spl,
596 real_type zeta,
597 real_type vals[],
598 integer incy = 1
599 ) const;
600
605 void
606 eval2_DDD(
607 integer spl,
608 real_type zeta,
609 real_type vals[],
610 integer incy = 1
611 ) const;
612
614
615 // \name Evaluate using another spline as independent
617
623 eval2(
624 real_type zeta,
625 char const indep[],
626 char const name[]
627 ) const;
628
634 eval2_D(
635 real_type zeta,
636 char const indep[],
637 char const name[]
638 ) const;
639
645 eval2_DD(
646 real_type zeta,
647 char const indep[],
648 char const name[]
649 ) const;
650
656 eval2_DDD(
657 real_type zeta,
658 char const indep[],
659 char const name[]
660 ) const;
661
663
666
672 eval2(
673 real_type zeta,
674 integer indep,
675 integer spl
676 ) const;
677
683 eval2_D(
684 real_type zeta,
685 integer indep,
686 integer spl
687 ) const;
688
694 eval2_DD(
695 real_type zeta,
696 integer indep,
697 integer spl
698 ) const;
699
705 eval2_DDD(
706 real_type zeta,
707 integer indep,
708 integer spl
709 ) const;
710
712
715
720 void
721 eval( real_type x, GenericContainer & vals ) const;
722
727 void
728 eval( vec_real_type const & vec, GenericContainer & vals ) const;
729
734 void
735 eval(
736 real_type x,
737 vec_string_type const & columns,
738 GenericContainer & vals
739 ) const;
740
746 void
747 eval(
748 vec_real_type const & vec,
749 vec_string_type const & columns,
750 GenericContainer & vals
751 ) const;
752
754
757
763 void
764 eval2(
765 real_type zeta,
766 integer indep,
767 GenericContainer & vals
768 ) const;
769
775 void
776 eval2(
777 vec_real_type const & zetas,
778 integer indep,
779 GenericContainer & vals
780 ) const;
781
787 void
788 eval2(
789 real_type zeta,
790 integer indep,
791 vec_string_type const & columns,
792 GenericContainer & vals
793 ) const;
794
800 void
801 eval2(
802 vec_real_type const & zetas,
803 integer indep,
804 vec_string_type const & columns,
805 GenericContainer & vals
806 ) const;
807
809
812
817 void
819 real_type zeta,
820 char const indep[],
821 GenericContainer & vals
822 ) const {
823 this->eval2( zeta, this->get_position(indep), vals );
824 }
825
831 void
833 vec_real_type const & zetas,
834 char const indep[],
835 GenericContainer & vals
836 ) const {
837 this->eval2( zetas, this->get_position(indep), vals );
838 }
839
845 void
847 real_type zeta,
848 char const indep[],
849 vec_string_type const & columns,
850 GenericContainer & vals
851 ) const {
852 this->eval2( zeta, this->get_position(indep), columns, vals );
853 }
854
860 void
862 vec_real_type const & zetas,
863 char const indep[],
864 vec_string_type const & columns,
865 GenericContainer & vals
866 ) const {
867 this->eval2( zetas, this->get_position(indep), columns, vals );
868 }
870
873
878 void
879 eval_D(
880 real_type x,
881 GenericContainer & vals
882 ) const;
883
888 void
889 eval_D(
890 vec_real_type const & vec,
891 GenericContainer & vals
892 ) const;
893
898 void
899 eval_D(
900 real_type x,
901 vec_string_type const & columns,
902 GenericContainer & vals
903 ) const;
904
910 void
911 eval_D(
912 vec_real_type const & vec,
913 vec_string_type const & columns,
914 GenericContainer & vals
915 ) const;
916
918
919
922
927 void
928 eval2_D(
929 real_type zeta,
930 integer indep,
931 GenericContainer & vals
932 ) const;
933
939 void
940 eval2_D(
941 vec_real_type const & zetas,
942 integer indep,
943 GenericContainer & vals
944 ) const;
945
951 void
952 eval2_D(
953 real_type zeta,
954 integer indep,
955 vec_string_type const & columns,
956 GenericContainer & vals
957 ) const;
958
964 void
965 eval2_D(
966 vec_real_type const & zetas,
967 integer indep,
968 vec_string_type const & columns,
969 GenericContainer & vals
970 ) const;
971
973
976
981 void
983 real_type zeta,
984 char const indep[],
985 GenericContainer & vals
986 ) const {
987 this->eval2_D( zeta, this->get_position(indep), vals );
988 }
989
995 void
997 vec_real_type const & zetas,
998 char const indep[],
999 GenericContainer & vals
1000 ) const {
1001 this->eval2_D( zetas, this->get_position(indep), vals );
1002 }
1003
1009 void
1011 real_type zeta,
1012 char const indep[],
1013 vec_string_type const & columns,
1014 GenericContainer & vals
1015 ) const {
1016 this->eval2_D( zeta, this->get_position(indep), columns, vals );
1017 }
1018
1024 void
1026 vec_real_type const & zetas,
1027 char const indep[],
1028 vec_string_type const & columns,
1029 GenericContainer & vals
1030 ) const {
1031 this->eval2_D( zetas, this->get_position(indep), columns, vals );
1032 }
1033
1035
1038
1043 void
1044 eval_DD(
1045 real_type x,
1046 GenericContainer & vals
1047 ) const;
1048
1053 void
1054 eval_DD(
1055 vec_real_type const & vec,
1056 GenericContainer & vals
1057 ) const;
1058
1063 void
1064 eval_DD(
1065 real_type x,
1066 vec_string_type const & columns,
1067 GenericContainer & vals
1068 ) const;
1069
1074 void
1075 eval_DD(
1076 vec_real_type const & vec,
1077 vec_string_type const & columns,
1078 GenericContainer & vals
1079 ) const;
1080
1085 void
1086 eval2_DD(
1087 real_type zeta,
1088 integer indep,
1089 GenericContainer & vals
1090 ) const;
1091
1097 void
1098 eval2_DD(
1099 vec_real_type const & zetas,
1100 integer indep,
1101 GenericContainer & vals
1102 ) const;
1103
1109 void
1110 eval2_DD(
1111 real_type zeta,
1112 integer indep,
1113 vec_string_type const & columns,
1114 GenericContainer & vals
1115 ) const;
1116
1122 void
1123 eval2_DD(
1124 vec_real_type const & zetas,
1125 integer indep,
1126 vec_string_type const & columns,
1127 GenericContainer & vals
1128 ) const;
1129
1131
1134
1139 void
1141 real_type zeta,
1142 char const indep[],
1143 GenericContainer & vals
1144 ) const {
1145 this->eval2_DD( zeta, this->get_position(indep), vals );
1146 }
1147
1153 void
1155 vec_real_type const & zetas,
1156 char const indep[],
1157 GenericContainer & vals
1158 ) const {
1159 this->eval2_DD( zetas, this->get_position(indep), vals );
1160 }
1161
1167 void
1169 real_type zeta,
1170 char const indep[],
1171 vec_string_type const & columns,
1172 GenericContainer & vals
1173 ) const {
1174 this->eval2_DD( zeta, this->get_position(indep), columns, vals );
1175 }
1176
1182 void
1184 vec_real_type const & zetas,
1185 char const indep[],
1186 vec_string_type const & columns,
1187 GenericContainer & vals
1188 ) const {
1189 this->eval2_DD( zetas, this->get_position(indep), columns, vals );
1190 }
1192
1195
1200 void
1201 eval_DDD(
1202 real_type x,
1203 GenericContainer & vals
1204 ) const;
1205
1210 void
1211 eval_DDD(
1212 vec_real_type const & vec,
1213 GenericContainer & vals
1214 ) const;
1215
1220 void
1221 eval_DDD(
1222 real_type x,
1223 vec_string_type const & columns,
1224 GenericContainer & vals
1225 ) const;
1226
1231 void
1232 eval_DDD(
1233 vec_real_type const & vec,
1234 vec_string_type const & columns,
1235 GenericContainer & vals
1236 ) const;
1238
1241
1246 void
1247 eval2_DDD(
1248 real_type zeta,
1249 integer indep,
1250 GenericContainer & vals
1251 ) const;
1252
1258 void
1259 eval2_DDD(
1260 vec_real_type const & zetas,
1261 integer indep,
1262 GenericContainer & vals
1263 ) const;
1264
1270 void
1271 eval2_DDD(
1272 real_type zeta,
1273 integer indep,
1274 vec_string_type const & columns,
1275 GenericContainer & vals
1276 ) const;
1277
1283 void
1284 eval2_DDD(
1285 vec_real_type const & zetas,
1286 integer indep,
1287 vec_string_type const & columns,
1288 GenericContainer & vals
1289 ) const;
1291
1294
1299 void
1301 real_type zeta,
1302 char const * indep,
1303 GenericContainer & vals
1304 ) const {
1305 this->eval2_DDD( zeta, this->get_position(indep), vals );
1306 }
1307
1313 void
1315 vec_real_type const & zetas,
1316 char const indep[],
1317 GenericContainer & vals
1318 ) const {
1319 this->eval2_DDD( zetas, this->get_position(indep), vals );
1320 }
1321
1327 void
1329 real_type zeta,
1330 char const indep[],
1331 vec_string_type const & columns,
1332 GenericContainer & vals
1333 ) const {
1334 this->eval2_DDD( zeta, this->get_position(indep), columns, vals );
1335 }
1336
1342 void
1344 vec_real_type const & zetas,
1345 char const indep[],
1346 vec_string_type const & columns,
1347 GenericContainer & vals
1348 ) const {
1349 this->eval2_DDD( zetas, this->get_position(indep), columns, vals );
1350 }
1351
1353
1356
1369 void
1370 build(
1371 integer nspl,
1372 integer npts,
1373 char const * headers[],
1374 SplineType1D const stype[],
1375 real_type const X[],
1376 real_type const * Y[],
1377 real_type const * Yp[] = nullptr
1378 );
1379
1383 void
1384 setup( GenericContainer const & gc );
1385
1389 void
1390 build( GenericContainer const & gc )
1391 { this->setup(gc); }
1392
1394
1396 SplineType1D type() const { return SplineType1D::SPLINE_SET; }
1397
1401 string info() const;
1402
1406 void
1407 info( ostream_type & stream ) const
1408 { stream << this->info() << '\n'; }
1409
1413 void
1414 dump_table( ostream_type & s, integer num_points ) const;
1415
1416 #ifdef SPLINES_BACK_COMPATIBILITY
1417 int isMonotone( integer i ) const { return m_is_monotone[i]; }
1418 integer numPoints() const { return m_npts; }
1419 integer numSplines() const { return m_nspl; }
1420 integer getPosition( char const hdr[] ) const { return get_position(hdr); }
1421 real_type const * xNodes() const { return m_X; }
1422 real_type const * yNodes( integer i ) const;
1423 real_type xNode( integer npt ) const { return this->x_node(npt); }
1424 real_type yNode( integer npt, integer spl ) const { return this->y_node(npt,spl); }
1425 real_type xMin() const { return this->x_min(); }
1426 real_type xMax() const { return this->x_max(); }
1427 real_type yMin( integer spl ) const { return this->y_min( spl ); }
1428 real_type yMax( integer spl ) const { return this->y_max( spl ); }
1429 real_type yMin( char const spl[] ) const { return this->y_min(spl); }
1430 real_type yMax( char const spl[] ) const { return this->y_max(spl); }
1431 Spline * getSpline( integer i ) const { return this->get_spline(i); }
1432 Spline * getSpline( char const hdr[] ) const { return this->get_spline( hdr ); }
1433 #endif
1434
1435 };
1436
1437}
1438
1439// EOF: SplineSet.hxx
Definition Splines.hh:372
virtual real_type DDDDD(real_type) const
Definition Splines.hh:784
virtual real_type eval(real_type x) const =0
virtual real_type DD(real_type x) const =0
virtual real_type DDDD(real_type) const
Definition Splines.hh:779
virtual real_type D(real_type x) const =0
virtual real_type DDD(real_type x) const =0
Splines Management Class.
Definition SplineSet.hxx:32
Spline * get_spline(char const hdr[]) const
Definition SplineSet.hxx:237
void eval2_DD(real_type zeta, char const indep[], GenericContainer &vals) const
Definition SplineSet.hxx:1140
void info(ostream_type &stream) const
Definition SplineSet.hxx:1407
real_type DDDDD(real_type x, integer spl) const
Definition SplineSet.hxx:341
void eval2_D(real_type zeta, char const indep[], vec_string_type const &columns, GenericContainer &vals) const
Definition SplineSet.hxx:1010
real_type y_max(integer spl) const
Definition SplineSet.hxx:203
void eval2_D(integer spl, real_type zeta, vector< real_type > &vals) const
Definition SplineSet.cc:639
void eval2_DDD(real_type zeta, char const indep[], vec_string_type const &columns, GenericContainer &vals) const
Definition SplineSet.hxx:1328
void eval_DDDDD(real_type x, real_type vals[], integer incy=1) const
real_type DD(real_type x, integer spl) const
Definition SplineSet.hxx:287
real_type eval_DDD(real_type x, integer spl) const
Definition SplineSet.hxx:314
void eval_DDDD(real_type x, real_type vals[], integer incy=1) const
void eval2(real_type zeta, char const indep[], vec_string_type const &columns, GenericContainer &vals) const
Definition SplineSet.hxx:846
string name_list() const
Definition SplineSet.cc:139
virtual ~SplineSet()
spline destructor
Definition SplineSet.cc:93
void build(integer nspl, integer npts, char const *headers[], SplineType1D const stype[], real_type const X[], real_type const *Y[], real_type const *Yp[]=nullptr)
Definition SplineSet.cc:208
void eval2_D(vec_real_type const &zetas, char const indep[], vec_string_type const &columns, GenericContainer &vals) const
Definition SplineSet.hxx:1025
integer num_splines() const
Definition SplineSet.hxx:157
void get_headers(std::vector< std::string > &names) const
Definition SplineSet.cc:129
void dump_table(ostream_type &s, integer num_points) const
Definition SplineSet.cc:174
real_type DDD(real_type x, integer spl) const
Definition SplineSet.hxx:305
real_type eval_DDD(real_type x, char const name[]) const
Definition SplineSet.hxx:386
void setup(GenericContainer const &gc)
Definition SplineSetGC.cc:49
real_type x_node(integer npt) const
Definition SplineSet.hxx:178
real_type y_min(integer spl) const
Definition SplineSet.hxx:198
void eval2_DDD(real_type zeta, char const *indep, GenericContainer &vals) const
Definition SplineSet.hxx:1300
real_type operator()(real_type x, integer spl) const
Definition SplineSet.hxx:251
real_type eval(real_type x, char const name[]) const
Definition SplineSet.hxx:359
integer get_position(char const hdr[]) const
Definition SplineSet.cc:194
real_type y_max(char const spl[]) const
Definition SplineSet.hxx:218
real_type y_node(integer npt, integer spl) const
Definition SplineSet.hxx:183
void eval2_DD(real_type zeta, char const indep[], vec_string_type const &columns, GenericContainer &vals) const
Definition SplineSet.hxx:1168
void eval2_DDD(vec_real_type const &zetas, char const indep[], GenericContainer &vals) const
Definition SplineSet.hxx:1314
string const & header(integer i) const
Definition SplineSet.hxx:126
real_type eval_DDDD(real_type x, integer spl) const
Definition SplineSet.hxx:332
real_type y_min(char const spl[]) const
Definition SplineSet.hxx:209
real_type eval_DDDD(real_type x, char const name[]) const
Definition SplineSet.hxx:395
void eval2_DD(integer spl, real_type zeta, vector< real_type > &vals) const
Definition SplineSet.cc:696
real_type eval_D(real_type x, char const name[]) const
Definition SplineSet.hxx:368
real_type x_max() const
Definition SplineSet.hxx:193
void eval2_D(vec_real_type const &zetas, char const indep[], GenericContainer &vals) const
Definition SplineSet.hxx:996
real_type eval_DDDDD(real_type x, char const name[]) const
Definition SplineSet.hxx:404
void eval2_DDD(vec_real_type const &zetas, char const indep[], vec_string_type const &columns, GenericContainer &vals) const
Definition SplineSet.hxx:1343
void eval2_DD(vec_real_type const &zetas, char const indep[], GenericContainer &vals) const
Definition SplineSet.hxx:1154
int is_monotone(integer i) const
Definition SplineSet.hxx:146
real_type const * y_nodes(integer i) const
Definition SplineSet.cc:150
void eval2(vec_real_type const &zetas, char const indep[], GenericContainer &vals) const
Definition SplineSet.hxx:832
string info() const
Definition SplineSet.cc:103
string const & name() const
Definition SplineSet.hxx:121
real_type x_min() const
Definition SplineSet.hxx:188
real_type eval_DD(real_type x, char const name[]) const
Definition SplineSet.hxx:377
void eval2_DDD(integer spl, real_type zeta, vector< real_type > &vals) const
Definition SplineSet.cc:758
real_type eval_DDDDD(real_type x, integer spl) const
Definition SplineSet.hxx:350
real_type D(real_type x, integer spl) const
Definition SplineSet.hxx:269
void eval_DDDDD(real_type x, vector< real_type > &vals) const
real_type const * x_nodes() const
Definition SplineSet.hxx:168
real_type eval(real_type x, integer spl) const
Definition SplineSet.hxx:260
real_type eval_D(real_type x, integer spl) const
Definition SplineSet.hxx:278
SplineType1D type() const
Return spline type (as number)
Definition SplineSet.hxx:1396
void eval_DDDD(real_type x, vector< real_type > &vals) const
void build(GenericContainer const &gc)
Definition SplineSet.hxx:1390
integer num_points() const
Definition SplineSet.hxx:152
Spline * get_spline(integer i) const
Definition SplineSet.cc:162
void eval2_D(real_type zeta, char const indep[], GenericContainer &vals) const
Definition SplineSet.hxx:982
real_type eval_DD(real_type x, integer spl) const
Definition SplineSet.hxx:296
void eval2_DD(vec_real_type const &zetas, char const indep[], vec_string_type const &columns, GenericContainer &vals) const
Definition SplineSet.hxx:1183
void eval2(real_type zeta, char const indep[], GenericContainer &vals) const
Definition SplineSet.hxx:818
void eval2(vec_real_type const &zetas, char const indep[], vec_string_type const &columns, GenericContainer &vals) const
Definition SplineSet.hxx:861
real_type DDDD(real_type x, integer spl) const
Definition SplineSet.hxx:323
void eval2(integer spl, real_type zeta, vector< real_type > &vals) const
Definition SplineSet.cc:586
Definition SplineAkima.cc:50
int integer
Signed integer type for splines.
Definition Splines.hh:58
enum class SplineType1D :integer { CONSTANT=0, LINEAR=1, CUBIC=2, AKIMA=3, BESSEL=4, PCHIP=5, QUINTIC=6, HERMITE=7, SPLINE_SET=8, SPLINE_VEC=9 } SplineType1D
Associate a number for each type of splines implemented.
Definition Splines.hh:71
double real_type
Floating point type for splines.
Definition Splines.hh:57