88#include < limits>
99#include < vector>
1010
11- using namespace std ;
11+ #include < boost/numeric/ublas/matrix.hpp>
12+
13+ using boost::numeric::ublas::matrix;
14+ using std::vector;
1215
1316namespace pfasst {
1417
1518 typedef unsigned int uint;
1619
17- template <typename T>
18- class matrix : public vector <T> {
19- public:
20- unsigned int n, m;
21- matrix () { }
22- matrix (unsigned int n, unsigned int m) {
23- zeros (n, m);
24- }
25- void zeros (unsigned int n, unsigned int m) {
26- this ->n = n; this ->m = m;
27- this ->resize (n*m);
28- fill (this ->begin (), this ->end (), 0.0 );
29- }
30- T& operator ()(unsigned int i, unsigned int j) {
31- return (*this )[i*m+j];
32- }
33- };
34-
3520 template <typename coeffT>
3621 class polynomial {
3722 vector<coeffT> c;
@@ -156,23 +141,23 @@ namespace pfasst {
156141
157142 // #define pi 3.1415926535897932384626433832795028841971693993751
158143
159- template <typename nodeT >
160- vector<nodeT > compute_nodes (int nnodes, string qtype)
144+ template <typename time >
145+ vector<time > compute_nodes (int nnodes, string qtype)
161146 {
162- vector<nodeT > nodes (nnodes);
147+ vector<time > nodes (nnodes);
163148
164149 if (qtype == " gauss-legendre" ) {
165- auto roots = polynomial<nodeT >::legendre (nnodes).roots ();
150+ auto roots = polynomial<time >::legendre (nnodes).roots ();
166151 for (int j=0 ; j<nnodes; j++)
167152 nodes[j] = 0.5 * (1.0 + roots[j]);
168153 } else if (qtype == " gauss-lobatto" ) {
169- auto roots = polynomial<nodeT >::legendre (nnodes-1 ).differentiate ().roots ();
154+ auto roots = polynomial<time >::legendre (nnodes-1 ).differentiate ().roots ();
170155 for (int j=0 ; j<nnodes-2 ; j++)
171156 nodes[j+1 ] = 0.5 * (1.0 + roots[j]);
172157 nodes[0 ] = 0.0 ; nodes[nnodes-1 ] = 1.0 ;
173158 } else if (qtype == " gauss-radau" ) {
174- auto l = polynomial<nodeT >::legendre (nnodes);
175- auto lm1 = polynomial<nodeT >::legendre (nnodes-1 );
159+ auto l = polynomial<time >::legendre (nnodes);
160+ auto lm1 = polynomial<time >::legendre (nnodes-1 );
176161 for (int i=0 ; i<nnodes; i++)
177162 l[i] += lm1[i];
178163 auto roots = l.roots ();
@@ -184,18 +169,18 @@ namespace pfasst {
184169 return nodes;
185170 }
186171
187- template <typename nodeT >
188- matrix<nodeT > compute_quadrature (vector<nodeT > dst, vector<nodeT > src, char type)
172+ template <typename time >
173+ matrix<time > compute_quadrature (vector<time > dst, vector<time > src, char type)
189174 {
190175 const int ndst = dst.size ();
191176 const int nsrc = src.size ();
192177
193- matrix<nodeT > mat (ndst-1 , nsrc);
178+ matrix<time > mat (ndst-1 , nsrc);
194179
195180 // /* for (int n=0; n<(ndst-1)*nsrc; n++) */
196181 // /* smat[n] = 0.0; */
197182
198- polynomial<nodeT > p (nsrc+1 ), p1 (nsrc+1 );
183+ polynomial<time > p (nsrc+1 ), p1 (nsrc+1 );
199184
200185 for (int i=0 ; i<nsrc; i++) {
201186 // if ((flags[i] & SDC_NODE_PROPER) == 0) continue;
@@ -216,7 +201,7 @@ namespace pfasst {
216201 auto den = p.evaluate (src[i]);
217202 auto P = p.integrate ();
218203 for (int j=1 ; j<ndst; j++) {
219- nodeT q = 0.0 ;
204+ time q = 0.0 ;
220205 if (type == ' s' )
221206 q = P.evaluate (dst[j]) - P.evaluate (dst[j-1 ]);
222207 else
0 commit comments