Mercurial > hg > kwantix
annotate src/include/interpolator.hpp @ 61:b3bf4ac981ec default tip
Update the doxygen documentation
author | Jordi Gutiérrez Hermoso <jordigh@gmail.com> |
---|---|
date | Sat, 29 May 2010 20:01:40 -0500 |
parents | 11395e64852f |
children |
rev | line source |
---|---|
15
5144dd3c5468
Almost completed adding all Doxygen docstrings.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
14
diff
changeset
|
1 /*!\file interpolator.hpp |
5144dd3c5468
Almost completed adding all Doxygen docstrings.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
14
diff
changeset
|
2 * |
5144dd3c5468
Almost completed adding all Doxygen docstrings.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
14
diff
changeset
|
3 * \brief An interpolator \f$ \displaystyle u(x) = \sum_{\xi \in \Xi} |
5144dd3c5468
Almost completed adding all Doxygen docstrings.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
14
diff
changeset
|
4 * \lambda_\xi \varphi_\xi(x) \f$, templated by RBFs, and its helper |
5144dd3c5468
Almost completed adding all Doxygen docstrings.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
14
diff
changeset
|
5 * classes are declared here. |
5144dd3c5468
Almost completed adding all Doxygen docstrings.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
14
diff
changeset
|
6 * |
16
29a7b95c2805
Essentially all Doxygen docstrings complete.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
15
diff
changeset
|
7 * \file interpolator.cpp |
29a7b95c2805
Essentially all Doxygen docstrings complete.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
15
diff
changeset
|
8 * \brief Implementations and instantiations of the functions and |
29a7b95c2805
Essentially all Doxygen docstrings complete.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
15
diff
changeset
|
9 * classes declared in interpolator.hpp |
15
5144dd3c5468
Almost completed adding all Doxygen docstrings.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
14
diff
changeset
|
10 */ |
58
11395e64852f
Replace include guards with #pragma once
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
54
diff
changeset
|
11 #pragma once |
0 | 12 |
13 #include <vector> | |
14 #include <map> | |
15 #include <boost/shared_ptr.hpp> | |
24
ad9e3d28ce9b
Implement op<< for bvp::interpolator
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
23
diff
changeset
|
16 #include <iostream> |
0 | 17 #include "bvp.hpp" |
18 #include "linalg.hpp" | |
19 #include "func.hpp" | |
20 #include "diff_op.hpp" | |
18
382e3b8e3f88
Compiles, and runs, but doesn't produce desired output. Must investigate this further.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
17
diff
changeset
|
21 #include "interp_values.hpp" |
0 | 22 |
32
bb8a95bf2aa4
Rename kwantxi to kwantix
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
30
diff
changeset
|
23 namespace kwantix{ |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
24 using std::map; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
25 using boost::shared_ptr; |
4
9d4fda54a41d
Buggy, must check why interpolator assignment destroys precomputed
Jordi Guitérrez Hermoso <jordigh@gmail.com>
parents:
0
diff
changeset
|
26 |
61
b3bf4ac981ec
Update the doxygen documentation
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
58
diff
changeset
|
27 /** \defgroup Interpolator */ |
b3bf4ac981ec
Update the doxygen documentation
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
58
diff
changeset
|
28 /// \{ |
42
3f8311cbf602
Setup initial class for vtkplot; cleanup interpolator to use C++1x's auto and untabify
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
40
diff
changeset
|
29 class vtkplot; |
3f8311cbf602
Setup initial class for vtkplot; cleanup interpolator to use C++1x's auto and untabify
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
40
diff
changeset
|
30 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
31 //FIXME: Break this up into an ansatz class and an interpolator |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
32 //class. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
33 /*! \brief An interpolator \f$ \displaystyle u(x) = \sum_{\xi \in |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
34 * \Xi} \lambda_\xi \varphi_\xi(x) \f$, where the \f$ \varphi_\xi |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
35 * \f$ are RBFs. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
36 * |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
37 * An interpolator \f$ \displaystyle u(x) = \sum_{\xi \in \Xi} |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
38 * \lambda_\xi \varphi_\xi(x) \f$, where the \f$\varphi_\xi\f$ are |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
39 * RBFs centred at \f$\xi\f$, and \f$\Xi\f$ is a set of points on |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
40 * the interior and boundary of some domain \f$\Omega\f$. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
41 * |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
42 * The interpolator can be used in various ways, initialised by |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
43 * either a BVP::linear_bvp2 or by interpolation data |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
44 * (i.e. std::map< kwantix::point, double>). Once an interpolator is |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
45 * initialised, it becomes a bona fide kwantix::realfunc, so that its |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
46 * evaluations and derivatives become available. For certain |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
47 * problems, it is convenient to be able to evaluate the |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
48 * interpolator or its derivatives at all points of the domain. It |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
49 * is also useful to be able to interpolate again on the same domain |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
50 * or with a slightly modified BVP. Interfaces to both of these |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
51 * functions are provided. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
52 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
53 template<typename RBF> |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
54 class interpolator : public realfunc{ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
55 public: |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
56 |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
57 /** @name Constructors |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
58 * |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
59 * Constructors that take interpolation data perform the |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
60 * interpolation as part of the initialisation, which includes |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
61 * factoring a matrix |
15
5144dd3c5468
Almost completed adding all Doxygen docstrings.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
14
diff
changeset
|
62 */ |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
63 //@{ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
64 ///Does not initialise the interpolator. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
65 interpolator(); |
4
9d4fda54a41d
Buggy, must check why interpolator assignment destroys precomputed
Jordi Guitérrez Hermoso <jordigh@gmail.com>
parents:
0
diff
changeset
|
66 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
67 ///Interpolate given a BVP |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
68 interpolator(shared_ptr<linear_BVP2> bvp); |
0 | 69 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
70 ///Interpolate given some data points and the value at those points |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
71 interpolator(const map<point, double>& Xi); |
0 | 72 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
73 /** \short Interpolate given a domain, data points and the value |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
74 * at those points |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
75 * |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
76 * Must provide domain information. The values of Xi must match |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
77 * points on the given domain Omega. The reason why the domain |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
78 * might be relevant is in case it is important to specify which |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
79 * points are on the interior and which are on the boundary, so |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
80 * that it's possible to interpolate again by changing the values |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
81 * on either the interior or the boundary. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
82 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
83 interpolator(shared_ptr<domain> Omega, const map<point, double>& Xi); |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
84 //@} |
0 | 85 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
86 /** @name Interpolation |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
87 * |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
88 * Interpolate again either given new data or a different BVP. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
89 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
90 //@{ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
91 void interpolate(const map<point, double>& Xi); |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
92 void interpolate(shared_ptr<linear_BVP2> bvp); |
13
0531194a431d
Preliminary whole domain evaluations
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
12
diff
changeset
|
93 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
94 /** \short Interpolate given values on the domain |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
95 * |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
96 * The given values must match the values returned by other |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
97 * interpolators on compatible domains. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
98 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
99 void interpolate(const interp_values& values); |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
100 //@} |
0 | 101 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
102 /** @name Pointwise evaluation and derivatives |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
103 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
104 //@{ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
105 ///Point evaluation |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
106 double operator()(const point& p) const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
107 ///Point evaluation |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
108 double at(const point& p) const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
109 /// Pointwise first derivative |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
110 double d(const point& p, size_t k) const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
111 /// Pointwise second derivatives |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
112 double d2(const point &p, size_t k1, size_t k2) const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
113 //@} |
14
e6d2cd3b6e77
Intermediate whole domain evaluation work
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
13
diff
changeset
|
114 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
115 /** @name Full domain evaluation and derivatives |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
116 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
117 //@{ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
118 ///Full domain evaluation |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
119 interp_values operator()() const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
120 ///Full domain evaluation |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
121 interp_values at() const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
122 /// Full domain first derivative |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
123 interp_values d(size_t k) const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
124 /// Full domain second derivatives |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
125 interp_values d2(size_t k1, size_t k2) const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
126 //@} |
0 | 127 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
128 /** @name Precomputation of RBFs |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
129 * |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
130 * The following functions will precompute upon request all the |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
131 * interpolator's RBFs at all points of the domain. This may speed |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
132 * up some computations at the expense of increasing memory |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
133 * usage. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
134 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
135 //@{ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
136 ///Precompute all the function evaluation of the RBFs. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
137 void precompute_ev(); |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
138 ///Precompute all relevant first derivatives. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
139 void precompute_d1() ; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
140 ///Precompute all relevant second derivatives. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
141 void precompute_d2(); |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
142 //@} |
11
d0076d9b2ef1
Conclude precomputation revision
Jordi Guitérrez Hermoso <jordigh@gmail.com>
parents:
6
diff
changeset
|
143 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
144 /** @name Partial redefinitions |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
145 * |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
146 * These functions allow for partial redefinition of the BVP as |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
147 * equired for the additive Schwartz domain decomposition method, |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
148 * and for other methods. They do not factor a matrix again. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
149 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
150 //@{ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
151 void set_f(const intr_values &f); |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
152 void set_g(const bdry_values &g); |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
153 void set_f(const realfunc &f); |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
154 void set_g(const realfunc &g); |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
155 void set_f(const map<point, double>& f); |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
156 void set_g(const map<point, double>& g); |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
157 //@} |
0 | 158 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
159 /** @name Reinterpolate again |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
160 * |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
161 * As above group of functions, but for purely interpolating |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
162 * interpolators |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
163 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
164 //@{ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
165 void set_bdry_values(const bdry_values& b_new); |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
166 //@} |
17
72412107029b
On the final stretch, implementing the interface in set_bdry_conds
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
16
diff
changeset
|
167 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
168 /** @name Linear arithmetic operators |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
169 * |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
170 * These functions return a new interpolator. They are pointwise |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
171 * linear operations and work by manipulating interpolator |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
172 * coefficients. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
173 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
174 //@{ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
175 /// Needs two operators on the same domain. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
176 interpolator<RBF> operator+(const interpolator<RBF>& u) const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
177 /// Needs two operators on the same domain. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
178 interpolator<RBF> operator-(const interpolator<RBF>& u) const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
179 /// Returns a scaled interpolator. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
180 interpolator<RBF> operator*(double a) const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
181 /// Returns a scaled interpolator. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
182 interpolator<RBF> operator/(double a) const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
183 //@} |
17
72412107029b
On the final stretch, implementing the interface in set_bdry_conds
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
16
diff
changeset
|
184 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
185 /** \brief Provide a unit normals object associated to the |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
186 * interpolator. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
187 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
188 normals get_normals() const; |
0 | 189 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
190 /** \brief This will put into an ostream a kwantix::matrix where |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
191 * the first \f$n-1\f$ columns will be all the points where the |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
192 * interpolator is defined and the \f$n^{th}\f$ column is the |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
193 * values that the interpolator takes on that point. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
194 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
195 void into_os(std::ostream& os) const; |
42
3f8311cbf602
Setup initial class for vtkplot; cleanup interpolator to use C++1x's auto and untabify
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
40
diff
changeset
|
196 |
3f8311cbf602
Setup initial class for vtkplot; cleanup interpolator to use C++1x's auto and untabify
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
40
diff
changeset
|
197 ///Needed in order to plot the data |
3f8311cbf602
Setup initial class for vtkplot; cleanup interpolator to use C++1x's auto and untabify
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
40
diff
changeset
|
198 friend class vtkplot; |
23
acefa48d4b4d
Not compiling, added .hgignore
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
20
diff
changeset
|
199 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
200 private: |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
201 ///Once the matrix is defined, this function inverts it. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
202 void computecoeffs(bool rhs_defined = false); |
0 | 203 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
204 ///Perform the actual interpolation. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
205 void init(shared_ptr<linear_BVP2> bvp); |
0 | 206 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
207 ///If the coefficients change, need to recompute precomputed values |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
208 void recompute_values_vec(); |
20
9cd42f1be76e
w00t, bugs squashed, thing actually works\!
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
18
diff
changeset
|
209 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
210 ///BVP associated to this interpolator |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
211 shared_ptr<linear_BVP2> thebvp; |
0 | 212 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
213 ///Number of interior points. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
214 size_t n; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
215 ///Number of boundary points. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
216 size_t m; |
0 | 217 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
218 ///The matrix to invert. |
54
ac5c22eb647c
Optimise not copying matrices by replacing biggest uses with shared_ptr<matrix>, remove some debug code, use C++0x auto where useful.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
42
diff
changeset
|
219 shared_ptr<matrix> M; |
0 | 220 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
221 ///Is the interpolator ready for use? |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
222 bool initted; |
13
0531194a431d
Preliminary whole domain evaluations
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
12
diff
changeset
|
223 |
23
acefa48d4b4d
Not compiling, added .hgignore
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
20
diff
changeset
|
224 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
225 /** @name Exception builders |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
226 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
227 //@{ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
228 kwantix::badArgument not_initted(int line, string file) const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
229 kwantix::badArgument not_precomputed(int line, string file) const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
230 //@} |
4
9d4fda54a41d
Buggy, must check why interpolator assignment destroys precomputed
Jordi Guitérrez Hermoso <jordigh@gmail.com>
parents:
0
diff
changeset
|
231 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
232 ///Coefficients of the RBFs |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
233 kwantix::vector coeffs; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
234 ///The RBFS |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
235 std::vector<RBF> rbfs; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
236 ///Their hash |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
237 size_t rbfs_hash; |
0 | 238 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
239 ///An RBF hasher |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
240 size_t hash_value(const std::vector<RBF>& rbfs_in); |
18
382e3b8e3f88
Compiles, and runs, but doesn't produce desired output. Must investigate this further.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
17
diff
changeset
|
241 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
242 ///The normals at the domain's boundary |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
243 normals nrmls; |
4
9d4fda54a41d
Buggy, must check why interpolator assignment destroys precomputed
Jordi Guitérrez Hermoso <jordigh@gmail.com>
parents:
0
diff
changeset
|
244 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
245 /** \short Precomputed RBFs |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
246 * |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
247 * For all points on the domain, this stores all the RBFs |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
248 * evaluated at those points, as well as the derivatives on where |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
249 * the RBFs have been evaluated. This is to speed up successive |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
250 * evaluations of the interpolator when the interpolator's domain |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
251 * doesn't change. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
252 * |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
253 * The keys in this map are vectors that represent the multindex |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
254 * for the derivative, where missing trailing entries in the |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
255 * vector represents zeros. Thus, an empty vector represents |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
256 * evaluation instead of derivatives. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
257 */ |
54
ac5c22eb647c
Optimise not copying matrices by replacing biggest uses with shared_ptr<matrix>, remove some debug code, use C++0x auto where useful.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
42
diff
changeset
|
258 mutable map<std::vector<size_t>, |
ac5c22eb647c
Optimise not copying matrices by replacing biggest uses with shared_ptr<matrix>, remove some debug code, use C++0x auto where useful.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
42
diff
changeset
|
259 shared_ptr<matrix> > precomp_rbfs; |
11
d0076d9b2ef1
Conclude precomputation revision
Jordi Guitérrez Hermoso <jordigh@gmail.com>
parents:
6
diff
changeset
|
260 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
261 /** @name Evaluation flags |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
262 *Have the RBFs or their derivatives been precomputed? |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
263 */ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
264 //@{ |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
265 bool ev_precomp; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
266 bool d1_precomp; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
267 bool d2_precomp; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
268 //@} |
4
9d4fda54a41d
Buggy, must check why interpolator assignment destroys precomputed
Jordi Guitérrez Hermoso <jordigh@gmail.com>
parents:
0
diff
changeset
|
269 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
270 /// Precomputed values using precomp_rbfs |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
271 mutable map<std::vector<size_t>, map<point, double> > |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
272 precomp_values; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
273 /// Same, but storing the vectors. |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
274 mutable map<std::vector<size_t>, kwantix::vector > |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
275 precomp_values_vec; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
276 /// Convert vector of values to a map |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
277 map<point, double> valsvec2map(const kwantix::vector& values) const; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
278 }; |
61
b3bf4ac981ec
Update the doxygen documentation
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
58
diff
changeset
|
279 /// \} |
0 | 280 |
16
29a7b95c2805
Essentially all Doxygen docstrings complete.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
15
diff
changeset
|
281 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
282 /// For comfortable syntax |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
283 template <typename RBF> |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
284 interpolator<RBF> operator*(double a, const interpolator<RBF>& u) |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
285 { |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
286 return u*a; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
287 } |
24
ad9e3d28ce9b
Implement op<< for bvp::interpolator
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
23
diff
changeset
|
288 |
40
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
289 /// Stream insertion |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
290 template <typename RBF> |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
291 std::ostream& operator<< (std::ostream& os, const interpolator<RBF>& u) |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
292 { |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
293 u.into_os(os); |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
294 return os; |
eaa99e09607d
Remove indentation due to namespace scope
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
32
diff
changeset
|
295 } |
24
ad9e3d28ce9b
Implement op<< for bvp::interpolator
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
23
diff
changeset
|
296 |
61
b3bf4ac981ec
Update the doxygen documentation
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
58
diff
changeset
|
297 }//namespace kwantix |
b3bf4ac981ec
Update the doxygen documentation
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
58
diff
changeset
|
298 |