StorageInline.cxx
1 // Copyright (C) 2001-2009 Vivien Mallet
2 //
3 // This file is part of the linear-algebra library Seldon,
4 // http://seldon.sourceforge.net/.
5 //
6 // Seldon is free software; you can redistribute it and/or modify it under the
7 // terms of the GNU Lesser General Public License as published by the Free
8 // Software Foundation; either version 2.1 of the License, or (at your option)
9 // any later version.
10 //
11 // Seldon is distributed in the hope that it will be useful, but WITHOUT ANY
12 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
14 // more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public License
17 // along with Seldon. If not, see http://www.gnu.org/licenses/.
18 
19 
20 #ifndef SELDON_FILE_STORAGE_INLINE_CXX
21 
22 #include "Storage.hxx"
23 
24 namespace Seldon
25 {
26 
27 
29  // GENERAL MATRICES //
31 
32 
33  inline int ColMajor::GetFirst(int i, int j)
34  {
35  return j;
36  }
37  inline int ColMajor::GetSecond(int i, int j)
38  {
39  return i;
40  }
41  inline int ColMajor::GetBeginLoop(int i)
42  {
43  return 0;
44  }
45  inline int ColMajor::GetEndLoop(int m, int n, int i)
46  {
47  return m;
48  }
49 
50 
51  inline int RowMajor::GetFirst(int i, int j)
52  {
53  return i;
54  }
55  inline int RowMajor::GetSecond(int i, int j)
56  {
57  return j;
58  }
59  inline int RowMajor::GetBeginLoop(int i)
60  {
61  return 0;
62  }
63  inline int RowMajor::GetEndLoop(int m, int n, int i)
64  {
65  return n;
66  }
67 
68 
70  // VECTORS //
72 
73 
74  class VectFull
75  {
76  };
77 
78 
79  class VectSparse
80  {
81  };
82 
83 
84  class Collection
85  {
86  };
87 
88 
90  {
91  };
92 
93 
94  class PETScSeq
95  {
96  };
97 
98 
99  class PETScPar
100  {
101  };
102 
103 
105  {
106  };
107 
108 
110  {
111  };
112 
113 
115  {
116  };
117 
118 
120  // SPARSE //
122 
123 
124  inline int ColSparse::GetFirst(int i, int j)
125  {
126  return j;
127  }
128  inline int ColSparse::GetSecond(int i, int j)
129  {
130  return i;
131  }
132  inline int ColSparse::GetBeginLoop(int i)
133  {
134  return 0;
135  }
136  inline int ColSparse::GetEndLoop(int m, int n, int i)
137  {
138  return m;
139  }
140 
141 
142  inline int RowSparse::GetFirst(int i, int j)
143  {
144  return i;
145  }
146  inline int RowSparse::GetSecond(int i, int j)
147  {
148  return j;
149  }
150  inline int RowSparse::GetBeginLoop(int i)
151  {
152  return 0;
153  }
154  inline int RowSparse::GetEndLoop(int m, int n, int i)
155  {
156  return n;
157  }
158 
159 
160  inline int ColSymSparse::GetFirst(int i, int j)
161  {
162  return j;
163  }
164  inline int ColSymSparse::GetSecond(int i, int j)
165  {
166  return i;
167  }
168  inline int ColSymSparse::GetBeginLoop(int i)
169  {
170  return i;
171  }
172  inline int ColSymSparse::GetEndLoop(int m, int n, int i)
173  {
174  return m;
175  }
176 
177 
178  inline int RowSymSparse::GetFirst(int i, int j)
179  {
180  return i;
181  }
182  inline int RowSymSparse::GetSecond(int i, int j)
183  {
184  return j;
185  }
186  inline int RowSymSparse::GetBeginLoop(int i)
187  {
188  return i;
189  }
190  inline int RowSymSparse::GetEndLoop(int m, int n, int i)
191  {
192  return n;
193  }
194 
195 
197  // SYMMETRIC //
199 
200 
201  inline int ColSymPacked::GetFirst(int i, int j)
202  {
203  return j;
204  }
205  inline int ColSymPacked::GetSecond(int i, int j)
206  {
207  return i;
208  }
209  inline int ColSymPacked::GetBeginLoop(int i)
210  {
211  return i;
212  }
213  inline int ColSymPacked::GetEndLoop(int m, int n, int i)
214  {
215  return m;
216  }
217 
218 
219  inline int RowSymPacked::GetFirst(int i, int j)
220  {
221  return i;
222  }
223  inline int RowSymPacked::GetSecond(int i, int j)
224  {
225  return j;
226  }
227  inline int RowSymPacked::GetBeginLoop(int i)
228  {
229  return i;
230  }
231  inline int RowSymPacked::GetEndLoop(int m, int n, int i)
232  {
233  return n;
234  }
235 
236 
237  inline int ColSym::GetFirst(int i, int j)
238  {
239  return j;
240  }
241  inline int ColSym::GetSecond(int i, int j)
242  {
243  return i;
244  }
245  inline int ColSym::GetBeginLoop(int i)
246  {
247  return i;
248  }
249  inline int ColSym::GetEndLoop(int m, int n, int i)
250  {
251  return m;
252  }
253 
254 
255  inline int RowSym::GetFirst(int i, int j)
256  {
257  return i;
258  }
259  inline int RowSym::GetSecond(int i, int j)
260  {
261  return j;
262  }
263  inline int RowSym::GetBeginLoop(int i)
264  {
265  return i;
266  }
267  inline int RowSym::GetEndLoop(int m, int n, int i)
268  {
269  return n;
270  }
271 
272 
274  // HERMITIAN //
276 
277 
278  inline int ColHerm::GetFirst(int i, int j)
279  {
280  return j;
281  }
282  inline int ColHerm::GetSecond(int i, int j)
283  {
284  return i;
285  }
286  inline int ColHerm::GetBeginLoop(int i)
287  {
288  return 0;
289  }
290  inline int ColHerm::GetEndLoop(int m, int n, int i)
291  {
292  return i+1;
293  }
294 
295 
296  inline int RowHerm::GetFirst(int i, int j)
297  {
298  return i;
299  }
300  inline int RowHerm::GetSecond(int i, int j)
301  {
302  return j;
303  }
304  inline int RowHerm::GetBeginLoop(int i)
305  {
306  return i;
307  }
308  inline int RowHerm::GetEndLoop(int m, int n, int i)
309  {
310  return n;
311  }
312 
313 
314  inline int ColHermPacked::GetFirst(int i, int j)
315  {
316  return j;
317  }
318  inline int ColHermPacked::GetSecond(int i, int j)
319  {
320  return i;
321  }
322  inline int ColHermPacked::GetBeginLoop(int i)
323  {
324  return 0;
325  }
326  inline int ColHermPacked::GetEndLoop(int m, int n, int i)
327  {
328  return i+1;
329  }
330 
331 
332  inline int RowHermPacked::GetFirst(int i, int j)
333  {
334  return i;
335  }
336  inline int RowHermPacked::GetSecond(int i, int j)
337  {
338  return j;
339  }
340  inline int RowHermPacked::GetBeginLoop(int i)
341  {
342  return i;
343  }
344  inline int RowHermPacked::GetEndLoop(int m, int n, int i)
345  {
346  return n;
347  }
348 
349 
351  // TRIANGULAR //
353 
354 
355  inline int ColUpTriang::GetFirst(int i, int j)
356  {
357  return j;
358  }
359  inline int ColUpTriang::GetSecond(int i, int j)
360  {
361  return i;
362  }
363  inline int ColUpTriang::GetBeginLoop(int i)
364  {
365  return 0;
366  }
367  inline int ColUpTriang::GetEndLoop(int m, int n, int i)
368  {
369  return i+1;
370  }
371  inline bool ColUpTriang::UpLo()
372  {
373  return true;
374  }
375 
376 
377  inline int ColLoTriang::GetFirst(int i, int j)
378  {
379  return j;
380  }
381  inline int ColLoTriang::GetSecond(int i, int j)
382  {
383  return i;
384  }
385  inline int ColLoTriang::GetBeginLoop(int i)
386  {
387  return i;
388  }
389  inline int ColLoTriang::GetEndLoop(int m, int n, int i)
390  {
391  return m;
392  }
393  inline bool ColLoTriang::UpLo()
394  {
395  return false;
396  }
397 
398 
399  inline int RowUpTriang::GetFirst(int i, int j)
400  {
401  return i;
402  }
403  inline int RowUpTriang::GetSecond(int i, int j)
404  {
405  return j;
406  }
407  inline int RowUpTriang::GetBeginLoop(int i)
408  {
409  return i;
410  }
411  inline int RowUpTriang::GetEndLoop(int m, int n, int i)
412  {
413  return n;
414  }
415  inline bool RowUpTriang::UpLo()
416  {
417  return true;
418  }
419 
420 
421  inline int RowLoTriang::GetFirst(int i, int j)
422  {
423  return i;
424  }
425  inline int RowLoTriang::GetSecond(int i, int j)
426  {
427  return j;
428  }
429  inline int RowLoTriang::GetBeginLoop(int i)
430  {
431  return 0;
432  }
433  inline int RowLoTriang::GetEndLoop(int m, int n, int i)
434  {
435  return i+1;
436  }
437  inline bool RowLoTriang::UpLo()
438  {
439  return false;
440  }
441 
442 
443  inline int ColUpTriangPacked::GetFirst(int i, int j)
444  {
445  return j;
446  }
447  inline int ColUpTriangPacked::GetSecond(int i, int j)
448  {
449  return i;
450  }
451  inline int ColUpTriangPacked::GetBeginLoop(int i)
452  {
453  return 0;
454  }
455  inline int ColUpTriangPacked::GetEndLoop(int m, int n, int i)
456  {
457  return i+1;
458  }
459  inline bool ColUpTriangPacked::UpLo()
460  {
461  return true;
462  }
463 
464 
465  inline int ColLoTriangPacked::GetFirst(int i, int j)
466  {
467  return j;
468  }
469  inline int ColLoTriangPacked::GetSecond(int i, int j)
470  {
471  return i;
472  }
473  inline int ColLoTriangPacked::GetBeginLoop(int i)
474  {
475  return i;
476  }
477  inline int ColLoTriangPacked::GetEndLoop(int m, int n, int i)
478  {
479  return m;
480  }
481  inline bool ColLoTriangPacked::UpLo()
482  {
483  return false;
484  }
485 
486 
487  inline int RowUpTriangPacked::GetFirst(int i, int j)
488  {
489  return i;
490  }
491  inline int RowUpTriangPacked::GetSecond(int i, int j)
492  {
493  return j;
494  }
495  inline int RowUpTriangPacked::GetBeginLoop(int i)
496  {
497  return i;
498  }
499  inline int RowUpTriangPacked::GetEndLoop(int m, int n, int i)
500  {
501  return n;
502  }
503  inline bool RowUpTriangPacked::UpLo()
504  {
505  return true;
506  }
507 
508 
509  inline int RowLoTriangPacked::GetFirst(int i, int j)
510  {
511  return i;
512  }
513  inline int RowLoTriangPacked::GetSecond(int i, int j)
514  {
515  return j;
516  }
517  inline int RowLoTriangPacked::GetBeginLoop(int i)
518  {
519  return 0;
520  }
521  inline int RowLoTriangPacked::GetEndLoop(int m, int n, int i)
522  {
523  return i+1;
524  }
525  inline bool RowLoTriangPacked::UpLo()
526  {
527  return false;
528  }
529 
530 
531  inline int ColComplexSparse::GetFirst(int i, int j)
532  {
533  return j;
534  }
535  inline int ColComplexSparse::GetSecond(int i, int j)
536  {
537  return i;
538  }
539  inline int ColComplexSparse::GetBeginLoop(int i)
540  {
541  return 0;
542  }
543 
544 
545  inline int RowComplexSparse::GetFirst(int i, int j)
546  {
547  return i;
548  }
549  inline int RowComplexSparse::GetSecond(int i, int j)
550  {
551  return j;
552  }
553  inline int RowComplexSparse::GetBeginLoop(int i)
554  {
555  return 0;
556  }
557 
558 
559  inline int ColSymComplexSparse::GetFirst(int i, int j)
560  {
561  return j;
562  }
563  inline int ColSymComplexSparse::GetSecond(int i, int j)
564  {
565  return i;
566  }
567  inline int ColSymComplexSparse::GetBeginLoop(int i)
568  {
569  return i;
570  }
571 
572 
573  inline int RowSymComplexSparse::GetFirst(int i, int j)
574  {
575  return i;
576  }
577  inline int RowSymComplexSparse::GetSecond(int i, int j)
578  {
579  return j;
580  }
581  inline int RowSymComplexSparse::GetBeginLoop(int i)
582  {
583  return i;
584  }
585 
586 } // namespace Seldon.
587 
588 #define SELDON_FILE_STORAGE_INLINE_CXX
589 #endif
Seldon::PETScSeqDense
Definition: StorageInline.cxx:104
Seldon::DenseSparseCollection
Definition: StorageInline.cxx:89
Seldon::Collection
Definition: StorageInline.cxx:84
Seldon::PETScMPIAIJ
Definition: StorageInline.cxx:114
Seldon::VectFull
Definition: StorageInline.cxx:74
Seldon::PETScSeq
Definition: StorageInline.cxx:94
Seldon::PETScPar
Definition: StorageInline.cxx:99
Seldon::PETScMPIDense
Definition: StorageInline.cxx:109
Seldon::VectSparse
Definition: StorageInline.cxx:79
Seldon
Seldon namespace.
Definition: Array.cxx:24