FEI  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
snl_fei_BlockMatrixTraits.hpp
1 /*--------------------------------------------------------------------*/
2 /* Copyright 2005 Sandia Corporation. */
3 /* Under the terms of Contract DE-AC04-94AL85000, there is a */
4 /* non-exclusive license for use of this work by or on behalf */
5 /* of the U.S. Government. Export of this program may require */
6 /* a license from the United States Government. */
7 /*--------------------------------------------------------------------*/
8 
9 #ifndef _snl_fei_BlockMatrixTraits_hpp_
10 #define _snl_fei_BlockMatrixTraits_hpp_
11 
12 #include <fei_macros.hpp>
13 
14 namespace snl_fei {
21  template<typename T>
22  struct BlockMatrixTraits {
23 
25  static const char* typeName()
26  { static const char name[] = "unsupported"; return(name); }
27 
30  static int putScalar(T* /*mat*/, double /*scalar*/)
31  { return(-1); }
32 
35  static int getRowLength(T* /*mat*/, int /*row*/, int& /*length*/)
36  { return(-1); }
37 
41  static int getPointRowLength(T* /*mat*/, int /*row*/, int& /*length*/)
42  { return(-1); }
43 
67  static int copyOutRow(T* /*mat*/,
68  int /*row*/,
69  int /*numBlkCols*/,
70  int /*rowDim*/,
71  int* /*blkCols*/,
72  int* /*colDims*/,
73  double* /*coefs*/,
74  int /*coefsLen*/,
75  int& /*blkRowLength*/)
76  { return(-1); }
77 
95  static int copyOutPointRow(T* /*mat*/,
96  int /*firstLocalOffset*/,
97  int /*row*/, int /*len*/,
98  double* /*coefs*/, int* /*indices*/,
99  int& /*rowLength*/)
100  { return(-1); }
101 
105  static int sumIn(T* /*mat*/,
106  int /*blockRow*/,
107  int /*rowDim*/,
108  int /*numBlockCols*/,
109  const int* /*blockCols*/,
110  const int* /*colDims*/,
111  int /*LDA*/,
112  const double* /*values*/)
113  { return(-1); }
114 
118  static int copyIn(T* /*mat*/,
119  int /*blockRow*/,
120  int /*rowDim*/,
121  int /*numBlockCols*/,
122  const int* /*blockCols*/,
123  const int* /*colDims*/,
124  int /*LDA*/,
125  const double* /*values*/)
126  { return(-1); }
127 
130  static int sumIn(T* /*mat*/,
131  int /*row*/, int /*rowDim*/,
132  int /*numCols*/, const int* /*cols*/,
133  const int* /*LDAs*/,
134  const int* /*colDims*/,
135  const double* const* /*values*/)
136  { return(-1); }
137 
141  static int copyIn(T* /*mat*/,
142  int /*row*/, int /*rowDim*/,
143  int /*numCols*/, const int* /*cols*/,
144  const int* /*LDAs*/,
145  const int* /*colDims*/,
146  const double* const* /*values*/)
147  { return(-1); }
148 
152  static int globalAssemble(T* /*mat*/)
153  { return(-1); }
154 
155  };//struct BlockMatrixTraits
156 }//namespace snl_fei
157 
158 #endif // _snl_fei_BlockMatrixTraits_hpp_
static int getPointRowLength(T *, int, int &)
static int copyIn(T *, int, int, int, const int *, const int *, int, const double *)
static int copyOutPointRow(T *, int, int, int, double *, int *, int &)
static const char * typeName()
static int getRowLength(T *, int, int &)
static int putScalar(T *, double)
static int copyOutRow(T *, int, int, int, int *, int *, double *, int, int &)
static int sumIn(T *, int, int, int, const int *, const int *, int, const double *)
static int globalAssemble(T *)