UblasCustomFunctions.hpp File Reference

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <boost/numeric/ublas/matrix_expression.hpp>
#include "petsc.h"
#include "petscblaslapack.h"
#include "Exception.hpp"
#include "MathsCustomFunctions.hpp"
Include dependency graph for UblasCustomFunctions.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

template<class T >
Determinant (const boost::numeric::ublas::c_matrix< T, 1, 1 > &rM)
template<class T >
Determinant (const boost::numeric::ublas::c_matrix< T, 2, 2 > &rM)
template<class T >
Determinant (const boost::numeric::ublas::c_matrix< T, 3, 3 > &rM)
template<class T >
Determinant (const boost::numeric::ublas::c_matrix< T, 3, 2 > &rM)
template<class T >
Determinant (const boost::numeric::ublas::c_matrix< T, 3, 1 > &rM)
template<class T >
Determinant (const boost::numeric::ublas::c_matrix< T, 2, 1 > &rM)
template<class T >
Determinant (const boost::numeric::ublas::c_matrix< T, 3, 0 > &rM)
template<class T >
Determinant (const boost::numeric::ublas::c_matrix< T, 2, 0 > &rM)
template<class T >
Determinant (const boost::numeric::ublas::c_matrix< T, 1, 0 > &rM)
template<class T >
SubDeterminant (const boost::numeric::ublas::c_matrix< T, 1, 1 > &rM, const unsigned missrow, const unsigned misscol)
template<class T >
SubDeterminant (const boost::numeric::ublas::c_matrix< T, 2, 2 > &rM, const unsigned missrow, const unsigned misscol)
template<class T >
SubDeterminant (const boost::numeric::ublas::c_matrix< T, 3, 3 > &rM, const unsigned missrow, const unsigned misscol)
template<class T >
SubDeterminant (const boost::numeric::ublas::c_matrix< T, 3, 2 > &rM, const unsigned missrow, const unsigned misscol)
template<class T >
SubDeterminant (const boost::numeric::ublas::c_matrix< T, 3, 1 > &rM, const unsigned missrow, const unsigned misscol)
template<class T >
SubDeterminant (const boost::numeric::ublas::c_matrix< T, 2, 1 > &rM, const unsigned missrow, const unsigned misscol)
template<class T >
SubDeterminant (const boost::numeric::ublas::c_matrix< T, 3, 0 > &rM, const unsigned missrow, const unsigned misscol)
template<class T >
SubDeterminant (const boost::numeric::ublas::c_matrix< T, 2, 0 > &rM, const unsigned missrow, const unsigned misscol)
template<class T >
SubDeterminant (const boost::numeric::ublas::c_matrix< T, 1, 0 > &rM, const unsigned missrow, const unsigned misscol)
template<class T >
boost::numeric::ublas::c_matrix
< T, 1, 1 > 
Inverse (const boost::numeric::ublas::c_matrix< T, 1, 1 > &rM)
template<class T >
boost::numeric::ublas::c_matrix
< T, 2, 2 > 
Inverse (const boost::numeric::ublas::c_matrix< T, 2, 2 > &rM)
template<class T >
boost::numeric::ublas::c_matrix
< T, 3, 3 > 
Inverse (const boost::numeric::ublas::c_matrix< T, 3, 3 > &rM)
template<class T >
boost::numeric::ublas::c_matrix
< T, 2, 3 > 
Inverse (const boost::numeric::ublas::c_matrix< T, 3, 2 > &rM)
template<class T >
boost::numeric::ublas::c_matrix
< T, 1, 2 > 
Inverse (const boost::numeric::ublas::c_matrix< T, 2, 1 > &rM)
template<class T >
boost::numeric::ublas::c_matrix
< T, 1, 3 > 
Inverse (const boost::numeric::ublas::c_matrix< T, 3, 1 > &rM)
template<class T >
Trace (const c_matrix< T, 1, 1 > &rM)
template<class T >
Trace (const c_matrix< T, 2, 2 > &rM)
template<class T >
Trace (const c_matrix< T, 3, 3 > &rM)
template<class T >
Trace (const c_matrix< T, 4, 4 > &rM)
template<class T >
SecondInvariant (const c_matrix< T, 3, 3 > &rM)
template<class T >
SecondInvariant (const c_matrix< T, 2, 2 > &rM)
c_vector< double, 3 > CalculateEigenvectorForSmallestNonzeroEigenvalue (c_matrix< double, 3, 3 > &rA)
template<class T >
c_vector< T, 3 > VectorProduct (const c_vector< T, 3 > &rA, const c_vector< T, 3 > &rB)
c_vector< double, 1 > Create_c_vector (double x)
c_vector< double, 2 > Create_c_vector (double x, double y)
c_vector< double, 3 > Create_c_vector (double x, double y, double z)

Detailed Description

A collection of useful functions extending the functionality of the Boost Ublas library.

Definition in file UblasCustomFunctions.hpp.


Function Documentation

c_vector<double,3> CalculateEigenvectorForSmallestNonzeroEigenvalue ( c_matrix< double, 3, 3 > &  rA  ) 

Use LAPACK functionality to find the eigenvector corresponding real eigenvalue which is smallest in magnitude. Caveat: if there are zero eigenvalues they are ignored. It's the smallest magnitude non-zero real eigenvalue which is used.

Parameters:
rA 3x3 matrix is question
Returns:
3-vector corresponding to right-eigenvector in question

Definition at line 55 of file UblasCustomFunctions.cpp.

c_vector<double, 3> Create_c_vector ( double  x,
double  y,
double  z 
)

Convenience function for quickly creating test vectors (3D).

Parameters:
x entry in vector
y entry in vector
z entry in vector
Returns:
vector=(x,y,z)

Definition at line 46 of file UblasCustomFunctions.cpp.

c_vector<double, 2> Create_c_vector ( double  x,
double  y 
)

Convenience function for quickly creating test vectors (2D).

Parameters:
x entry in vector
y entry in vector
Returns:
vector=(x,y)

Definition at line 38 of file UblasCustomFunctions.cpp.

c_vector<double, 1> Create_c_vector ( double  x  ) 

Convenience function for quickly creating test vectors (1D).

Parameters:
x entry in vector
Returns:
vector=(x)

Definition at line 31 of file UblasCustomFunctions.cpp.

template<class T >
T Determinant ( const boost::numeric::ublas::c_matrix< T, 1, 0 > &  rM  )  [inline]

1x0 (Generalized determinant) - not implement, but needed by some compilers.

Parameters:
rM The matrix of which to find the generalized determinant.

Definition at line 176 of file UblasCustomFunctions.hpp.

References NEVER_REACHED.

template<class T >
T Determinant ( const boost::numeric::ublas::c_matrix< T, 2, 0 > &  rM  )  [inline]

2x0 (Generalized determinant) - not implement, but needed by some compilers.

Parameters:
rM The matrix of which to find the generalized determinant.

Definition at line 165 of file UblasCustomFunctions.hpp.

References NEVER_REACHED.

template<class T >
T Determinant ( const boost::numeric::ublas::c_matrix< T, 3, 0 > &  rM  )  [inline]

3x0 (Generalized determinant) - not implement, but needed by some compilers.

Parameters:
rM The matrix of which to find the generalized determinant.

Definition at line 154 of file UblasCustomFunctions.hpp.

References NEVER_REACHED.

template<class T >
T Determinant ( const boost::numeric::ublas::c_matrix< T, 2, 1 > &  rM  )  [inline]

2x1 (Generalized determinant). Calculate the generalized determinant of a 2x1 matrix. The generalized determinant is given by det(T) = sqrt(det(T'T));

Parameters:
rM The matrix of which to find the generalized determinant.

Definition at line 142 of file UblasCustomFunctions.hpp.

template<class T >
T Determinant ( const boost::numeric::ublas::c_matrix< T, 3, 1 > &  rM  )  [inline]

3x1 (Generalized determinant). Calculate the generalized determinant of a 3x1 matrix. The generalized determinant is given by det(T) = sqrt(det(T'T));

Parameters:
rM The matrix of which to find the generalized determinant.

Definition at line 128 of file UblasCustomFunctions.hpp.

template<class T >
T Determinant ( const boost::numeric::ublas::c_matrix< T, 3, 2 > &  rM  )  [inline]

3x2 (Generalized determinant). Calculate the generalized determinant of a 3x2 matrix. The generalized determinant is given by det(T) = sqrt(det(T'T));

Parameters:
rM The matrix of which to find the generalized determinant.

Definition at line 113 of file UblasCustomFunctions.hpp.

References Determinant().

template<class T >
T Determinant ( const boost::numeric::ublas::c_matrix< T, 3, 3 > &  rM  )  [inline]

3x3 Determinant. Get the determinant of a ublas matrix.

Parameters:
rM The matrix of which to find the determinant.

Definition at line 94 of file UblasCustomFunctions.hpp.

template<class T >
T Determinant ( const boost::numeric::ublas::c_matrix< T, 2, 2 > &  rM  )  [inline]

2x2 Determinant. Get the determinant of a ublas matrix.

Parameters:
rM The matrix of which to find the determinant.

Definition at line 80 of file UblasCustomFunctions.hpp.

template<class T >
T Determinant ( const boost::numeric::ublas::c_matrix< T, 1, 1 > &  rM  )  [inline]
template<class T >
boost::numeric::ublas::c_matrix<T, 1, 3> Inverse ( const boost::numeric::ublas::c_matrix< T, 3, 1 > &  rM  )  [inline]

3x1 pseudo-inverse of a matrix. The pseudo-inverse is given by pinv(T) = (T'T)^(-1)*T'.

Parameters:
rM The matrix of which to find the inverse.
Returns:
The inverse

Definition at line 505 of file UblasCustomFunctions.hpp.

References Determinant().

template<class T >
boost::numeric::ublas::c_matrix<T, 1, 2> Inverse ( const boost::numeric::ublas::c_matrix< T, 2, 1 > &  rM  )  [inline]

2x1 pseudo-inverse of a matrix. The pseudo-inverse is given by pinv(T) = (T'T)^(-1)*T'.

Parameters:
rM The matrix of which to find the inverse.
Returns:
The inverse

Definition at line 484 of file UblasCustomFunctions.hpp.

References Determinant().

template<class T >
boost::numeric::ublas::c_matrix<T, 2, 3> Inverse ( const boost::numeric::ublas::c_matrix< T, 3, 2 > &  rM  )  [inline]

2x3 pseudo-inverse of a matrix. The pseudo-inverse is given by pinv(T) = (T'T)^(-1)*T'.

Parameters:
rM The matrix of which to find the inverse.
Returns:
The inverse

Definition at line 444 of file UblasCustomFunctions.hpp.

template<class T >
boost::numeric::ublas::c_matrix<T, 3, 3> Inverse ( const boost::numeric::ublas::c_matrix< T, 3, 3 > &  rM  )  [inline]

3x3 Inverse. Get the inverse of a ublas matrix.

Parameters:
rM The matrix of which to find the inverse.
Returns:
The inverse

Definition at line 413 of file UblasCustomFunctions.hpp.

References Determinant().

template<class T >
boost::numeric::ublas::c_matrix<T, 2, 2> Inverse ( const boost::numeric::ublas::c_matrix< T, 2, 2 > &  rM  )  [inline]

2x2 Inverse. Get the inverse of a ublas matrix.

Parameters:
rM The matrix of which to find the inverse.
Returns:
The inverse

Definition at line 390 of file UblasCustomFunctions.hpp.

References Determinant().

template<class T >
boost::numeric::ublas::c_matrix<T, 1, 1> Inverse ( const boost::numeric::ublas::c_matrix< T, 1, 1 > &  rM  )  [inline]
template<class T >
T SecondInvariant ( const c_matrix< T, 2, 2 > &  rM  )  [inline]

2x2 second invariant. Second invariant of a 2d matrix, i.e. the determinant. This function is mainly here just so that the same code can be used in 2d and 3d.

Parameters:
rM The matrix

Definition at line 594 of file UblasCustomFunctions.hpp.

References Determinant().

template<class T >
T SecondInvariant ( const c_matrix< T, 3, 3 > &  rM  )  [inline]

3x3 second invariant.

Note:
Implementation only correct for a SYMMETRIC matrix though. It is up to the user to check the input matrix is symmetric.
Parameters:
rM The matrix

Definition at line 580 of file UblasCustomFunctions.hpp.

Referenced by AbstractIsotropicIncompressibleMaterialLaw< DIM >::ComputeStressAndStressDerivative(), and AbstractIsotropicCompressibleMaterialLaw< DIM >::ComputeStressAndStressDerivative().

template<class T >
T SubDeterminant ( const boost::numeric::ublas::c_matrix< T, 1, 0 > &  rM,
const unsigned  missrow,
const unsigned  misscol 
) [inline]

SubDeterminant 1x0 - Not implemented, but needed by some compilers for recursive template calls. Determinant of a submatrix after removing a particular row and column.

Parameters:
rM The matrix of which to find the subdeterminant.
missrow The index to the row to remove
misscol The index to the column to remove

Definition at line 355 of file UblasCustomFunctions.hpp.

References NEVER_REACHED.

template<class T >
T SubDeterminant ( const boost::numeric::ublas::c_matrix< T, 2, 0 > &  rM,
const unsigned  missrow,
const unsigned  misscol 
) [inline]

SubDeterminant 2x0 - Not implemented, but needed by some compilers for recursive template calls. Determinant of a submatrix after removing a particular row and column.

Parameters:
rM The matrix of which to find the subdeterminant.
missrow The index to the row to remove
misscol The index to the column to remove

Definition at line 341 of file UblasCustomFunctions.hpp.

References NEVER_REACHED.

template<class T >
T SubDeterminant ( const boost::numeric::ublas::c_matrix< T, 3, 0 > &  rM,
const unsigned  missrow,
const unsigned  misscol 
) [inline]

SubDeterminant 3x0 - Not implemented, but needed by some compilers for recursive template calls. Determinant of a submatrix after removing a particular row and column.

Parameters:
rM The matrix of which to find the subdeterminant.
missrow The index to the row to remove
misscol The index to the column to remove

Definition at line 327 of file UblasCustomFunctions.hpp.

References NEVER_REACHED.

template<class T >
T SubDeterminant ( const boost::numeric::ublas::c_matrix< T, 2, 1 > &  rM,
const unsigned  missrow,
const unsigned  misscol 
) [inline]

SubDeterminant 2x1. Determinant of a submatrix after removing a particular row and column.

Parameters:
rM The matrix of which to find the subdeterminant.
missrow The index to the row to remove
misscol The index to the column to remove

Definition at line 303 of file UblasCustomFunctions.hpp.

template<class T >
T SubDeterminant ( const boost::numeric::ublas::c_matrix< T, 3, 1 > &  rM,
const unsigned  missrow,
const unsigned  misscol 
) [inline]

SubDeterminant 3x1. Determinant of a submatrix after removing a particular row and column.

Parameters:
rM The matrix of which to find the subdeterminant.
missrow The index to the row to remove
misscol The index to the column to remove

Definition at line 280 of file UblasCustomFunctions.hpp.

template<class T >
T SubDeterminant ( const boost::numeric::ublas::c_matrix< T, 3, 2 > &  rM,
const unsigned  missrow,
const unsigned  misscol 
) [inline]

SubDeterminant 3x2. Determinant of a submatrix after removing a particular row and column.

Parameters:
rM The matrix of which to find the subdeterminant.
missrow The index to the row to remove
misscol The index to the column to remove

Definition at line 257 of file UblasCustomFunctions.hpp.

template<class T >
T SubDeterminant ( const boost::numeric::ublas::c_matrix< T, 3, 3 > &  rM,
const unsigned  missrow,
const unsigned  misscol 
) [inline]

SubDeterminant 3x3. Determinant of a submatrix after removing a particular row and column.

Parameters:
rM The matrix of which to find the subdeterminant.
missrow The index to the row to remove
misscol The index to the column to remove

Definition at line 232 of file UblasCustomFunctions.hpp.

template<class T >
T SubDeterminant ( const boost::numeric::ublas::c_matrix< T, 2, 2 > &  rM,
const unsigned  missrow,
const unsigned  misscol 
) [inline]

2x2 SubDeterminant. Return the determinant of a submatrix after removing a particular row and column.

Parameters:
rM The matrix of which to find the subdeterminant.
missrow The index to the row to remove
misscol The index to the column to remove

Definition at line 211 of file UblasCustomFunctions.hpp.

template<class T >
T SubDeterminant ( const boost::numeric::ublas::c_matrix< T, 1, 1 > &  rM,
const unsigned  missrow,
const unsigned  misscol 
) [inline]

1x1 SubDeterminant. Return the determinant of a submatrix after removing a particular row and column For a 1x1 matrix this should always remove the only row and column (0,0).

Parameters:
rM The matrix of which to find the subdeterminant.
missrow The index to the row to remove
misscol The index to the column to remove

Definition at line 193 of file UblasCustomFunctions.hpp.

Referenced by AbstractTetrahedralElement< ELEMENT_DIM, SPACE_DIM >::CalculateWeightedDirection().

template<class T >
T Trace ( const c_matrix< T, 4, 4 > &  rM  )  [inline]

4x4 matrix trace (sum of diagonal elements).

Parameters:
rM The matrix of which to find the trace.
Returns:
The trace

Definition at line 564 of file UblasCustomFunctions.hpp.

template<class T >
T Trace ( const c_matrix< T, 3, 3 > &  rM  )  [inline]

3x3 matrix trace (sum of diagonal elements).

Parameters:
rM The matrix of which to find the trace.
Returns:
The trace

Definition at line 552 of file UblasCustomFunctions.hpp.

template<class T >
T Trace ( const c_matrix< T, 2, 2 > &  rM  )  [inline]

2x2 matrix trace (sum of diagonal elements).

Parameters:
rM The matrix of which to find the trace.
Returns:
The trace

Definition at line 540 of file UblasCustomFunctions.hpp.

template<class T >
T Trace ( const c_matrix< T, 1, 1 > &  rM  )  [inline]

1x1 matrix trace (sum of diagonal elements).

Parameters:
rM The matrix of which to find the trace.
Returns:
The trace

Definition at line 528 of file UblasCustomFunctions.hpp.

Referenced by AbstractIsotropicIncompressibleMaterialLaw< DIM >::ComputeStressAndStressDerivative(), and AbstractIsotropicCompressibleMaterialLaw< DIM >::ComputeStressAndStressDerivative().

template<class T >
c_vector<T, 3> VectorProduct ( const c_vector< T, 3 > &  rA,
const c_vector< T, 3 > &  rB 
) [inline]

This is a cross-product aka vector-product, only implemented for 3-vectors.

Parameters:
rA first vector
rB second vector
Returns:
rA x rB

Definition at line 620 of file UblasCustomFunctions.hpp.

Referenced by StreeterFibreGenerator< SPACE_DIM >::GenerateOrthotropicFibreOrientation().

Generated on Thu Dec 22 13:00:21 2011 for Chaste by  doxygen 1.6.3