|
NGSolve
4.9
|
Basic Linear Algebra. More...
Classes | |
| class | FlatSymBandMatrix |
| A symmetric band-matrix. More... | |
| class | SymBandMatrix |
| A symmetric band-matrix with memory management. More... | |
| class | FlatBandCholeskyFactors |
| Cholesky factors of a band matrix. More... | |
| class | BandCholeskyFactors |
| Cholesky factors of a band matrix. More... | |
| class | FlatCholeskyFactors |
| The Cholesky-factorization of a symmetric dense matrix. More... | |
| class | CholeskyFactors |
| class | mat_traits |
| Trait to obtain vector and scalar types for given matrix types. More... | |
| class | mat_traits< Mat< 1, 1, int > > |
| class | mat_traits< int > |
| class | mat_traits< double > |
| class | mat_traits< float > |
| class | mat_traits< Complex > |
| class | mat_traits< AutoDiff< D, SCAL > > |
| class | mat_traits< AutoDiffDiff< D > > |
| class | mat_traits< const int > |
| class | mat_traits< const double > |
| class | mat_traits< const Complex > |
| class | mat_from_vecs |
| matrix type from column and row vectors More... | |
| class | mat_from_vecs< double, double > |
| class | mat_from_vecs< double, Complex > |
| class | mat_from_vecs< Complex, double > |
| class | mat_from_vecs< Complex, Complex > |
| class | mat_prod_type |
| matrix type of product More... | |
| class | mat_prod_type< double, double > |
| class | mat_prod_type< double, Complex > |
| class | mat_prod_type< Complex, double > |
| class | mat_prod_type< Complex, Complex > |
| class | mat_prod_type< AutoDiff< D, TA >, TB > |
| class | mat_prod_type< TB, AutoDiff< D, TA > > |
| class | mat_prod_type< AutoDiff< D, TA >, AutoDiff< E, TB > > |
| class | mat_sum_type |
| matrix type of sum (important for double+Complex) More... | |
| class | mat_sum_type< float, float > |
| class | mat_sum_type< double, double > |
| class | mat_sum_type< double, Complex > |
| class | mat_sum_type< Complex, double > |
| class | mat_sum_type< Complex, Complex > |
| class | mat_sum_type< AutoDiff< D, TA >, TB > |
| class | mat_sum_type< TB, AutoDiff< D, TA > > |
| class | mat_sum_type< AutoDiff< D, TA >, AutoDiff< E, TB > > |
| class | mat_scale_type |
| matrix type of scale More... | |
| class | mat_scale_type< double, double > |
| class | mat_scale_type< double, Complex > |
| class | mat_scale_type< Complex, double > |
| class | mat_scale_type< Complex, Complex > |
| class | mat_scale_type< TB, AutoDiff< D, TA > > |
| class | mat_scale_type< AutoDiff< D, TA >, TB > |
| class | mat_scale_type< AutoDiff< D, TA >, AutoDiff< E, TB > > |
| class | Complex2RealException |
| Complex to double assignment called. More... | |
| class | Expr |
| Expr is the base class for all matrix template expressions. More... | |
| class | SymExpr |
| Caller knows that matrix expression is a symmetric matrix. More... | |
| class | LapackExpr |
| class | LocalHeapExpr |
| class | MatExpr |
| The base class for matrices. More... | |
| class | CMCPMatExpr |
| The base class for matrices. More... | |
| class | SumExpr |
| Sum of 2 matrix expressions. More... | |
| class | SubExpr |
| Matrix-expr minus Matrix-expr. More... | |
| class | MinusExpr |
| minus Matrix-expr More... | |
| class | ScaleExpr |
| Scalar times Matrix-expr. More... | |
| class | MultExpr |
| Matrix-expr timex Matrix-expr. More... | |
| class | TransExpr |
| Transpose of Matrix-expr. More... | |
| class | SubMatrixExpr |
| RowsArray. More... | |
| class | RowsArrayExpr |
| RowsArray. More... | |
| class | ColsArrayExpr |
| ColsArray. More... | |
| class | ConjExpr |
| Conjugate of Matrix-expr. More... | |
| class | FlatMatrix |
| A simple matrix. More... | |
| class | Matrix |
| A Matrix class with memory allocation/deallocation. More... | |
| class | Mat |
| A matrix of fixed size. More... | |
| class | FlatMatrixFixWidth |
| A Matrix with width known at compile time No memory allocation/deallocation. More... | |
| class | MatrixFixWidth |
| A Matrix class with memory allocation/deallocation. More... | |
| class | FlatMatrixFixHeight |
| A Matrix which height is known at compile time No memory allocation/deallocation. More... | |
| class | MatrixFixHeight |
| A Matrix class with memory allocation/deallocation. More... | |
| class | SliceMatrix |
| class | DoubleSliceMatrix |
| class | Scalar2ElemMatrix |
| class | Id |
| Identity Matrix of fixed size. More... | |
| class | Identity |
| Variable size identity matrix. More... | |
| class | FlatSymmetricMatrix |
| A symmetric band-matrix. More... | |
| class | SymmetricMatrix |
| A symmetric band-matrix with memory management. More... | |
| class | FlatVector |
| A simple vector. More... | |
| class | FlatVector< Vec< S, T > > |
| class | Vector |
| A Vector class with memory allocation/deallocation. More... | |
| class | Vector< Vec< S, T > > |
| class | VectorMem |
| A Vector class with memory allocation/deallocation. More... | |
| class | FlatSysVector |
| class | Vec |
| A vector of fixed size. More... | |
| class | FlatVec |
| A pointer to a vector of fixed size. More... | |
| class | SliceVector |
| A vector with non-linear data access. More... | |
| class | FixSliceVector |
| A vector with non-linear data access. More... | |
| class | Scalar2ElemVector |
| class | Scalar2ElemVector< TSCAL, TSCAL > |
| class | mat_traits< FlatVector< T > > |
Typedefs | |
| typedef std::complex< double > | Complex |
| typedef int | T_Lapack |
| typedef int | integer |
Functions | |
| double | fabs (Complex v) |
| bool | IsComplex (double v) |
| bool | IsComplex (Complex v) |
| void | CalcEigenSystem (const FlatMatrix< double > &mat, FlatVector< double > &lami, FlatMatrix< double > &eigenvecs) |
| Computes eigenvalues and vectors of the symmetric matrix mat. | |
| void | CalcSchurComplement (const FlatMatrix< double > a, FlatMatrix< double > s, const BitArray &used, LocalHeap &lh) |
| Computes the Schur Complement. | |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &s, const FlatSymBandMatrix< T > &m) |
| output operator | |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &s, const FlatBandCholeskyFactors< T > &m) |
| output operator. | |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &s, const FlatCholeskyFactors< T > &m) |
| output operator. | |
| template<typename TVEC > | |
| TVEC::TELEM & | Access (TVEC &vec, int nr) |
| template<typename TVEC > | |
| TVEC::TELEM | Access (const TVEC &vec, int nr) |
| double & | Access (double &vec, int nr) |
| double | Access (const double &vec, int nr) |
| Complex & | Access (Complex &vec, int nr) |
| Complex | Access (const Complex &vec, int nr) |
| template<typename TM > | |
| TM::TELEM & | Access (TM &mat, int i, int j) |
| template<typename TM > | |
| TM::TELEM | Access (const TM &mat, int i, int j) |
| double & | Access (double &mat, int i, int j) |
| double | Access (const double &mat, int i, int j) |
| Complex & | Access (Complex &mat, int i, int j) |
| Complex | Access (const Complex &mat, int i, int j) |
| template<class TM > | |
| int | Height (const TM &m) |
| Height of matrix. | |
| template<class TM > | |
| int | Width (const TM &m) |
| Width of matrix. | |
| template<> | |
| int | Height< double > (const double &) |
| template<> | |
| int | Height< Complex > (const Complex &) |
| template<> | |
| int | Width< double > (const double &) |
| template<> | |
| int | Width< Complex > (const Complex &) |
| template<typename TO > | |
| TO | ConvertTo (double f) |
| template<typename TO > | |
| TO | ConvertTo (Complex f) |
| template<typename TO > | |
| TO | ConvertTo (const AutoDiff< 1, Complex > &f) |
| template<> | |
| double | ConvertTo (Complex f) |
| template<typename T > | |
| SymExpr< T > | Symmetric (const Expr< T > &a) |
| Declare that matrix expression is symmetric. | |
| template<typename TA > | |
| LapackExpr< TA > | operator| (const Expr< TA > &a, T_Lapack) |
| template<typename TA > | |
| LocalHeapExpr< TA > | operator| (const Expr< TA > &a, LocalHeap &lh) |
| template<typename TA , typename TB > | |
| SumExpr< TA, TB > | operator+ (const Expr< TA > &a, const Expr< TB > &b) |
| template<typename TA , typename TB > | |
| SubExpr< TA, TB > | operator- (const Expr< TA > &a, const Expr< TB > &b) |
| template<typename TA > | |
| MinusExpr< TA > | operator- (const Expr< TA > &a) |
| template<typename TA > | |
| ScaleExpr< TA, double > | operator* (double b, const Expr< TA > &a) |
| template<typename TA > | |
| ScaleExpr< TA, Complex > | operator* (Complex b, const Expr< TA > &a) |
| template<int D, typename TAD , typename TA > | |
| ScaleExpr< TA, AutoDiff< D, TAD > > | operator* (const AutoDiff< D, TAD > &b, const Expr< TA > &a) |
| template<typename TA , typename TB > | |
| MultExpr< TA, TB > | operator* (const Expr< TA > &a, const Expr< TB > &b) |
| double | Trans (double a) |
| Complex | Trans (Complex a) |
| template<int D, typename TAD > | |
| AutoDiff< D, TAD > | Trans (const AutoDiff< D, TAD > &a) |
| template<typename TA > | |
| TransExpr< TA > | Trans (const Expr< TA > &a) |
| Transpose. | |
| double | Conj (double a) |
| Complex | Conj (Complex a) |
| template<typename TA > | |
| ConjExpr< TA > | Conj (const Expr< TA > &a) |
| Conjugate. | |
| template<int D, typename TAD > | |
| AutoDiff< D, TAD > | Conj (const AutoDiff< D, TAD > &a) |
| double | InnerProduct (double a, double b) |
| Complex | InnerProduct (Complex a, Complex b) |
| Complex | InnerProduct (double a, Complex b) |
| Complex | InnerProduct (Complex a, double b) |
| template<class TA , class TB > | |
| mat_prod_type< typename TA::TSCAL, typename TB::TSCAL > ::TMAT | InnerProduct (const Expr< TA > &a, const Expr< TB > &b) |
| Inner product. | |
| template<class TA > | |
| TA::TELEM | Trace (const Expr< TA > &a) |
| Calculates the trace of a matrix expression. | |
| double | L2Norm2 (double v) |
| Euclidean norm squared. | |
| double | L2Norm2 (Complex v) |
| template<int D, typename SCAL > | |
| double | L2Norm2 (const AutoDiff< D, SCAL > &x) throw () |
| template<class TA > | |
| double | L2Norm2 (const Expr< TA > &v) |
| template<class TA > | |
| double | L2Norm (const Expr< TA > &v) |
| Calculates the Euclidean norm. | |
| double | MaxNorm (double v) |
| Euclidean norm squared. | |
| double | MaxNorm (Complex v) |
| template<int D, typename SCAL > | |
| double | L2Norm (const AutoDiff< D, SCAL > &x) throw () |
| template<class TA > | |
| double | MaxNorm (const Expr< TA > &v) |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &s, const Expr< T > &v) |
| Print matrix-expr. | |
| template<class T2 > | |
| NGS_DLL_HEADER void | CalcInverse (FlatMatrix< T2 > inv) |
| Calculate inverse. Gauss elimination with row pivoting. | |
| NGS_DLL_HEADER void | CalcInverse (FlatMatrix< double > inv) |
| template<class T , class T2 > | |
| void | CalcInverse (const FlatMatrix< T > m, FlatMatrix< T2 > inv) |
| template<class T , class T2 > | |
| void | CalcInverse (const FlatMatrix< T > m, Matrix< T2 > &inv) |
| template<typename T > | |
| Matrix< T > | Inv (const FlatMatrix< T > &m) |
| Calculates the inverse of a Matrix. | |
| void | CalcInverse (double &m) |
| void | CalcInverse (Complex &m) |
| template<int H, int W, typename T > | |
| void | CalcInverse (Mat< H, W, T > &m) |
| void | CalcInverse (const double &m, double &inv) |
| void | CalcInverse (const Complex &m, Complex &inv) |
| template<int H, int W, typename T , typename TINV > | |
| void | CalcInverse (const Mat< H, W, T > &m, TINV &inv) |
| template<typename T , typename TINV > | |
| void | CalcInverse (const Mat< 1, 1, T > &m, TINV &inv) |
| template<typename T , typename TINV > | |
| void | CalcInverse (const Mat< 2, 2, T > &m, TINV &inv) |
| template<typename T , typename TINV > | |
| void | CalcInverse (const Mat< 3, 3, T > &m, TINV &inv) |
| template<int H, int W, typename T > | |
| Mat< H, W, T > | Inv (const Mat< H, W, T > &m) |
| template<class T > | |
| T::TELEM | Det (const MatExpr< T > &m) |
| Calculates the determinant of a Matrix. | |
| void | CheckMatRange (int h, int w, int i) |
| void | CheckMatRange (int h, int w, int i, int j) |
| template<int H, int W, typename T > | |
| std::ostream & | operator<< (std::ostream &s, const Mat< H, W, T > &m) |
| void | LapackMultAtx (ngbla::FlatMatrix< double > a, ngbla::FlatVector< double > x, ngbla::FlatVector< double > y) |
| void | LapackAddxyt (ngbla::FlatMatrix< double > a, ngbla::FlatVector< double > x, ngbla::FlatVector< double > y) |
| template<typename TA , typename TB > | |
| void | LapackMult (const TA &a, const TB &b, ngbla::SliceMatrix< double > c) |
| template<typename TA , typename TB > | |
| void | LapackMult (const TA &a, const TB &b, ngbla::SliceMatrix< Complex > c) |
| template<typename TA , typename TB > | |
| void | LapackMultAdd (const TA &a, const TB &b, double alpha, SliceMatrix< double > c, double beta) |
| template<typename TA , typename TB > | |
| void | LapackMultAdd (const TA &a, const TB &b, Complex alpha, SliceMatrix< Complex > c, Complex beta) |
| void | LapackMultABt (ngbla::FlatMatrix< double > a, ngbla::FlatMatrix< double > b, ngbla::FlatMatrix< double > c) |
| void | LapackMultAtB (ngbla::FlatMatrix< double > a, ngbla::FlatMatrix< double > b, ngbla::FlatMatrix< double > c) |
| void | LapackMultAB (ngbla::FlatMatrix< double > a, ngbla::FlatMatrix< double > b, ngbla::FlatMatrix< double > c) |
| void | LapackMultABt (ngbla::FlatMatrix< ngbla::Complex > a, ngbla::FlatMatrix< ngbla::Complex > b, ngbla::FlatMatrix< ngbla::Complex > c) |
| void | LapackMultAtB (ngbla::FlatMatrix< Complex > a, ngbla::FlatMatrix< Complex > b, ngbla::FlatMatrix< Complex > c) |
| void | LapackMultAddAB (ngbla::FlatMatrix< double > a, ngbla::FlatMatrix< double > b, double fac, ngbla::FlatMatrix< double > c) |
| void | LapackMultAddABt (ngbla::FlatMatrix< double > a, ngbla::FlatMatrix< double > b, double fac, ngbla::FlatMatrix< double > c) |
| void | LapackMultAddAtB (ngbla::FlatMatrix< double > a, ngbla::FlatMatrix< double > b, double fac, ngbla::FlatMatrix< double > c) |
| void | LapackMultAddAB (ngbla::FlatMatrix< ngbla::Complex > a, ngbla::FlatMatrix< ngbla::Complex > b, double fac, ngbla::FlatMatrix< ngbla::Complex > c) |
| void | LapackMultAddABt (ngbla::FlatMatrix< ngbla::Complex > a, ngbla::FlatMatrix< ngbla::Complex > b, double fac, ngbla::FlatMatrix< ngbla::Complex > c) |
| void | LapackInverse (ngbla::FlatMatrix< double > a) |
| void | LapackInverse (ngbla::FlatMatrix< ngbla::Complex > a) |
| void | LapackAInvBt (ngbla::FlatMatrix< double > a, ngbla::FlatMatrix< double > b, char trans= 'N') |
| void | LapackAInvBt (ngbla::FlatMatrix< Complex > a, ngbla::FlatMatrix< Complex > b, char trans= 'N') |
| void | LapackEigenValuesSymmetric (ngbla::FlatMatrix< double > a, ngbla::FlatVector< double > lami) |
| void | LapackEigenValuesSymmetric (ngbla::FlatMatrix< double > a, ngbla::FlatMatrix< double > b, ngbla::FlatVector< double > lami) |
| void | LapackEigenValuesSymmetric (ngbla::FlatMatrix< ngbla::Complex > a, ngbla::FlatVector< ngbla::Complex > lami) |
| void | LapackHessenbergEP (int n, std::complex< double > *H, std::complex< double > *lami, std::complex< double > *evecs) |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &s, const FlatSymmetricMatrix< T > &m) |
| void | CheckVecRange (int s, int i) |
| void | CheckVecRange (int s, int i, int j) |
| template<typename S > | |
| Vec< 3, S > | Cross (const Vec< 3, S > &a, const Vec< 3, S > &b) |
| cross product | |
| template<int S, typename T > | |
| ostream & | operator<< (ostream &ost, const Vec< S, T > &v) |
| output vector | |
| template<int S, typename TB > | |
| Vec< S > & | operator+= (Vec< S > &v, const Expr< TB > &v2) |
| template<int S, typename T > | |
| ostream & | operator<< (ostream &ost, const FlatVec< S, T > &v) |
| output vector. | |
Basic Linear Algebra.
namespace for basic linear algebra
The basic linear algebra is implemented by means of expression templates. This allows to write matrix and vector operations in a convenient way such as
There is no compromise to efficiency. In particular, there is no frequent allocation and dealloction of dynamic objects. The generated code is comparable to a manually optimized code.
The main idea is the following: The operator* (matrix, vector) returns a symbolic object matrix-vector product without evaluating it. The computations are done in the assignement, where the required memory for storing the result is available.
A good introduction to expression templates is "Techniques for Scientific C++" by Todd Veldhuizen.
The following vector types are available: Vec , FlatVector, Vector, VectorMem, SliceVector
The following matrix types are available: Mat, Matrix, MatrixFixWidth, MatrixFixHeight, SymBandMatrix, BandCholeskyFactors.
Again, there are corresponding matrix types without memory management: {FlatMatrix}, {FlatMatrixFixWidth}, {FlatMatrixFixHeight}, {FlatSymBandMatrix}, {FlatBandCholeskyFactors},
NGBLA provides the canonical operators (+,-,*,+=, -=) for matrices and vectors. Additionally, the following functions are avialable: {Trans}, {Inv}, {Height}, {Width}, {Trace}, {InnerProduct}, {L2Norm}, {Det}
Implemented algorithms are Inversion {CalcInverse}, Eigenvalue computation {EigenSystem}
1.7.6.1