Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

ot::fem::feMatrix< T > Class Template Reference

#include <feMatrix.h>

Inheritance diagram for ot::fem::feMatrix< T >:

ot::fem::feMat List of all members.

Public Types

enum  exhaustiveElemType {
  ET_N = 0, ET_Y = 2, ET_X = 1, ET_XY = 3,
  ET_Z = 8, ET_ZY = 10, ET_ZX = 9, ET_ZXY = 11,
  ET_XY_XY = 7, ET_XY_ZXY = 15, ET_YZ_ZY = 42, ET_YZ_ZXY = 43,
  ET_YZ_XY_ZXY = 47, ET_ZX_ZX = 25, ET_ZX_ZXY = 27, ET_ZX_XY_ZXY = 31,
  ET_ZX_YZ_ZXY = 59, ET_ZX_YZ_XY_ZXY = 63
}
enum  stdElemType {
  ST_0, ST_1, ST_2, ST_3,
  ST_4, ST_5, ST_6, ST_7
}

Public Member Functions

PetscErrorCode alignElementAndVertices (ot::DA *da, stdElemType &sType, unsigned int *indices)
T & asLeaf ()
 Allows static polymorphism access to the derived class. Using the Barton Nackman trick.
bool ElementalMatGetDiagonal (unsigned int idx, PetscScalar *diag, double scale)
bool ElementalMatGetDiagonal (int i, int j, int k, PetscScalar ***diag, double scale)
bool ElementalMatVec (unsigned int idx, PetscScalar *in, PetscScalar *out, double scale)
 The elemental matrix-vector multiplication routine that is used by matrix-free methods.
bool ElementalMatVec (int i, int j, int k, PetscScalar ***in, PetscScalar ***out, double scale)
 The elemental matrix-vector multiplication routine that is used by matrix-free methods.
 feMatrix (daType da)
 feMatrix ()
unsigned int getDof ()
timeInfogetTimeInfo ()
void initOctLut ()
bool initStencils ()
PetscErrorCode mapVtxAndFlagsToOrientation (int childNum, unsigned int *indices, unsigned char &mask)
virtual bool MatGetDiagonal (Vec _diag, double scale=1.0)
virtual bool MatVec (Vec _in, Vec _out, double scale=1.0)
 The matrix-vector multiplication routine that is used by matrix-free methods.
bool postMatVec ()
bool preMatVec ()
PetscErrorCode reOrderIndices (unsigned char eType, unsigned int *indices)
void setDof (unsigned int dof)
void setName (std::string name)
void setStencil (void *stencil)
void setTimeInfo (timeInfo *t)
 ~feMatrix ()

Protected Attributes

void * m_stencil
std::string m_strMatrixType
timeInfom_time
unsigned char ** m_ucpLut
unsigned int m_uiDof

template<typename T>
class ot::fem::feMatrix< T >


Member Enumeration Documentation

template<typename T>
enum ot::fem::feMatrix::exhaustiveElemType
 

Enumeration values:
ET_N 
ET_Y 
ET_X 
ET_XY 
ET_Z 
ET_ZY 
ET_ZX 
ET_ZXY 
ET_XY_XY 
ET_XY_ZXY 
ET_YZ_ZY 
ET_YZ_ZXY 
ET_YZ_XY_ZXY 
ET_ZX_ZX 
ET_ZX_ZXY 
ET_ZX_XY_ZXY 
ET_ZX_YZ_ZXY 
ET_ZX_YZ_XY_ZXY 

Definition at line 19 of file feMatrix.h.

template<typename T>
enum ot::fem::feMatrix::stdElemType
 

Enumeration values:
ST_0 
ST_1 
ST_2 
ST_3 
ST_4 
ST_5 
ST_6 
ST_7 

Definition at line 15 of file feMatrix.h.


Constructor & Destructor Documentation

template<typename T>
ot::fem::feMatrix< T >::feMatrix  ) 
 

Definition at line 162 of file feMatrix.h.

template<typename T>
ot::fem::feMatrix< T >::feMatrix daType  da  ) 
 

Definition at line 175 of file feMatrix.h.

template<typename T>
ot::fem::feMatrix< T >::~feMatrix  ) 
 

Definition at line 217 of file feMatrix.h.


Member Function Documentation

template<typename T>
PetscErrorCode ot::fem::feMatrix< T >::alignElementAndVertices ot::DA da,
stdElemType sType,
unsigned int *  indices
[inline]
 

Definition at line 470 of file feMatrix.h.

template<typename T>
T& ot::fem::feMatrix< T >::asLeaf  )  [inline]
 

Allows static polymorphism access to the derived class. Using the Barton Nackman trick.

Definition at line 117 of file feMatrix.h.

template<typename T>
bool ot::fem::feMatrix< T >::ElementalMatGetDiagonal unsigned int  idx,
PetscScalar *  diag,
double  scale
[inline]
 

Reimplemented in massMatrix, and stiffnessMatrix.

Definition at line 106 of file feMatrix.h.

template<typename T>
bool ot::fem::feMatrix< T >::ElementalMatGetDiagonal int  i,
int  j,
int  k,
PetscScalar ***  diag,
double  scale
[inline]
 

Reimplemented in massMatrix, and stiffnessMatrix.

Definition at line 85 of file feMatrix.h.

template<typename T>
bool ot::fem::feMatrix< T >::ElementalMatVec unsigned int  idx,
PetscScalar *  in,
PetscScalar *  out,
double  scale
[inline]
 

The elemental matrix-vector multiplication routine that is used by matrix-free methods.

Parameters:
_in PETSc Vec which is the input vector with whom the product is to be calculated.
_out PETSc Vec, the output of M*_in
Returns:
bool true if successful, false otherwise.
Todo:
Might have to change _in and _out to std. C arrays for speed.
The implementation for this function shall be in derived classes, based on the problem formulation. Look at MassMatrix and StiffnessMatrix for standard implementations.

Reimplemented in massMatrix, and stiffnessMatrix.

Definition at line 102 of file feMatrix.h.

template<typename T>
bool ot::fem::feMatrix< T >::ElementalMatVec int  i,
int  j,
int  k,
PetscScalar ***  in,
PetscScalar ***  out,
double  scale
[inline]
 

The elemental matrix-vector multiplication routine that is used by matrix-free methods.

Parameters:
_in PETSc Vec which is the input vector with whom the product is to be calculated.
_out PETSc Vec, the output of M*_in
Returns:
bool true if successful, false otherwise.
Todo:
Might have to change _in and _out to std. C arrays for speed.
The implementation for this function shall be in derived classes, based on the problem formulation. Look at MassMatrix and StiffnessMatrix for standard implementations.

Reimplemented in massMatrix, and stiffnessMatrix.

Definition at line 81 of file feMatrix.h.

template<typename T>
unsigned int ot::fem::feMatrix< T >::getDof  )  [inline]
 

Definition at line 132 of file feMatrix.h.

template<typename T>
timeInfo* ot::fem::feMatrix< T >::getTimeInfo  )  [inline]
 

Definition at line 135 of file feMatrix.h.

template<typename T>
void ot::fem::feMatrix< T >::initOctLut  ) 
 

Definition at line 192 of file feMatrix.h.

template<typename T>
bool ot::fem::feMatrix< T >::initStencils  )  [inline]
 

Reimplemented in massMatrix, and stiffnessMatrix.

Definition at line 119 of file feMatrix.h.

template<typename T>
PetscErrorCode ot::fem::feMatrix< T >::mapVtxAndFlagsToOrientation int  childNum,
unsigned int *  indices,
unsigned char &  mask
[inline]
 

Definition at line 500 of file feMatrix.h.

template<typename T>
bool ot::fem::feMatrix< T >::MatGetDiagonal Vec  _diag,
double  scale = 1.0
[virtual]
 

Implements ot::fem::feMat.

Definition at line 224 of file feMatrix.h.

template<typename T>
bool ot::fem::feMatrix< T >::MatVec Vec  _in,
Vec  _out,
double  scale = 1.0
[virtual]
 

The matrix-vector multiplication routine that is used by matrix-free methods.

Parameters:
_in PETSc Vec which is the input vector with whom the product is to be calculated.
_out PETSc Vec, the output of M*_in
Returns:
bool true if successful, false otherwise.
The matrix-vector multiplication routine that is used by matrix-free methods. The product is directly calculated from the elemental matrices, which are computed by the ElementalMatVec() function. Use the Assemble() function for matrix based methods.

Implements ot::fem::feMat.

Definition at line 340 of file feMatrix.h.

Referenced by main().

template<typename T>
bool ot::fem::feMatrix< T >::postMatVec  )  [inline]
 

Reimplemented in massMatrix, and stiffnessMatrix.

Definition at line 127 of file feMatrix.h.

template<typename T>
bool ot::fem::feMatrix< T >::preMatVec  )  [inline]
 

Reimplemented in massMatrix, and stiffnessMatrix.

Definition at line 123 of file feMatrix.h.

template<typename T>
PetscErrorCode ot::fem::feMatrix< T >::reOrderIndices unsigned char  eType,
unsigned int *  indices
[inline]
 

Definition at line 519 of file feMatrix.h.

template<typename T>
void ot::fem::feMatrix< T >::setDof unsigned int  dof  )  [inline]
 

Definition at line 131 of file feMatrix.h.

Referenced by main().

template<typename T>
void ot::fem::feMatrix< T >::setName std::string  name  ) 
 

template<typename T>
void ot::fem::feMatrix< T >::setStencil void *  stencil  ) 
 

template<typename T>
void ot::fem::feMatrix< T >::setTimeInfo timeInfo t  )  [inline]
 

Definition at line 134 of file feMatrix.h.


Member Data Documentation

template<typename T>
void* ot::fem::feMatrix< T >::m_stencil [protected]
 

Definition at line 148 of file feMatrix.h.

template<typename T>
std::string ot::fem::feMatrix< T >::m_strMatrixType [protected]
 

Definition at line 150 of file feMatrix.h.

template<typename T>
timeInfo* ot::fem::feMatrix< T >::m_time [protected]
 

Definition at line 152 of file feMatrix.h.

template<typename T>
unsigned char** ot::fem::feMatrix< T >::m_ucpLut [protected]
 

Definition at line 157 of file feMatrix.h.

template<typename T>
unsigned int ot::fem::feMatrix< T >::m_uiDof [protected]
 

Definition at line 154 of file feMatrix.h.


The documentation for this class was generated from the following file:
Generated on Tue Mar 24 16:14:25 2009 for DENDRO by  doxygen 1.3.9.1