GeneralBrokenLines  Rev: 2.2.0
BorderedBandMatrix.h
Go to the documentation of this file.
1 /*
2  * BorderedBandMatrix.h
3  *
4  * Created on: Aug 14, 2011
5  * Author: kleinwrt
6  */
7 
30 #ifndef BORDEREDBANDMATRIX_H_
31 #define BORDEREDBANDMATRIX_H_
32 
33 #include<iostream>
34 #include<vector>
35 #include<math.h>
36 #include<cstdlib>
37 #include "VMatrix.h"
38 #include <Eigen/Core>
39 
41 namespace gbl {
42 
44 
77 public:
79  virtual ~BorderedBandMatrix();
80  void resize(unsigned int nSize, unsigned int nBorder = 1,
81  unsigned int nBand = 5);
82  void solveAndInvertBorderedBand(const VVector &aRightHandSide,
83  VVector &aSolution);
84  void addBlockMatrix(double aWeight,
85  const std::vector<unsigned int>* anIndex,
86  const std::vector<double>* aVector);
87  void addBlockMatrix(double aWeight, unsigned int nSimple,
88  unsigned int* anIndex, double* aVector);
89  Eigen::MatrixXd getBlockMatrix(
90  const std::vector<unsigned int> anIndex) const;
91  Eigen::MatrixXd getBlockMatrix(unsigned int aSize,
92  unsigned int* anIndex) const;
93  void printMatrix() const;
94 
95 private:
96  unsigned int numSize;
97  unsigned int numBorder;
98  unsigned int numBand;
99  unsigned int numCol;
103 
104  void decomposeBand();
105  VVector solveBand(const VVector &aRightHandSide) const;
106  VMatrix solveBand(const VMatrix &aRightHandSide) const;
108  VMatrix bandOfAVAT(const VMatrix &anArray,
109  const VSymMatrix &aSymArray) const;
110 };
111 }
112 #endif /* BORDEREDBANDMATRIX_H_ */
(Symmetric) Bordered Band Matrix.
VMatrix theMixed
Mixed part.
void printMatrix() const
Print bordered band matrix.
void decomposeBand()
(root free) Cholesky decomposition of band part: C=LDL^T
Eigen::MatrixXd getBlockMatrix(const std::vector< unsigned int > anIndex) const
Retrieve symmetric block matrix.
VSymMatrix theBorder
Border part.
unsigned int numBand
Band width.
VVector solveBand(const VVector &aRightHandSide) const
Solve for band part.
unsigned int numCol
Band matrix size.
BorderedBandMatrix()
Create bordered band matrix.
VMatrix bandOfAVAT(const VMatrix &anArray, const VSymMatrix &aSymArray) const
Calculate band part of: 'anArray * aSymArray * anArray.T'.
VMatrix invertBand()
Invert band part.
unsigned int numBorder
Border size.
void resize(unsigned int nSize, unsigned int nBorder=1, unsigned int nBand=5)
Resize bordered band matrix.
void solveAndInvertBorderedBand(const VVector &aRightHandSide, VVector &aSolution)
Solve linear equation system, partially calculate inverse.
unsigned int numSize
Matrix size.
void addBlockMatrix(double aWeight, const std::vector< unsigned int > *anIndex, const std::vector< double > *aVector)
Add symmetric block matrix.
Simple Matrix based on std::vector<double>
Definition: VMatrix.h:63
Simple symmetric Matrix based on std::vector<double>
Definition: VMatrix.h:86
Simple Vector based on std::vector<double>
Definition: VMatrix.h:43
Namespace for the general broken lines package.