UblasCustomFunctions.hpp File Reference

#include "UblasIncludes.hpp"
#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)
double CalculateMaxEigenpair (c_matrix< double, 3, 3 > &rA, c_vector< double, 3 > &rEigenvector)
template<class T >
c_vector< T, 1 > VectorProduct (const c_vector< T, 1 > &rA, const c_vector< T, 1 > &rB)
template<class T >
c_vector< T, 2 > VectorProduct (const c_vector< T, 2 > &rA, const c_vector< T, 2 > &rB)
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  ) 

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. This should be symmetric and positive definite.
Returns:
3-vector corresponding to right-eigenvector in question

Definition at line 62 of file UblasCustomFunctions.cpp.

References EXCEPTION, and UNUSED_OPT.

double CalculateMaxEigenpair ( c_matrix< double, 3, 3 > &  rA,
c_vector< double, 3 > &  rEigenvector 
)

Helper function to get maximum eigenpair from a 3x3 matrix by the power method

Parameters:
rA 3x3 matrix is question.
rEigenvector a guess eigenvector which will be refined
Returns:
the maximum eigenvalue

Definition at line 109 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 53 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 45 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 38 of file UblasCustomFunctions.cpp.

template<class T >
T Determinant ( const boost::numeric::ublas::c_matrix< T, 1, 0 > &  rM  )  [inline]
Returns:
(nothing) 1x0 (Generalized determinant) - not implement, but needed by some compilers.
Parameters:
rM The matrix of which to find the generalized determinant.

Definition at line 172 of file UblasCustomFunctions.hpp.

References NEVER_REACHED.

template<class T >
T Determinant ( const boost::numeric::ublas::c_matrix< T, 2, 0 > &  rM  )  [inline]
Returns:
(nothing) 2x0 (Generalized determinant) - not implement, but needed by some compilers.
Parameters:
rM The matrix of which to find the generalized determinant.

Definition at line 160 of file UblasCustomFunctions.hpp.

References NEVER_REACHED.

template<class T >
T Determinant ( const boost::numeric::ublas::c_matrix< T, 3, 0 > &  rM  )  [inline]
Returns:
(nothing) 3x0 (Generalized determinant) - not implement, but needed by some compilers.
Parameters:
rM The matrix of which to find the generalized determinant.

Definition at line 148 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).

Returns:
calculated 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 135 of file UblasCustomFunctions.hpp.

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

3x1 (Generalized determinant).

Returns:
calculated 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 121 of file UblasCustomFunctions.hpp.

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

3x2 (Generalized determinant).

Returns:
calculated 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 106 of file UblasCustomFunctions.hpp.

References Determinant().

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

3x3 Determinant.

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

Definition at line 87 of file UblasCustomFunctions.hpp.

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

2x2 Determinant.

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

Definition at line 73 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 501 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 480 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 440 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 409 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 386 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]
Returns:
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 590 of file UblasCustomFunctions.hpp.

References Determinant().

template<class T >
T SecondInvariant ( const c_matrix< T, 3, 3 > &  rM  )  [inline]
Returns:
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 576 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.

Returns:
(nothing)
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 351 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.

Returns:
(nothing)
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 337 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.

Returns:
(nothing)
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 323 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.

Returns:
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 299 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.

Returns:
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 276 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.

Returns:
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 253 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.

Returns:
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 228 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.

Returns:
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 207 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.

Returns:
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 189 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 560 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 548 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 536 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 524 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 652 of file UblasCustomFunctions.hpp.

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

This is a fake cross-product aka vector-product. Fake because it's only implemented for 3-vectors. This version is to satisfy template compilation.

Parameters:
rA first vector
rB second vector
Returns:
Does not return rA x rB

Definition at line 639 of file UblasCustomFunctions.hpp.

References NEVER_REACHED.

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

This is a fake cross-product aka vector-product. Fake because it's only implemented for 3-vectors. This version is to satisfy template compilation.

Parameters:
rA first vector
rB second vector
Returns:
Does not return rA x rB

Definition at line 626 of file UblasCustomFunctions.hpp.

References NEVER_REACHED.

Referenced by VertexMesh< ELEMENT_DIM, SPACE_DIM >::CalculateUnitNormalToFaceWithArea(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexMesh(), and StreeterFibreGenerator< SPACE_DIM >::Visit().


Generated by  doxygen 1.6.2