FEI Version of the Day
fei_MatrixTraits_LinProbMgr.hpp
00001 /*--------------------------------------------------------------------*/
00002 /*    Copyright 2005 Sandia Corporation.                              */
00003 /*    Under the terms of Contract DE-AC04-94AL85000, there is a       */
00004 /*    non-exclusive license for use of this work by or on behalf      */
00005 /*    of the U.S. Government.  Export of this program may require     */
00006 /*    a license from the United States Government.                    */
00007 /*--------------------------------------------------------------------*/
00008 
00009 #ifndef _fei_MatrixTraits_LinProbMgr_hpp_
00010 #define _fei_MatrixTraits_LinProbMgr_hpp_
00011 
00012 //This file defines matrix traits for LinearProblemManager matrix
00013 //representations.
00014 //
00015 
00016 #include <fei_LinearProblemManager.hpp>
00017 
00018 namespace fei {
00019 
00021   template<>
00022   struct MatrixTraits<fei::LinearProblemManager> {
00023 
00025     static const char* typeName()
00026       { return("fei::LinearProblemManager"); }
00027 
00028     static double* getBeginPointer(fei::LinearProblemManager* /*mat*/)
00029       {
00030         return NULL;
00031       }
00032 
00033     static int getOffset(fei::LinearProblemManager* /*mat*/, int /*row*/, int /*col*/)
00034       {
00035         return -1;
00036       }
00037 
00040     static int setValues(fei::LinearProblemManager* mat, double scalar)
00041       {
00042   mat->setMatrixValues(scalar);
00043         return(0);
00044       }
00045 
00049     static int getNumLocalRows(fei::LinearProblemManager* mat, int& numRows)
00050     {
00051       numRows = mat->getLocalNumRows();
00052       return(0);
00053     }
00054 
00057     static int getRowLength(fei::LinearProblemManager* mat, int row, int& length)
00058       {
00059   length = mat->getRowLength(row);
00060         if (length < 0) return(length);
00061         return(0);
00062       }
00063 
00076     static int copyOutRow(fei::LinearProblemManager* mat,
00077           int row, int len, double* coefs, int* indices)
00078       {
00079   return( mat->copyOutMatrixRow(row, len, coefs, indices) );
00080       }
00081 
00084     static int putValuesIn(fei::LinearProblemManager* mat,
00085                            int numRows, const int* rows,
00086                            int numCols, const int* cols,
00087                            const double* const* values,
00088                            bool sum_into)
00089       {
00090         return( mat->insertMatrixValues(numRows, rows,
00091                                         numCols, cols,
00092                                         values, sum_into) );
00093       }
00094 
00098     static int globalAssemble(fei::LinearProblemManager* mat)
00099     {
00100       return( mat->globalAssemble() );
00101     }
00102 
00104     static int matvec(fei::LinearProblemManager* mat,
00105           fei::Vector* x,
00106           fei::Vector* y)
00107     {
00108       return( -1 );
00109     }
00110   };//struct MatrixTraits
00111 }//namespace fei
00112 
00113 #endif // _fei_MatrixTraits_LinProbMgr_hpp_
00114 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends