Storage.hxx
1 // Copyright (C) 2001-2011 Vivien Mallet
2 // Copyright (C) 2003-2011 Marc DuruflĂ©
3 //
4 // This file is part of the linear-algebra library Seldon,
5 // http://seldon.sourceforge.net/.
6 //
7 // Seldon is free software; you can redistribute it and/or modify it under the
8 // terms of the GNU Lesser General Public License as published by the Free
9 // Software Foundation; either version 2.1 of the License, or (at your option)
10 // any later version.
11 //
12 // Seldon is distributed in the hope that it will be useful, but WITHOUT ANY
13 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
15 // more details.
16 //
17 // You should have received a copy of the GNU Lesser General Public License
18 // along with Seldon. If not, see http://www.gnu.org/licenses/.
19 
20 
21 #ifndef SELDON_FILE_STORAGE_HXX
22 
23 namespace Seldon
24 {
25 
26 
28  // GENERAL MATRICES //
30 
31 
32 #ifndef SWIG
33  class ColMajor
34  {
35  public:
36  static int GetFirst(int i, int j);
37  static int GetSecond(int i, int j);
38  static int GetBeginLoop(int i);
39  static int GetEndLoop(int m, int n, int i);
40  static const bool Sparse = false;
41  };
42 #endif
43 
44 
45  class RowMajor
46  {
47  public:
48  static int GetFirst(int i, int j);
49  static int GetSecond(int i, int j);
50  static int GetBeginLoop(int i);
51  static int GetEndLoop(int m, int n, int i);
52  static const bool Sparse = false;
53  };
54 
55 
56 
58  // VECTORS //
60 
61 
62  class VectFull;
63  class VectSparse;
64  class Collection;
66  class PETScSeq;
67  class PETScPar;
68  class PETScSeqDense;
69  class PETScMPIDense;
70  class PETScMPIAIJ;
71 
72 
74  // SPARSE //
76 
77 
78 #ifndef SWIG
79  class ColSparse
80  {
81  public:
82  static int GetFirst(int i, int j);
83  static int GetSecond(int i, int j);
84  static int GetBeginLoop(int i);
85  static int GetEndLoop(int m, int n, int i);
86  static const bool Sparse = true;
87  };
88 #endif
89 
90 
91  class RowSparse
92  {
93  public:
94  static int GetFirst(int i, int j);
95  static int GetSecond(int i, int j);
96  static int GetBeginLoop(int i);
97  static int GetEndLoop(int m, int n, int i);
98  static const bool Sparse = true;
99  };
100 
101 
102 #ifndef SWIG
104  {
105  public:
106  static int GetFirst(int i, int j);
107  static int GetSecond(int i, int j);
108  static int GetBeginLoop(int i);
109  static int GetEndLoop(int m, int n, int i);
110  static const bool Sparse = true;
111  };
112 
113 
115  {
116  public:
117  static int GetFirst(int i, int j);
118  static int GetSecond(int i, int j);
119  static int GetBeginLoop(int i);
120  static int GetEndLoop(int m, int n, int i);
121  static const bool Sparse = true;
122  };
123 
124  class ArrayRowSparse : public RowSparse
125  {
126  };
127 
128  class ArrayColSparse : public ColSparse
129  {
130  };
131 
133  {
134  };
135 
137  {
138  };
139 
140 
142  // SYMMETRIC //
144 
145 
147  {
148  public:
149  static int GetFirst(int i, int j);
150  static int GetSecond(int i, int j);
151  static int GetBeginLoop(int i);
152  static int GetEndLoop(int m, int n, int i);
153  static const bool Sparse = false;
154  };
155 
156 
158  {
159  public:
160  static int GetFirst(int i, int j);
161  static int GetSecond(int i, int j);
162  static int GetBeginLoop(int i);
163  static int GetEndLoop(int m, int n, int i);
164  static const bool Sparse = false;
165  };
166 
167 
168  class ColSym
169  {
170  public:
171  static int GetFirst(int i, int j);
172  static int GetSecond(int i, int j);
173  static int GetBeginLoop(int i);
174  static int GetEndLoop(int m, int n, int i);
175  static const bool Sparse = false;
176  };
177 
178 
179  class RowSym
180  {
181  public:
182  static int GetFirst(int i, int j);
183  static int GetSecond(int i, int j);
184  static int GetBeginLoop(int i);
185  static int GetEndLoop(int m, int n, int i);
186  static const bool Sparse = false;
187  };
188 
189 
190 
192  // HERMITIAN //
194 
195 
196  class ColHerm
197  {
198  public:
199  static int GetFirst(int i, int j);
200  static int GetSecond(int i, int j);
201  static int GetBeginLoop(int i);
202  static int GetEndLoop(int m, int n, int i);
203  static const bool Sparse = false;
204  };
205 
206 
207  class RowHerm
208  {
209  public:
210  static int GetFirst(int i, int j);
211  static int GetSecond(int i, int j);
212  static int GetBeginLoop(int i);
213  static int GetEndLoop(int m, int n, int i);
214  static const bool Sparse = false;
215  };
216 
217 
219  {
220  public:
221  static int GetFirst(int i, int j);
222  static int GetSecond(int i, int j);
223  static int GetBeginLoop(int i);
224  static int GetEndLoop(int m, int n, int i);
225  static const bool Sparse = false;
226  };
227 
228 
230  {
231  public:
232  static int GetFirst(int i, int j);
233  static int GetSecond(int i, int j);
234  static int GetBeginLoop(int i);
235  static int GetEndLoop(int m, int n, int i);
236  static const bool Sparse = false;
237  };
238 
239 
240 
242  // TRIANGULAR //
244 
245 
247  {
248  public:
249  static int GetFirst(int i, int j);
250  static int GetSecond(int i, int j);
251  static int GetBeginLoop(int i);
252  static int GetEndLoop(int m, int n, int i);
253  static bool UpLo();
254  static const bool Sparse = false;
255  };
256 
257 
259  {
260  public:
261  static int GetFirst(int i, int j);
262  static int GetSecond(int i, int j);
263  static int GetBeginLoop(int i);
264  static int GetEndLoop(int m, int n, int i);
265  static bool UpLo();
266  static const bool Sparse = false;
267  };
268 
269 
271  {
272  public:
273  static int GetFirst(int i, int j);
274  static int GetSecond(int i, int j);
275  static int GetBeginLoop(int i);
276  static int GetEndLoop(int m, int n, int i);
277  static bool UpLo();
278  static const bool Sparse = false;
279  };
280 
281 
283  {
284  public:
285  static int GetFirst(int i, int j);
286  static int GetSecond(int i, int j);
287  static int GetBeginLoop(int i);
288  static int GetEndLoop(int m, int n, int i);
289  static bool UpLo();
290  static const bool Sparse = false;
291  };
292 
293 
295  {
296  public:
297  static int GetFirst(int i, int j);
298  static int GetSecond(int i, int j);
299  static int GetBeginLoop(int i);
300  static int GetEndLoop(int m, int n, int i);
301  static bool UpLo();
302  static const bool Sparse = false;
303  };
304 
305 
307  {
308  public:
309  static int GetFirst(int i, int j);
310  static int GetSecond(int i, int j);
311  static int GetBeginLoop(int i);
312  static int GetEndLoop(int m, int n, int i);
313  static bool UpLo();
314  static const bool Sparse = false;
315  };
316 
317 
319  {
320  public:
321  static int GetFirst(int i, int j);
322  static int GetSecond(int i, int j);
323  static int GetBeginLoop(int i);
324  static int GetEndLoop(int m, int n, int i);
325  static bool UpLo();
326  static const bool Sparse = false;
327  };
328 
329 
331  {
332  public:
333  static int GetFirst(int i, int j);
334  static int GetSecond(int i, int j);
335  static int GetBeginLoop(int i);
336  static int GetEndLoop(int m, int n, int i);
337  static bool UpLo();
338  static const bool Sparse = false;
339  };
340 #endif
341 
342 
344  // SUB-MATRICES //
346 
347 
348  template <class M>
350  {
351  public:
352  static const bool Sparse = false;
353  static int GetFirst(int i, int j);
354  static int GetSecond(int i, int j);
355  static int GetBeginLoop(int i);
356  static int GetEndLoop(int m, int n, int i);
357  };
358 
359 
361  // TYPES //
363 
364 
366  {
367  };
368 
369 
371  // COLLECTION //
373 
374 
376  {
377  };
378 
379 
381  {
382  };
383 
384 
386  {
387  };
388 
389 
391  {
392  };
393 
394 
396  {
397  };
398 
399 
401  {
402  };
403 
404  // complex matrices (in matrix_sparse/complex)
405 
407  {
408  public:
409  static int GetFirst(int i, int j);
410  static int GetSecond(int i, int j);
411  static int GetBeginLoop(int i);
412  static const bool Sparse = true;
413  };
414 
415 
417  {
418  public:
419  static int GetFirst(int i, int j);
420  static int GetSecond(int i, int j);
421  static int GetBeginLoop(int i);
422  static const bool Sparse = true;
423  };
424 
425 
427  {
428  public:
429  static int GetFirst(int i, int j);
430  static int GetSecond(int i, int j);
431  static int GetBeginLoop(int i);
432  static const bool Sparse = true;
433  };
434 
435 
437  {
438  public:
439  static int GetFirst(int i, int j);
440  static int GetSecond(int i, int j);
441  static int GetBeginLoop(int i);
442  static const bool Sparse = true;
443  };
444 
445 
447  {
448  };
449 
451  {
452  };
453 
455  {
456  };
457 
459  {
460  };
461 
462 
463 
464 } // namespace Seldon.
465 
466 #define SELDON_FILE_STORAGE_HXX
467 #endif
Seldon::RowMajor
Definition: Storage.hxx:45
Seldon::ColHerm
Definition: Storage.hxx:196
Seldon::ColMajorCollection
Definition: Storage.hxx:375
Seldon::ArrayColSparse
Definition: Storage.hxx:128
Seldon::PETScSeqDense
Definition: StorageInline.cxx:104
Seldon::FloatDouble
Definition: Storage.hxx:365
Seldon::RowComplexSparse
Definition: Storage.hxx:416
Seldon::SubStorage
Definition: Storage.hxx:349
Seldon::ColSparse
Definition: Storage.hxx:79
Seldon::ArrayColSymComplexSparse
Definition: Storage.hxx:458
Seldon::DenseSparseCollection
Definition: StorageInline.cxx:89
Seldon::ArrayColComplexSparse
Definition: Storage.hxx:454
Seldon::Collection
Definition: StorageInline.cxx:84
Seldon::ColLoTriang
Definition: Storage.hxx:258
Seldon::PETScMPIAIJ
Definition: StorageInline.cxx:114
Seldon::RowSymComplexSparse
Definition: Storage.hxx:436
Seldon::ArrayRowSymSparse
Definition: Storage.hxx:132
Seldon::RowMajorCollection
Definition: Storage.hxx:380
Seldon::ArrayRowComplexSparse
Definition: Storage.hxx:446
Seldon::VectFull
Definition: StorageInline.cxx:74
Seldon::ColUpTriang
Definition: Storage.hxx:246
Seldon::ColComplexSparse
Definition: Storage.hxx:406
Seldon::RowSymPacked
Definition: Storage.hxx:157
Seldon::RowHerm
Definition: Storage.hxx:207
Seldon::ArrayColSymSparse
Definition: Storage.hxx:136
Seldon::ColSymPackedCollection
Definition: Storage.hxx:385
Seldon::RowLoTriang
Definition: Storage.hxx:282
Seldon::ColSymSparse
Definition: Storage.hxx:103
Seldon::RowUpTriangPacked
Definition: Storage.hxx:318
Seldon::ColSymPacked
Definition: Storage.hxx:146
Seldon::ColHermPacked
Definition: Storage.hxx:218
Seldon::ColUpTriangPacked
Definition: Storage.hxx:294
Seldon::RowHermPacked
Definition: Storage.hxx:229
Seldon::PETScSeq
Definition: StorageInline.cxx:94
Seldon::RowUpTriangPackedCollection
Definition: Storage.hxx:400
Seldon::ArrayRowSymComplexSparse
Definition: Storage.hxx:450
Seldon::PETScPar
Definition: StorageInline.cxx:99
Seldon::PETScMPIDense
Definition: StorageInline.cxx:109
Seldon::RowSymSparse
Definition: Storage.hxx:114
Seldon::VectSparse
Definition: StorageInline.cxx:79
Seldon::RowLoTriangPacked
Definition: Storage.hxx:330
Seldon::ArrayRowSparse
Definition: Storage.hxx:124
Seldon::RowSparse
Definition: Storage.hxx:91
Seldon
Seldon namespace.
Definition: Array.cxx:24
Seldon::ColSym
Definition: Storage.hxx:168
Seldon::ColLoTriangPacked
Definition: Storage.hxx:306
Seldon::RowUpTriang
Definition: Storage.hxx:270
Seldon::ColSymComplexSparse
Definition: Storage.hxx:426
Seldon::RowSym
Definition: Storage.hxx:179
Seldon::ColUpTriangPackedCollection
Definition: Storage.hxx:395
Seldon::RowSymPackedCollection
Definition: Storage.hxx:390
Seldon::ColMajor
Definition: Storage.hxx:33