moab
moab::Matrix3 Class Reference

#include <Matrix3.hpp>

List of all members.

Public Member Functions

 Matrix3 ()
 Matrix3 (double diagonal)
 Matrix3 (const CartVect &diagonal)
template<typename T >
 Matrix3 (const std::vector< T > &diagonal)
 Matrix3 (double v00, double v01, double v02, double v10, double v11, double v12, double v20, double v21, double v22)
 Matrix3 (const Matrix3 &f)
template<typename Vector >
 Matrix3 (const Vector &row0, const Vector &row1, const Vector &row2)
 Matrix3 (const double *v)
Matrix3operator= (const Matrix3 &m)
Matrix3operator= (const double *v)
double * operator[] (unsigned i)
const double * operator[] (unsigned i) const
double & operator() (unsigned r, unsigned c)
double operator() (unsigned r, unsigned c) const
double & operator() (unsigned i)
double operator() (unsigned i) const
double * array ()
const double * array () const
Matrix3operator+= (const Matrix3 &m)
Matrix3operator-= (const Matrix3 &m)
Matrix3operator*= (double s)
Matrix3operator/= (double s)
Matrix3operator*= (const Matrix3 &m)
double determinant () const
Matrix3 inverse () const
Matrix3 inverse (double i) const
bool positive_definite () const
bool positive_definite (double &det) const
Matrix3 transpose () const
bool invert ()
double subdet (int r, int c) const

Private Attributes

double d [9]

Detailed Description

Definition at line 263 of file Matrix3.hpp.


Constructor & Destructor Documentation

moab::Matrix3::Matrix3 ( ) [inline]

Definition at line 269 of file Matrix3.hpp.

                  {
    for(int i = 0; i < 9; ++i){ d[ i] = 0; }
  }
moab::Matrix3::Matrix3 ( double  diagonal) [inline]

Definition at line 274 of file Matrix3.hpp.

                                   { 
      d[0] = d[4] = d[8] = diagonal;
      d[1] = d[2] = d[3] = 0.0;
      d[5] = d[6] = d[7] = 0.0;
  }
moab::Matrix3::Matrix3 ( const CartVect diagonal) [inline]

Definition at line 279 of file Matrix3.hpp.

                                             { 
      d[0] = diagonal[0];
      d[4] = diagonal[1],
      d[8] = diagonal[2];
      d[1] = d[2] = d[3] = 0.0;
      d[5] = d[6] = d[7] = 0.0;
  }
template<typename T >
moab::Matrix3::Matrix3 ( const std::vector< T > &  diagonal) [inline]

Definition at line 292 of file Matrix3.hpp.

                                                  { 
      d[0] = diagonal[0];
      d[4] = diagonal[1],
      d[8] = diagonal[2];
      d[1] = d[2] = d[3] = 0.0;
      d[5] = d[6] = d[7] = 0.0;
  }
moab::Matrix3::Matrix3 ( double  v00,
double  v01,
double  v02,
double  v10,
double  v11,
double  v12,
double  v20,
double  v21,
double  v22 
) [inline]

Definition at line 300 of file Matrix3.hpp.

                                                    {
    d[0] = v00; d[1] = v01; d[2] = v02;
    d[3] = v10; d[4] = v11; d[5] = v12;
    d[6] = v20; d[7] = v21; d[8] = v22;
}
moab::Matrix3::Matrix3 ( const Matrix3 f) [inline]

Definition at line 309 of file Matrix3.hpp.

                              {
    for(int i = 0; i < 9; ++i) { d[ i] = f.d[ i]; }
  }
template<typename Vector >
moab::Matrix3::Matrix3 ( const Vector &  row0,
const Vector &  row1,
const Vector &  row2 
) [inline]

Definition at line 314 of file Matrix3.hpp.

                                          {
      for(std::size_t i = 0; i < 3; ++i){
    d[ i] = row0[ i];
    d[ i+3]= row1[ i];
    d[ i+6] = row2[ i];
      }
  }
moab::Matrix3::Matrix3 ( const double *  v) [inline]

Definition at line 324 of file Matrix3.hpp.

                                   { 
      d[0] = v[0]; d[1] = v[1]; d[2] = v[2];
      d[3] = v[3]; d[4] = v[4]; d[5] = v[5]; 
      d[6] = v[6]; d[7] = v[7]; d[8] = v[8];
  }

Member Function Documentation

double* moab::Matrix3::array ( ) [inline]

Definition at line 352 of file Matrix3.hpp.

      { return d; }
const double* moab::Matrix3::array ( ) const [inline]

Definition at line 354 of file Matrix3.hpp.

      { return d; }
double moab::Matrix3::determinant ( ) const [inline]

Definition at line 390 of file Matrix3.hpp.

                                   {
    return moab::Matrix::determinant3( *this);
  }
Matrix3 moab::Matrix3::inverse ( ) const [inline]

Definition at line 394 of file Matrix3.hpp.

                                 { 
    const double i = 1.0/determinant();
    return moab::Matrix::inverse( *this, i); 
  }
Matrix3 moab::Matrix3::inverse ( double  i) const [inline]

Definition at line 398 of file Matrix3.hpp.

                                           {
    return moab::Matrix::inverse( *this, i); 
  }
bool moab::Matrix3::invert ( ) [inline]

Definition at line 413 of file Matrix3.hpp.

                       {
    double i = 1.0 / determinant();
    if (!finite(i) || fabs(i) < std::numeric_limits<double>::epsilon())
      return false;
    *this = inverse( i );
    return true;
  }
double& moab::Matrix3::operator() ( unsigned  r,
unsigned  c 
) [inline]

Definition at line 346 of file Matrix3.hpp.

{ return d[3*r+c]; }
double moab::Matrix3::operator() ( unsigned  r,
unsigned  c 
) const [inline]

Definition at line 347 of file Matrix3.hpp.

{ return d[3*r+c]; }
double& moab::Matrix3::operator() ( unsigned  i) [inline]

Definition at line 348 of file Matrix3.hpp.

{ return d[i]; }
double moab::Matrix3::operator() ( unsigned  i) const [inline]

Definition at line 349 of file Matrix3.hpp.

{ return d[i]; }
Matrix3& moab::Matrix3::operator*= ( double  s) [inline]

Definition at line 371 of file Matrix3.hpp.

                                        {
      d[0] *= s; d[1] *= s; d[2] *= s;
      d[3] *= s; d[4] *= s; d[5] *= s;
      d[6] *= s; d[7] *= s; d[8] *= s;
      return *this;
 }
Matrix3& moab::Matrix3::operator*= ( const Matrix3 m) [inline]

Definition at line 385 of file Matrix3.hpp.

                                                {
    (*this) = moab::Matrix::mmult3((*this),m); 
    return *this;
  }
Matrix3& moab::Matrix3::operator+= ( const Matrix3 m) [inline]

Definition at line 357 of file Matrix3.hpp.

                                                {
      d[0] += m.d[0]; d[1] += m.d[1]; d[2] += m.d[2];
      d[3] += m.d[3]; d[4] += m.d[4]; d[5] += m.d[5];
      d[6] += m.d[6]; d[7] += m.d[7]; d[8] += m.d[8];
      return *this;
  }
Matrix3& moab::Matrix3::operator-= ( const Matrix3 m) [inline]

Definition at line 364 of file Matrix3.hpp.

                                                {
      d[0] -= m.d[0]; d[1] -= m.d[1]; d[2] -= m.d[2];
      d[3] -= m.d[3]; d[4] -= m.d[4]; d[5] -= m.d[5];
      d[6] -= m.d[6]; d[7] -= m.d[7]; d[8] -= m.d[8];
      return *this;
  }
Matrix3& moab::Matrix3::operator/= ( double  s) [inline]

Definition at line 378 of file Matrix3.hpp.

                                        {
      d[0] /= s; d[1] /= s; d[2] /= s;
      d[3] /= s; d[4] /= s; d[5] /= s;
      d[6] /= s; d[7] /= s; d[8] /= s;
      return *this;
  }
Matrix3& moab::Matrix3::operator= ( const Matrix3 m) [inline]

Definition at line 330 of file Matrix3.hpp.

                                               {
      d[0] = m.d[0]; d[1] = m.d[1]; d[2] = m.d[2];
      d[3] = m.d[3]; d[4] = m.d[4]; d[5] = m.d[5];
      d[6] = m.d[6]; d[7] = m.d[7]; d[8] = m.d[8];
      return *this;
  }
Matrix3& moab::Matrix3::operator= ( const double *  v) [inline]

Definition at line 337 of file Matrix3.hpp.

                                              { 
      d[0] = v[0]; d[1] = v[1]; d[2] = v[2];
      d[3] = v[3]; d[4] = v[4]; d[5] = v[5]; 
      d[6] = v[6]; d[7] = v[7]; d[8] = v[8];
      return *this;
 }
double* moab::Matrix3::operator[] ( unsigned  i) [inline]

Definition at line 344 of file Matrix3.hpp.

{ return d + 3*i; }
const double* moab::Matrix3::operator[] ( unsigned  i) const [inline]

Definition at line 345 of file Matrix3.hpp.

{ return d + 3*i; }
bool moab::Matrix3::positive_definite ( ) const [inline]

Definition at line 402 of file Matrix3.hpp.

                                       {
    double tmp;
    return positive_definite( tmp);
  }
bool moab::Matrix3::positive_definite ( double &  det) const [inline]

Definition at line 407 of file Matrix3.hpp.

                                                    {
      return moab::Matrix::positive_definite( *this, det);
  }
double moab::Matrix3::subdet ( int  r,
int  c 
) const [inline]

Definition at line 422 of file Matrix3.hpp.

                                            {
    const int r1 = (r+1)%3, r2 = (r+2)%3;
    const int c1 = (c+1)%3, c2 = (c+2)%3;
    assert(r >= 0 && c >= 0);
    if (r < 0 || c < 0) return DBL_MAX;
    return d[3*r1+c1]*d[3*r2+c2] - d[3*r1+c2]*d[3*r2+c1];
  }
Matrix3 moab::Matrix3::transpose ( ) const [inline]

Definition at line 411 of file Matrix3.hpp.

{ return moab::Matrix::transpose( *this); }

Member Data Documentation

double moab::Matrix3::d[9] [private]

Definition at line 265 of file Matrix3.hpp.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines