share/Storage.hxx

00001 // Copyright (C) 2001-2009 Vivien Mallet
00002 // Copyright (C) 2003-2009 Marc Duruflé
00003 //
00004 // This file is part of the linear-algebra library Seldon,
00005 // http://seldon.sourceforge.net/.
00006 //
00007 // Seldon is free software; you can redistribute it and/or modify it under the
00008 // terms of the GNU Lesser General Public License as published by the Free
00009 // Software Foundation; either version 2.1 of the License, or (at your option)
00010 // any later version.
00011 //
00012 // Seldon is distributed in the hope that it will be useful, but WITHOUT ANY
00013 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
00014 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
00015 // more details.
00016 //
00017 // You should have received a copy of the GNU Lesser General Public License
00018 // along with Seldon. If not, see http://www.gnu.org/licenses/.
00019 
00020 
00021 #ifndef SELDON_FILE_STORAGE_HXX
00022 
00023 namespace Seldon
00024 {
00025 
00026 
00028   // GENERAL MATRICES //
00030 
00031 
00032 #ifndef SWIG
00033   class ColMajor
00034   {
00035   public:
00036     static int GetFirst(int i, int j);
00037     static int GetSecond(int i, int j);
00038   };
00039 #endif
00040 
00041 
00042   class RowMajor
00043   {
00044   public:
00045     static int GetFirst(int i, int j);
00046     static int GetSecond(int i, int j);
00047   };
00048 
00049 
00050 
00052   // VECTORS //
00054 
00055 
00056   class VectFull;
00057   class VectSparse;
00058   class Collection;
00059   class DenseSparseCollection;
00060   class PETScSeq;
00061   class PETScPar;
00062   class PETScSeqDense;
00063   class PETScMPIDense;
00064   class PETScMPIAIJ;
00065 
00066 
00068   // SPARSE //
00070 
00071 
00072 #ifndef SWIG
00073   class ColSparse
00074   {
00075   public:
00076     static int GetFirst(int i, int j);
00077     static int GetSecond(int i, int j);
00078   };
00079 #endif
00080 
00081 
00082   class RowSparse
00083   {
00084   public:
00085     static int GetFirst(int i, int j);
00086     static int GetSecond(int i, int j);
00087   };
00088 
00089 
00090 #ifndef SWIG
00091   class ColComplexSparse
00092   {
00093   public:
00094     static int GetFirst(int i, int j);
00095     static int GetSecond(int i, int j);
00096   };
00097 
00098 
00099   class RowComplexSparse
00100   {
00101   public:
00102     static int GetFirst(int i, int j);
00103     static int GetSecond(int i, int j);
00104   };
00105 
00106 
00107   class ColSymSparse
00108   {
00109   public:
00110     static int GetFirst(int i, int j);
00111     static int GetSecond(int i, int j);
00112   };
00113 
00114 
00115   class RowSymSparse
00116   {
00117   public:
00118     static int GetFirst(int i, int j);
00119     static int GetSecond(int i, int j);
00120   };
00121 
00122 
00123   class ColSymComplexSparse
00124   {
00125   public:
00126     static int GetFirst(int i, int j);
00127     static int GetSecond(int i, int j);
00128   };
00129 
00130 
00131   class RowSymComplexSparse
00132   {
00133   public:
00134     static int GetFirst(int i, int j);
00135     static int GetSecond(int i, int j);
00136   };
00137 
00138   class ArrayRowSparse : public RowSparse
00139   {
00140   };
00141 
00142   class ArrayColSparse : public ColSparse
00143   {
00144   };
00145 
00146   class ArrayRowSymSparse : public RowSymSparse
00147   {
00148   };
00149 
00150   class ArrayColSymSparse : public ColSymSparse
00151   {
00152   };
00153 
00154   class ArrayRowComplexSparse : public RowComplexSparse
00155   {
00156   };
00157 
00158   class ArrayRowSymComplexSparse : public RowSymComplexSparse
00159   {
00160   };
00161 
00162   class ArrayColComplexSparse : public ColComplexSparse
00163   {
00164   };
00165 
00166   class ArrayColSymComplexSparse : public ColSymComplexSparse
00167   {
00168   };
00169 
00170 
00172   // SYMMETRIC //
00174 
00175 
00176   class ColSymPacked
00177   {
00178   public:
00179     static int GetFirst(int i, int j);
00180     static int GetSecond(int i, int j);
00181   };
00182 
00183 
00184   class RowSymPacked
00185   {
00186   public:
00187     static int GetFirst(int i, int j);
00188     static int GetSecond(int i, int j);
00189   };
00190 
00191 
00192   class ColSym
00193   {
00194   public:
00195     static int GetFirst(int i, int j);
00196     static int GetSecond(int i, int j);
00197   };
00198 
00199 
00200   class RowSym
00201   {
00202   public:
00203     static int GetFirst(int i, int j);
00204     static int GetSecond(int i, int j);
00205   };
00206 
00207 
00208 
00210   // HERMITIAN //
00212 
00213 
00214   class ColHerm
00215   {
00216   public:
00217     static int GetFirst(int i, int j);
00218     static int GetSecond(int i, int j);
00219   };
00220 
00221 
00222   class RowHerm
00223   {
00224   public:
00225     static int GetFirst(int i, int j);
00226     static int GetSecond(int i, int j);
00227   };
00228 
00229 
00230   class ColHermPacked
00231   {
00232   public:
00233     static int GetFirst(int i, int j);
00234     static int GetSecond(int i, int j);
00235   };
00236 
00237 
00238   class RowHermPacked
00239   {
00240   public:
00241     static int GetFirst(int i, int j);
00242     static int GetSecond(int i, int j);
00243   };
00244 
00245 
00246 
00248   // TRIANGULAR //
00250 
00251 
00252   class ColUpTriang
00253   {
00254   public:
00255     static int GetFirst(int i, int j);
00256     static int GetSecond(int i, int j);
00257     static bool UpLo();
00258   };
00259 
00260 
00261   class ColLoTriang
00262   {
00263   public:
00264     static int GetFirst(int i, int j);
00265     static int GetSecond(int i, int j);
00266     static bool UpLo();
00267   };
00268 
00269 
00270   class RowUpTriang
00271   {
00272   public:
00273     static int GetFirst(int i, int j);
00274     static int GetSecond(int i, int j);
00275     static bool UpLo();
00276   };
00277 
00278 
00279   class RowLoTriang
00280   {
00281   public:
00282     static int GetFirst(int i, int j);
00283     static int GetSecond(int i, int j);
00284     static bool UpLo();
00285   };
00286 
00287 
00288   class ColUpTriangPacked
00289   {
00290   public:
00291     static int GetFirst(int i, int j);
00292     static int GetSecond(int i, int j);
00293     static bool UpLo();
00294   };
00295 
00296 
00297   class ColLoTriangPacked
00298   {
00299   public:
00300     static int GetFirst(int i, int j);
00301     static int GetSecond(int i, int j);
00302     static bool UpLo();
00303   };
00304 
00305 
00306   class RowUpTriangPacked
00307   {
00308   public:
00309     static int GetFirst(int i, int j);
00310     static int GetSecond(int i, int j);
00311     static bool UpLo();
00312   };
00313 
00314 
00315   class RowLoTriangPacked
00316   {
00317   public:
00318     static int GetFirst(int i, int j);
00319     static int GetSecond(int i, int j);
00320     static bool UpLo();
00321   };
00322 #endif
00323 
00324 
00326   // SUB-MATRICES //
00328 
00329 
00330   template <class M>
00331   class SubStorage
00332   {
00333   };
00334 
00335 
00337   // TYPES //
00339 
00340 
00341   class FloatDouble
00342   {
00343   };
00344 
00345 
00347   // COLLECTION //
00349 
00350 
00351   class ColMajorCollection
00352   {
00353   };
00354 
00355 
00356   class RowMajorCollection
00357   {
00358   };
00359 
00360 
00361   class ColSymPackedCollection
00362   {
00363   };
00364 
00365 
00366   class RowSymPackedCollection
00367   {
00368   };
00369 
00370 
00371   class ColUpTriangPackedCollection
00372   {
00373   };
00374 
00375 
00376   class RowUpTriangPackedCollection
00377   {
00378   };
00379 
00380 
00381 } // namespace Seldon.
00382 
00383 #define SELDON_FILE_STORAGE_HXX
00384 #endif