OFELI's Logo

An Object Oriented Finite Element Library

LocalMatrix< T_, NR_, NC_ > Class Template Reference

Handles small size matrices like element matrices, with a priori known size. More...

#include <LocalMatrix.h>

Public Member Functions

 LocalMatrix ()
 Default constructor. More...
 
 LocalMatrix (const LocalMatrix< T_, NR_, NC_ > &m)
 Copy constructor.
 
 LocalMatrix (Element *el, const SpMatrix< T_ > &a)
 Constructor of a local matrix associated to element from a SpMatrix. More...
 
 LocalMatrix (Element *el, const SkMatrix< T_ > &a)
 Constructor of a local matrix associated to element from a SkMatrix. More...
 
 LocalMatrix (Element *el, const SkSMatrix< T_ > &a)
 Constructor of a local matrix associated to element from a SkSMatrix. More...
 
 ~LocalMatrix ()
 Destructor.
 
T_ & operator() (size_t i, size_t j)
 Operator () (Non constant version) More...
 
T_ operator() (size_t i, size_t j) const
 Operator () (Constant version) More...
 
void Localize (Element *el, const SpMatrix< T_ > &a)
 Initialize matrix as element matrix from global SpMatrix. More...
 
void Localize (Element *el, const SkMatrix< T_ > &a)
 Initialize matrix as element matrix from global SkMatrix. More...
 
void Localize (Element *el, const SkSMatrix< T_ > &a)
 Initialize matrix as element matrix from global SkSMatrix. More...
 
LocalMatrix< T_, NR_, NC_ > & operator= (const LocalMatrix< T_, NR_, NC_ > &m)
 Operator = More...
 
LocalMatrix< T_, NR_, NC_ > & operator= (const T_ &x)
 Operator = More...
 
LocalMatrix< T_, NR_, NC_ > & operator+= (const LocalMatrix< T_, NR_, NC_ > &m)
 Operator += More...
 
LocalMatrix< T_, NR_, NC_ > & operator-= (const LocalMatrix< T_, NR_, NC_ > &m)
 Operator -= More...
 
LocalVect< T_, NR_ > operator* (LocalVect< T_, NC_ > &x)
 Operator * More...
 
LocalMatrix< T_, NR_, NC_ > & operator+= (const T_ &x)
 Operator += More...
 
LocalMatrix< T_, NR_, NC_ > & operator-= (const T_ &x)
 Operator -= More...
 
LocalMatrix< T_, NR_, NC_ > & operator*= (const T_ &x)
 Operator *= More...
 
LocalMatrix< T_, NR_, NC_ > & operator/= (const T_ &x)
 Operator /= More...
 
void MultAdd (const LocalVect< T_, NC_ > &x, LocalVect< T_, NR_ > &y)
 Multiply matrix by vector and add result to vector. More...
 
void MultAddScal (const T_ &a, const LocalVect< T_, NC_ > &x, LocalVect< T_, NR_ > &y)
 Multiply matrix by scaled vector and add result to vector. More...
 
void Mult (const LocalVect< T_, NC_ > &x, LocalVect< T_, NR_ > &y)
 Multiply matrix by vector. More...
 
void Symmetrize ()
 Symmetrize matrix. More...
 
int Factor ()
 Factorize matrix. More...
 
int solve (LocalVect< T_, NR_ > &b)
 Forward and backsubstitute to solve a linear system. More...
 
int FactorAndSolve (LocalVect< T_, NR_ > &b)
 Factorize matrix and solve linear system. More...
 
void Invert (LocalMatrix< T_, NR_, NC_ > &A)
 Calculate inverse of matrix. More...
 
T_ getInnerProduct (const LocalVect< T_, NC_ > &x, const LocalVect< T_, NR_ > &y)
 Calculate inner product witrh respect to matrix. More...
 
T_ * get ()
 Return pointer to matrix as a C-array.
 

Detailed Description

template<class T_, size_t NR_, size_t NC_>
class OFELI::LocalMatrix< T_, NR_, NC_ >

Handles small size matrices like element matrices, with a priori known size.

The template class LocalMatrix treats small size matrices. Typically, this class is recommended to store element and side arrays.
Internally, no dynamic storage is used.

Template Parameters
T_Data type (double, float, complex<double>, ...)
NR_number of rows of matrix
NC_number of columns of matrix
Author
Rachid Touzani

Constructor & Destructor Documentation

◆ LocalMatrix() [1/4]

Default constructor.

Constructs a matrix with 0 rows and 0 columns

◆ LocalMatrix() [2/4]

LocalMatrix ( Element el,
const SpMatrix< T_ > &  a 
)

Constructor of a local matrix associated to element from a SpMatrix.

Parameters
[in]elPointer to Element
[in]aGlobal matrix as instance of class SpMatrix.

◆ LocalMatrix() [3/4]

LocalMatrix ( Element el,
const SkMatrix< T_ > &  a 
)

Constructor of a local matrix associated to element from a SkMatrix.

Parameters
[in]elPointer to Element
[in]aGlobal matrix as instance of class SkMatrix.

◆ LocalMatrix() [4/4]

LocalMatrix ( Element el,
const SkSMatrix< T_ > &  a 
)

Constructor of a local matrix associated to element from a SkSMatrix.

Parameters
[in]elPointer to Element
[in]aGlobal matrix as instance of class SkSMatrix.

Member Function Documentation

◆ Factor()

int Factor ( )

Factorize matrix.

Performs a LU factorization.

Returns
  • 0: Factorization has ended normally,
  • n: n-th pivot was zero.

◆ FactorAndSolve()

int FactorAndSolve ( LocalVect< T_, NR_ > &  b)

Factorize matrix and solve linear system.

Parameters
[in,out]bRight-hand side in input and solution vector in output.
Returns
0 if solution was performed normally. n if n-th pivot is zero. This function simply calls Factor() then Solve(b).

◆ getInnerProduct()

T_ getInnerProduct ( const LocalVect< T_, NC_ > &  x,
const LocalVect< T_, NR_ > &  y 
)

Calculate inner product witrh respect to matrix.

Returns the product xTAy

Parameters
[in]xLeft vector
[in]yRight vector
Returns
Resulting product

◆ Invert()

void Invert ( LocalMatrix< T_, NR_, NC_ > &  A)

Calculate inverse of matrix.

Parameters
[out]AInverse of matrix

◆ Localize() [1/3]

void Localize ( Element el,
const SkMatrix< T_ > &  a 
)

Initialize matrix as element matrix from global SkMatrix.

Parameters
[in]elPointer to Element
[in]aGlobal matrix as instance of class SkMatrix. This function is called by its corresponding constructor.

◆ Localize() [2/3]

void Localize ( Element el,
const SkSMatrix< T_ > &  a 
)

Initialize matrix as element matrix from global SkSMatrix.

Parameters
[in]elPointer to Element
[in]aGlobal matrix as instance of class SkSMatrix. This function is called by its corresponding constructor.

◆ Localize() [3/3]

void Localize ( Element el,
const SpMatrix< T_ > &  a 
)

Initialize matrix as element matrix from global SpMatrix.

Parameters
[in]elPointer to Element
[in]aGlobal matrix as instance of class SpMatrix. This function is called by its corresponding constructor.

◆ Mult()

void Mult ( const LocalVect< T_, NC_ > &  x,
LocalVect< T_, NR_ > &  y 
)

Multiply matrix by vector.

Parameters
[in]xVector to multiply matrix by.
[out]yResulting vector.

◆ MultAdd()

void MultAdd ( const LocalVect< T_, NC_ > &  x,
LocalVect< T_, NR_ > &  y 
)

Multiply matrix by vector and add result to vector.

Parameters
[in]xVector to multiply matrix by.
[out]yResulting vector (y += a * x)

◆ MultAddScal()

void MultAddScal ( const T_ &  a,
const LocalVect< T_, NC_ > &  x,
LocalVect< T_, NR_ > &  y 
)

Multiply matrix by scaled vector and add result to vector.

Parameters
[in]aConstant to premultiply by vector x.
[in]x(Scaled) vector to multiply matrix by.
[out]yResulting vector (y += a * x)

◆ operator()() [1/2]

T_ & operator() ( size_t  i,
size_t  j 
)

Operator () (Non constant version)

Returns entry at row i and column j.

◆ operator()() [2/2]

T_ operator() ( size_t  i,
size_t  j 
) const

Operator () (Constant version)

Returns entry at row i and column j.

◆ operator*()

LocalVect< T_, NR_ > operator* ( LocalVect< T_, NC_ > &  x)

Operator *

Return a Vect instance as product of current matrix by vector x.

◆ operator*=()

LocalMatrix< T_, NR_, NC_ > & operator*= ( const T_ &  x)

Operator *=

Multiply matrix entries by constant x.

◆ operator+=() [1/2]

LocalMatrix< T_, NR_, NC_ > & operator+= ( const LocalMatrix< T_, NR_, NC_ > &  m)

Operator +=

Add m to current matrix.

◆ operator+=() [2/2]

LocalMatrix< T_, NR_, NC_ > & operator+= ( const T_ &  x)

Operator +=

Add constant x to current matrix entries.

◆ operator-=() [1/2]

LocalMatrix< T_, NR_, NC_ > & operator-= ( const LocalMatrix< T_, NR_, NC_ > &  m)

Operator -=

Subtract m from current matrix.

◆ operator-=() [2/2]

LocalMatrix< T_, NR_, NC_ > & operator-= ( const T_ &  x)

Operator -=

Subtract x from current matrix entries.

◆ operator/=()

LocalMatrix< T_, NR_, NC_ > & operator/= ( const T_ &  x)

Operator /=

Divide by x current matrix entries.

◆ operator=() [1/2]

LocalMatrix< T_, NR_, NC_ > & operator= ( const LocalMatrix< T_, NR_, NC_ > &  m)

Operator =

Copy instance m into current instance.

◆ operator=() [2/2]

LocalMatrix< T_, NR_, NC_ > & operator= ( const T_ &  x)

Operator =

Assign matrix to identity times x

◆ solve()

int solve ( LocalVect< T_, NR_ > &  b)

Forward and backsubstitute to solve a linear system.

Parameters
[in]bRight-hand side in input and solution vector in output.
Returns
  • 0: Solution was performed normally.
  • n: n-th pivot is zero.
Note
Matrix must have been factorized at first.

◆ Symmetrize()

void Symmetrize ( )

Symmetrize matrix.

Fill upper triangle to form a symmetric matrix.






Copyright © 1998-2022 Rachid Touzani