NeoPZ
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
TPZSkylMatrix< TVar > Class Template Reference

Implements a skyline storage format. A Skyline matrix is symmetric so square. Matrix. More...

#include <pzskylmat.h>

Inheritance diagram for TPZSkylMatrix< TVar >:
[legend]
Collaboration diagram for TPZSkylMatrix< TVar >:
[legend]

Public Member Functions

 TPZSkylMatrix ()
 
 TPZSkylMatrix (const int64_t dim)
 
 TPZSkylMatrix (const int64_t dim, const TPZVec< int64_t > &skyline)
 Construct a skyline matrix of dimension dim skyline indicates the minimum row number which will be accessed by each equation. More...
 
 TPZSkylMatrix (const TPZSkylMatrix< TVar > &A)
 
virtual int64_t MemoryFootprint () const override
 Returns the approximate size of the memory footprint (amount of memory required to store this object). More...
 
void SetSkyline (const TPZVec< int64_t > &skyline)
 modify the skyline of the matrix, throwing away its values skyline indicates the minimum row number which will be accessed by each equation More...
 
int64_t SkyHeight (int64_t col)
 return the height of the skyline for a given column More...
 
void AddSameStruct (TPZSkylMatrix< TVar > &B, double k=1.)
 Add a skyline matrix B with same structure of this It makes this += k * B. More...
 
virtual int IsSimetric () const override
 declare the object as simetric matrix More...
 
virtual ~TPZSkylMatrix ()
 destructor of the skyline matrix More...
 
virtual void UpdateFrom (TPZAutoPointer< TPZMatrix< TVar > > mat) override
 Updates the values of the matrix based on the values of the matrix. More...
 
template<class TVar2 >
void CopyFrom (TPZSkylMatrix< TVar2 > &orig)
 copy the values from a matrix with a different precision More...
 
int PutVal (const int64_t row, const int64_t col, const TVar &element) override
 Put values without bounds checking
This method is faster than "Put" if DEBUG is defined. More...
 
const TVar & GetVal (const int64_t row, const int64_t col) const override
 Get values without bounds checking
This method is faster than "Get" if DEBUG is defined. More...
 
TVar & operator() (const int64_t row, const int64_t col)
 
virtual TVar & s (const int64_t row, const int64_t col) override
 The operators check on the bounds if the DEBUG variable is defined. More...
 
TVar & operator() (const int64_t row)
 
virtual void MultAdd (const TPZFMatrix< TVar > &x, const TPZFMatrix< TVar > &y, TPZFMatrix< TVar > &z, const TVar alpha, const TVar beta, const int opt=0) const override
 It computes z = beta * y + alpha * opt(this)*x but z and x can not overlap in memory. More...
 
TPZSkylMatrixoperator= (const TPZSkylMatrix< TVar > &A)
 
TPZSkylMatrix operator+ (const TPZSkylMatrix< TVar > &A) const
 
TPZSkylMatrix operator- (const TPZSkylMatrix< TVar > &A) const
 
TPZSkylMatrixoperator+= (const TPZSkylMatrix< TVar > &A)
 
TPZSkylMatrixoperator-= (const TPZSkylMatrix< TVar > &A)
 
TPZSkylMatrix operator* (const TVar v) const
 
TPZSkylMatrixoperator*= (TVar value)
 
TPZSkylMatrix operator- () const
 
int Resize (const int64_t newDim, const int64_t) override
 Redimensions a matriz keeping the previous values. More...
 
int Redim (const int64_t newDim, const int64_t) override
 Redimensions the matrix reinitializing it with zero. More...
 
int Redim (const int64_t newDim)
 
int Zero () override
 Zeroes the matrix. More...
 
void AddKel (TPZFMatrix< TVar > &elmat, TPZVec< int64_t > &sourceindex, TPZVec< int64_t > &destinationindex) override
 Add a contribution of a stiffness matrix. More...
 
virtual void AutoFill (int64_t nrow, int64_t ncol, int symmetric)
 
int ClassId () const override
 Define the class id associated with the class. More...
 
void Read (TPZStream &buf, void *context) override
 Unpacks the object structure from a stream of bytes. More...
 
void Write (TPZStream &buf, int withclassid) const override
 Packs the object structure in a stream of bytes. More...
 
virtual std::string ClassName () const
 
int64_t Size (const int64_t column) const
 
int64_t GetNelemts ()
 
template<>
void AddKel (TPZFMatrix< double > &elmat, TPZVec< int64_t > &source, TPZVec< int64_t > &destination)
 
template<>
void AddKel (TPZFMatrix< float > &elmat, TPZVec< int64_t > &source, TPZVec< int64_t > &destination)
 
template<>
int Decompose_Cholesky (std::list< int64_t > &singular)
 Decomposes the current matrix using Cholesky method. More...
 
template<>
int Decompose_Cholesky (std::list< int64_t > &singular)
 Decomposes the current matrix using Cholesky method. More...
 
template<>
int Decompose_Cholesky (std::list< int64_t > &singular)
 Decomposes the current matrix using Cholesky method. More...
 
template<>
int Decompose_Cholesky ()
 Decomposes the current matrix using Cholesky method. The current matrix has to be symmetric. More...
 
template<>
int Decompose_Cholesky ()
 Decomposes the current matrix using Cholesky method. The current matrix has to be symmetric. More...
 
template<>
int Decompose_Cholesky ()
 Decomposes the current matrix using Cholesky method. The current matrix has to be symmetric. More...
 
template<>
int Decompose_Cholesky_blk (int64_t blk_sz)
 
template<>
int Decompose_Cholesky_blk (int64_t blk_sz)
 
template<>
int Decompose_Cholesky_blk (int64_t blk_sz)
 
virtual void SolveSOR (int64_t &numiterations, const TPZFMatrix< TVar > &F, TPZFMatrix< TVar > &result, TPZFMatrix< TVar > *residual, TPZFMatrix< TVar > &scratch, const REAL overrelax, REAL &tol, const int FromCurrent=0, const int direction=1) override
 Solves the linear system using Successive Over Relaxation method (Gauss Seidel).
. More...
 
int Decompose_Cholesky () override
 Decomposes the current matrix using Cholesky method. The current matrix has to be symmetric. More...
 
int Decompose_Cholesky_blk (int64_t blk_sz)
 
int Decompose_LDLt () override
 Decomposes the current matrix using LDLt. More...
 
int Decompose_Cholesky (std::list< int64_t > &singular) override
 Decomposes the current matrix using Cholesky method. More...
 
int Decompose_LDLt (std::list< int64_t > &singular) override
 Decomposes the current matrix using LDLt.
The current matrix has to be symmetric. "L" is lower triangular with 1.0 in its diagonal and "D" is a Diagonal matrix. More...
 
int Subst_Forward (TPZFMatrix< TVar > *b) const override
 Computes B = Y, where A*Y = B, A is lower triangular. More...
 
int Subst_Backward (TPZFMatrix< TVar > *b) const override
 Computes B = Y, where A*Y = B, A is upper triangular. More...
 
int Subst_LForward (TPZFMatrix< TVar > *b) const override
 Computes B = Y, where A*Y = B, A is lower triangular with A(i,i)=1. More...
 
int Subst_LBackward (TPZFMatrix< TVar > *b) const override
 Computes B = Y, where A*Y = B, A is upper triangular with A(i,i)=1. More...
 
int Subst_Diag (TPZFMatrix< TVar > *b) const override
 Computes B = Y, where A*Y = B, A is diagonal matrix. More...
 
- Public Member Functions inherited from TPZMatrix< TVar >
 TPZMatrix ()
 Simple constructor. More...
 
 TPZMatrix (const TPZMatrix< TVar > &cp)
 
virtual ~TPZMatrix ()
 Simple destructor. More...
 
virtual TPZMatrix< TVar > * Clone () const =0
 
template<class TVar2 >
void CopyFrom (TPZMatrix< TVar2 > &copy)
 
void AutoFill (int64_t nrow, int64_t ncol, int symmetric)
 Fill matrix storage with randomic values. More...
 
virtual int VerifySymmetry (REAL tol=1.e-13) const
 Checks if current matrix value is symmetric. More...
 
virtual int Put (const int64_t row, const int64_t col, const TVar &value)
 Put values with bounds checking if DEBUG variable is defined. More...
 
virtual const TVar & Get (const int64_t row, const int64_t col) const
 Get value with bound checking. More...
 
const TVar & g (const int64_t row, const int64_t col) const
 Substitution for the () operator when const arguments are needed. More...
 
TVar & operator() (const int64_t row, const int64_t col)
 The operators check on the bounds if the DEBUG variable is defined. More...
 
TVar & operator() (const int64_t row)
 The operators check on the bounds if the DEBUG variable is defined. More...
 
virtual void AddKel (TPZFMatrix< TVar > &elmat, TPZVec< int64_t > &destinationindex)
 Add a contribution of a stiffness matrix. More...
 
void SetIsDecomposed (int val)
 Sets current matrix to decomposed state. More...
 
virtual bool Compare (TPZSavable *copy, bool override=false) override
 Compare the object for identity with the object pointed to, eventually copy the object. More...
 
virtual bool Compare (TPZSavable *copy, bool override=false) const override
 Compare the object for identity with the object pointed to, eventually copy the object. More...
 
virtual void GetSub (const TPZVec< int64_t > &indices, TPZFMatrix< TVar > &block) const
 Extract the block indicated by the indices from the matrix. More...
 
bool CompareValues (TPZMatrix< TVar > &M, TVar tol)
 Compare values of this to B, with a precision tolerance tol. More...
 
template<>
void Print (const char *name, std::ostream &out, const MatrixOutputFormat form) const
 
template<>
void Print (const char *name, std::ostream &out, const MatrixOutputFormat form) const
 
template<>
void Print (const char *name, std::ostream &out, const MatrixOutputFormat form) const
 
template<>
void SolveCG (int64_t &numiterations, TPZSolver< std::complex< float > > &preconditioner, const TPZFMatrix< std::complex< float > > &F, TPZFMatrix< std::complex< float > > &result, TPZFMatrix< std::complex< float > > *residual, REAL &tol, const int FromCurrent)
 
template<>
void SolveCG (int64_t &numiterations, TPZSolver< std::complex< double > > &preconditioner, const TPZFMatrix< std::complex< double > > &F, TPZFMatrix< std::complex< double > > &result, TPZFMatrix< std::complex< double > > *residual, REAL &tol, const int FromCurrent)
 
template<>
void SolveCG (int64_t &numiterations, TPZSolver< std::complex< long double > > &preconditioner, const TPZFMatrix< std::complex< long double > > &F, TPZFMatrix< std::complex< long double > > &result, TPZFMatrix< std::complex< long double > > *residual, REAL &tol, const int FromCurrent)
 
template<>
void SolveGMRES (int64_t &numiterations, TPZSolver< std::complex< float > > &preconditioner, TPZFMatrix< std::complex< float > > &H, int &numvectors, const TPZFMatrix< std::complex< float > > &F, TPZFMatrix< std::complex< float > > &result, TPZFMatrix< std::complex< float > > *residual, REAL &tol, const int FromCurrent)
 
template<>
void SolveGMRES (int64_t &numiterations, TPZSolver< std::complex< double > > &preconditioner, TPZFMatrix< std::complex< double > > &H, int &numvectors, const TPZFMatrix< std::complex< double > > &F, TPZFMatrix< std::complex< double > > &result, TPZFMatrix< std::complex< double > > *residual, REAL &tol, const int FromCurrent)
 
template<>
void SolveGMRES (int64_t &numiterations, TPZSolver< std::complex< long double > > &preconditioner, TPZFMatrix< std::complex< long double > > &H, int &numvectors, const TPZFMatrix< std::complex< long double > > &F, TPZFMatrix< std::complex< long double > > &result, TPZFMatrix< std::complex< long double > > *residual, REAL &tol, const int FromCurrent)
 
template<>
void SolveBICG (int64_t &numiterations, TPZSolver< std::complex< float > > &preconditioner, const TPZFMatrix< std::complex< float > > &F, TPZFMatrix< std::complex< float > > &result, REAL &tol)
 
template<>
void SolveBICG (int64_t &numiterations, TPZSolver< std::complex< double > > &preconditioner, const TPZFMatrix< std::complex< double > > &F, TPZFMatrix< std::complex< double > > &result, REAL &tol)
 
template<>
void SolveBICG (int64_t &numiterations, TPZSolver< std::complex< long double > > &preconditioner, const TPZFMatrix< std::complex< long double > > &F, TPZFMatrix< std::complex< long double > > &result, REAL &tol)
 
template<>
void SolveBICGStab (int64_t &numiterations, TPZSolver< std::complex< float > > &preconditioner, const TPZFMatrix< std::complex< float > > &F, TPZFMatrix< std::complex< float > > &result, TPZFMatrix< std::complex< float > > *residual, REAL &tol, const int FromCurrent)
 
template<>
void SolveBICGStab (int64_t &numiterations, TPZSolver< std::complex< double > > &preconditioner, const TPZFMatrix< std::complex< double > > &F, TPZFMatrix< std::complex< double > > &result, TPZFMatrix< std::complex< double > > *residual, REAL &tol, const int FromCurrent)
 
template<>
void SolveBICGStab (int64_t &numiterations, TPZSolver< std::complex< long double > > &preconditioner, const TPZFMatrix< std::complex< long double > > &F, TPZFMatrix< std::complex< long double > > &result, TPZFMatrix< std::complex< long double > > *residual, REAL &tol, const int FromCurrent)
 
template<>
void SolveIR (int64_t &numiterations, TPZSolver< std::complex< float > > &preconditioner, const TPZFMatrix< std::complex< float > > &F, TPZFMatrix< std::complex< float > > &result, TPZFMatrix< std::complex< float > > *residual, REAL &tol, const int FromCurrent)
 
template<>
void SolveIR (int64_t &numiterations, TPZSolver< std::complex< double > > &preconditioner, const TPZFMatrix< std::complex< double > > &F, TPZFMatrix< std::complex< double > > &result, TPZFMatrix< std::complex< double > > *residual, REAL &tol, const int FromCurrent)
 
template<>
void SolveIR (int64_t &numiterations, TPZSolver< std::complex< long double > > &preconditioner, const TPZFMatrix< std::complex< long double > > &F, TPZFMatrix< std::complex< long double > > &result, TPZFMatrix< std::complex< long double > > *residual, REAL &tol, const int FromCurrent)
 
template<>
bool SolveEigenvaluesJacobi (int64_t &numiterations, REAL &tol, TPZVec< std::complex< float > > *Sort)
 
template<>
bool SolveEigenvaluesJacobi (int64_t &numiterations, REAL &tol, TPZVec< std::complex< double > > *Sort)
 
template<>
bool SolveEigenvaluesJacobi (int64_t &numiterations, REAL &tol, TPZVec< std::complex< long double > > *Sort)
 
virtual void Multiply (const TPZFMatrix< TVar > &A, TPZFMatrix< TVar > &res, int opt=0) const
 It mutiplies itself by TPZMatrix<TVar>A putting the result in res. More...
 
virtual void Add (const TPZMatrix< TVar > &A, TPZMatrix< TVar > &res) const
 It adds itself to TPZMatrix<TVar>A putting the result in res. More...
 
virtual void Residual (const TPZFMatrix< TVar > &x, const TPZFMatrix< TVar > &rhs, TPZFMatrix< TVar > &res)
 Computes res = rhs - this * x. More...
 
virtual void Substract (const TPZMatrix< TVar > &A, TPZMatrix< TVar > &result) const
 It substracts A from storing the result in result. More...
 
virtual void Identity ()
 Converts the matrix in an identity matrix. More...
 
virtual void Transpose (TPZMatrix< TVar > *const T) const
 It makes *T the transpose of current matrix. More...
 
int Inverse (TPZFMatrix< TVar > &Inv, DecomposeType dec)
 It makes Inv =[this]. IMPORTANT OBSERVATION –> The original matrix (calling object) no is more equal. It containts the some decomposition (LU or Cholesky or ...) More...
 
TVar MatrixNorm (int p, int64_t numiter=2000000, REAL tol=1.e-10) const
 Computes the matrix norm of this. More...
 
TVar ConditionNumber (int p, int64_t numiter=2000000, REAL tol=1.e-10)
 Computes the matrix condition number of this. More...
 
virtual int PutSub (const int64_t sRow, const int64_t sCol, const TPZFMatrix< TVar > &Source)
 It puts submatrix Source on actual matrix structure. More...
 
virtual int GetSub (const int64_t sRow, const int64_t sCol, const int64_t rowSize, const int64_t colSize, TPZFMatrix< TVar > &Target) const
 Gets submatrix storing it on Target. More...
 
virtual int AddSub (const int64_t sRow, const int64_t sCol, const TPZFMatrix< TVar > &Source)
 It adds Source matrix on current matrix from position (sRow, sCol) More...
 
virtual int InsertSub (const int64_t sRow, const int64_t sCol, const int64_t rowSize, const int64_t colSize, const int64_t pRow, const int64_t pCol, TPZMatrix< TVar > *Target) const
 Inserts a submatrix from current object on matrix *Target with no
redimentioning. More...
 
virtual int AddSub (const int64_t sRow, const int64_t sCol, const int64_t rowSize, const int64_t colSize, const int64_t pRow, const int64_t pCol, TPZMatrix< TVar > *pA) const
 Adds a submatrix from current object in *Target. More...
 
int IsSquare () const
 Checks if current matrix is square. More...
 
virtual void Simetrize ()
 Simetrizes copies upper plan to the lower plan, making its data simetric. More...
 
virtual int IsDefPositive () const
 Checks if current matrix is definite positive. More...
 
int IsDecomposed () const
 Checks if current matrix is already decomposed. More...
 
virtual int Decompose_LU (std::list< int64_t > &singular)
 Decomposes the current matrix using LU decomposition. More...
 
virtual int Decompose_LU ()
 
virtual int Substitution (TPZFMatrix< TVar > *B) const
 Computes Forward and Backward substitution for a "LU" decomposed matrix. More...
 
virtual void Input (std::istream &in=std::cin)
 Input operation. More...
 
virtual void Print (std::ostream &out) const
 
virtual void Print (const char *name, std::ostream &out=std::cout, const MatrixOutputFormat form=EFormatted) const
 It prints the matrix data in a MatrixFormat Rows X Cols. More...
 
int64_t Rows () const
 Returns number of rows. More...
 
int64_t Cols () const
 Returns number of cols. More...
 
virtual int64_t Dim () const
 Returns the dimension of the matrix if the matrix is square. More...
 
virtual void SolveJacobi (int64_t &numiterations, const TPZFMatrix< TVar > &F, TPZFMatrix< TVar > &result, TPZFMatrix< TVar > *residual, TPZFMatrix< TVar > &scratch, REAL &tol, const int FromCurrent=0)
 Solves the linear system using Jacobi method.
. More...
 
virtual void SolveSSOR (int64_t &numiterations, const TPZFMatrix< TVar > &F, TPZFMatrix< TVar > &result, TPZFMatrix< TVar > *residual, TPZFMatrix< TVar > &scratch, const REAL overrelax, REAL &tol, const int FromCurrent=0)
 Solves the linear system using Symmetric Successive Over Relaxation method (Gauss Seidel).
. More...
 
virtual void SolveCG (int64_t &numiterations, TPZSolver< TVar > &preconditioner, const TPZFMatrix< TVar > &F, TPZFMatrix< TVar > &result, TPZFMatrix< TVar > *residual, REAL &tol, const int FromCurrent=0)
 Solves the linear system using Conjugate Gradient method.
. More...
 
virtual void SolveBICG (int64_t &numiterations, TPZSolver< TVar > &preconditioner, const TPZFMatrix< TVar > &F, TPZFMatrix< TVar > &result, REAL &tol)
 Solves the linear system using Bi-Conjugate Gradient method.
. More...
 
virtual void SolveBICGStab (int64_t &numiterations, TPZSolver< TVar > &preconditioner, const TPZFMatrix< TVar > &F, TPZFMatrix< TVar > &result, TPZFMatrix< TVar > *residual, REAL &tol, const int FromCurrent=0)
 Solves the linear system using Bi-Conjugate Gradient stabilized method.
. More...
 
virtual void SolveGMRES (int64_t &numiterations, TPZSolver< TVar > &preconditioner, TPZFMatrix< TVar > &H, int &numvectors, const TPZFMatrix< TVar > &F, TPZFMatrix< TVar > &result, TPZFMatrix< TVar > *residual, REAL &tol, const int FromCurrent)
 Solves the linear system using Generalized Minimal Residual (GMRES) method.
. More...
 
virtual void SolveIR (int64_t &numiterations, TPZSolver< TVar > &preconditioner, const TPZFMatrix< TVar > &F, TPZFMatrix< TVar > &result, TPZFMatrix< TVar > *residual, REAL &tol, const int FromCurrent=0)
 Solves the linear system using IR method.
. More...
 
virtual bool SolveEigenvaluesJacobi (int64_t &numiterations, REAL &tol, TPZVec< TVar > *Sort=0)
 Transforms this matrix in a diagonal matrix, where the diagonal values are its eigenvalues. This method is efficient only for small matrices. More...
 
virtual bool SolveEigensystemJacobi (int64_t &numiterations, REAL &tol, TPZVec< TVar > &Eigenvalues, TPZFMatrix< TVar > &Eigenvectors) const
 Compute Eigenvalues and Eigenvectors of this matrix.
This method is efficient only for small matrices. More...
 
virtual int SolveDirect (TPZFMatrix< TVar > &F, const DecomposeType dt, std::list< int64_t > &singular)
 Solves the linear system using Direct methods. More...
 
virtual int SolveDirect (TPZFMatrix< TVar > &F, const DecomposeType dt)
 Solves the linear system using Direct methods. More...
 
virtual int Decompose (const DecomposeType dt, std::list< int64_t > &singular)
 decompose the system of equations acording to the decomposition scheme More...
 
int Solve_LU (TPZFMatrix< TVar > *B, std::list< int64_t > &singular)
 Solves the linear system using LU method
. More...
 
int Solve_LU (TPZFMatrix< TVar > *B)
 Solves the linear system using LU method
. More...
 
virtual int Solve_Cholesky (TPZFMatrix< TVar > *B)
 Solves the linear system using Cholesky method
. More...
 
int Solve_Cholesky (TPZFMatrix< TVar > *B, std::list< int64_t > &singular)
 Solves the linear system using Cholesky method
. More...
 
int Solve_LDLt (TPZFMatrix< TVar > *B, std::list< int64_t > &singular)
 Solves the linear system using LDLt method
. More...
 
int Solve_LDLt (TPZFMatrix< TVar > *B)
 Solves the linear system using LDLt method
. More...
 
- Public Member Functions inherited from TPZSavable
 TPZSavable ()
 
virtual ~TPZSavable ()
 
virtual std::list< std::map< std::string, uint64_t > > VersionHistory () const
 
virtual std::pair< std::string, uint64_t > Version () const
 
- Public Member Functions inherited from TPZRegisterClassId
template<typename T >
 TPZRegisterClassId (int(T::*)() const)
 
 TPZRegisterClassId ()=default
 

Protected Member Functions

TVar * Diag (int64_t col)
 This method returns a pointer to the diagonal element of the matrix of the col column. More...
 
void DecomposeColumn (int64_t col, int64_t prevcol)
 
void DecomposeColumn (int64_t col, int64_t prevcol, std::list< int64_t > &singular)
 
void DecomposeColumn2 (int64_t col, int64_t prevcol)
 
template<>
void DecomposeColumn (int64_t col, int64_t prevcol, std::list< int64_t > &singular)
 
template<>
void DecomposeColumn (int64_t col, int64_t prevcol, std::list< int64_t > &singular)
 
template<>
void DecomposeColumn (int64_t col, int64_t prevcol, std::list< int64_t > &singular)
 
template<>
void DecomposeColumn2 (int64_t col, int64_t prevcol)
 
template<>
void DecomposeColumn2 (int64_t col, int64_t prevcol)
 
template<>
void DecomposeColumn2 (int64_t col, int64_t prevcol)
 
- Protected Member Functions inherited from TPZMatrix< TVar >
void PrepareZ (const TPZFMatrix< TVar > &y, TPZFMatrix< TVar > &z, const TVar beta, const int opt) const
 Is an auxiliar method used by MultiplyAdd. More...
 
 TPZMatrix (const int64_t row, const int64_t col)
 Constructor. More...
 

Protected Attributes

TPZVec< TVar * > fElem
 Storage to keep the first elements to each equation. More...
 
- Protected Attributes inherited from TPZMatrix< TVar >
int64_t fRow
 Number of rows in matrix. More...
 
int64_t fCol
 Number of cols in matrix. More...
 
char fDecomposed
 Decomposition type used to decompose the current matrix. More...
 
char fDefPositive
 Definite Posistiveness of current matrix. More...
 

Private Member Functions

int Clear () override
 It clears data structure. More...
 
void Copy (const TPZSkylMatrix< TVar > &)
 
void MigratePages ()
 
void ReallocForNuma ()
 

Static Private Member Functions

static int64_t NumElements (const TPZVec< int64_t > &skyline)
 
static void InitializeElem (const TPZVec< int64_t > &skyline, TPZVec< TVar > &storage, TPZVec< TVar *> &elem)
 
static void ComputeMaxSkyline (const TPZSkylMatrix< TVar > &first, const TPZSkylMatrix< TVar > &second, TPZVec< int64_t > &res)
 Computes the highest skyline of both objects. More...
 

Private Attributes

TPZVec< TVar > fStorage
 fStorage is a unique vector which contains all the data of the skyline matrix More...
 

Friends

class TPZSkylMatrix< float >
 
class TPZSkylMatrix< double >
 

Additional Inherited Members

- Static Public Member Functions inherited from TPZMatrix< TVar >
static int Error (const char *msg, const char *msg2=0)
 Returns error messages. More...
 
static TVar ReturnNearestValue (TVar val, TPZVec< TVar > &Vec, TVar tol)
 Retorna o valor mais proximo a "val" (exceto valores no intervalo -tol <= val <= +tol) contido no vetor Vec. More...
 
- Static Public Member Functions inherited from TPZSavable
static std::set< TPZRestoreClassBase * > & RestoreClassSet ()
 This static function guarantees that the gMap object is available when needed. More...
 
static std::map< int, TPZRestore_t > & ClassIdMap ()
 This static function guarantees that the gMap object is available when needed. More...
 
static std::pair< std::string, uint64_t > NeoPZVersion ()
 
static void Register (TPZRestoreClassBase *restore)
 
static void RegisterClassId (int classid, TPZRestore_t fun)
 
static TPZSavableCreateInstance (const int &classId)
 
- Static Protected Member Functions inherited from TPZMatrix< TVar >
static void Swap (int64_t *a, int64_t *b)
 Swaps contents of a in b and b in a. More...
 
- Static Protected Attributes inherited from TPZMatrix< TVar >
static TVar gZero
 Initializing value to static variable. More...
 

Detailed Description

template<class TVar>
class TPZSkylMatrix< TVar >

Implements a skyline storage format. A Skyline matrix is symmetric so square. Matrix.

Note
Esta classe gerencia matrizes do tipo SkyLine. Todas matrizes SkyLine sao simetricas (e portanto quadradas).

Definition at line 394 of file pzskylmat.h.

Constructor & Destructor Documentation

◆ TPZSkylMatrix() [1/4]

template<class TVar>
TPZSkylMatrix< TVar >::TPZSkylMatrix ( )
inline

Definition at line 397 of file pzskylmat.h.

◆ TPZSkylMatrix() [2/4]

template<class TVar >
TPZSkylMatrix< TVar >::TPZSkylMatrix ( const int64_t  dim)

Definition at line 1729 of file pzskylmat.cpp.

References TPZSkylMatrix< TVar >::fElem, and TPZVec< T >::Fill().

◆ TPZSkylMatrix() [3/4]

template<class TVar >
TPZSkylMatrix< TVar >::TPZSkylMatrix ( const int64_t  dim,
const TPZVec< int64_t > &  skyline 
)

Construct a skyline matrix of dimension dim skyline indicates the minimum row number which will be accessed by each equation.

Definition at line 1737 of file pzskylmat.cpp.

References TPZSkylMatrix< TVar >::fElem, TPZVec< T >::Fill(), TPZSkylMatrix< TVar >::fStorage, and TPZSkylMatrix< TVar >::InitializeElem().

◆ TPZSkylMatrix() [4/4]

template<class TVar>
TPZSkylMatrix< TVar >::TPZSkylMatrix ( const TPZSkylMatrix< TVar > &  A)
inline

Definition at line 404 of file pzskylmat.h.

References CLONEDEF, and TPZSkylMatrix< TVar >::Copy().

◆ ~TPZSkylMatrix()

template<class TVar>
virtual TPZSkylMatrix< TVar >::~TPZSkylMatrix ( )
inlinevirtual

destructor of the skyline matrix

Definition at line 433 of file pzskylmat.h.

References TPZSkylMatrix< TVar >::Clear(), and TPZSkylMatrix< TVar >::UpdateFrom().

Member Function Documentation

◆ AddKel() [1/3]

template<class TVar >
void TPZSkylMatrix< TVar >::AddKel ( TPZFMatrix< TVar > &  elmat,
TPZVec< int64_t > &  sourceindex,
TPZVec< int64_t > &  destinationindex 
)
overridevirtual

Add a contribution of a stiffness matrix.

Parameters
elmatElement matrix to be contributed
sourceindexContains source indexes on current matrix
destinationindexContains destine indexes on current matrix

Reimplemented from TPZMatrix< TVar >.

Definition at line 2259 of file pzskylmat.cpp.

References DebugStop, TPZMatrix< TVar >::Dim(), TPZSkylMatrix< TVar >::fElem, TPZVec< T >::NElements(), TPZSkylMatrix< TVar >::Size(), and TPZMatrix< TVar >::Swap().

Referenced by TPZSkylMatrix< TVar >::Redim().

◆ AddKel() [2/3]

template<>
void TPZSkylMatrix< double >::AddKel ( TPZFMatrix< double > &  elmat,
TPZVec< int64_t > &  source,
TPZVec< int64_t > &  destination 
)

◆ AddKel() [3/3]

template<>
void TPZSkylMatrix< float >::AddKel ( TPZFMatrix< float > &  elmat,
TPZVec< int64_t > &  source,
TPZVec< int64_t > &  destination 
)

◆ AddSameStruct()

template<class TVar >
void TPZSkylMatrix< TVar >::AddSameStruct ( TPZSkylMatrix< TVar > &  B,
double  k = 1. 
)

Add a skyline matrix B with same structure of this It makes this += k * B.

Definition at line 1747 of file pzskylmat.cpp.

References DebugStop, TPZSkylMatrix< TVar >::fElem, TPZSkylMatrix< TVar >::fStorage, TPZVec< T >::NElements(), and PZError.

Referenced by TPZSkylMatrix< TVar >::SkyHeight().

◆ AutoFill()

template<class TVar >
void TPZSkylMatrix< TVar >::AutoFill ( int64_t  nrow,
int64_t  ncol,
int  symmetric 
)
virtual

◆ ClassId()

template<class TVar >
int TPZSkylMatrix< TVar >::ClassId ( ) const
overridevirtual

Define the class id associated with the class.

This id has to be unique for all classes A non unique id is flagged at the startup of the program

Reimplemented from TPZMatrix< TVar >.

Reimplemented in TPZSkylParMatrix< TVar >.

Definition at line 629 of file pzskylmat.h.

References TPZMatrix< TVar >::ClassId(), and Hash().

Referenced by TPZSkylParMatrix< TVar >::ClassId(), and TPZSkylMatrix< TVar >::Redim().

◆ ClassName()

template<class TVar>
virtual std::string TPZSkylMatrix< TVar >::ClassName ( ) const
inlinevirtual

Definition at line 555 of file pzskylmat.h.

◆ Clear()

template<class TVar >
int TPZSkylMatrix< TVar >::Clear ( )
overrideprivatevirtual

◆ ComputeMaxSkyline()

template<class TVar >
void TPZSkylMatrix< TVar >::ComputeMaxSkyline ( const TPZSkylMatrix< TVar > &  first,
const TPZSkylMatrix< TVar > &  second,
TPZVec< int64_t > &  res 
)
staticprivate

Computes the highest skyline of both objects.

Computes the highest skyline of both objects

Definition at line 1838 of file pzskylmat.cpp.

References TPZVec< T >::Resize(), TPZMatrix< TVar >::Rows(), and TPZSkylMatrix< TVar >::Size().

Referenced by TPZSkylMatrix< TVar >::Diag(), TPZSkylMatrix< TVar >::operator+(), and TPZSkylMatrix< TVar >::operator-().

◆ Copy()

template<class TVar >
void TPZSkylMatrix< TVar >::Copy ( const TPZSkylMatrix< TVar > &  A)
private

◆ CopyFrom()

template<class TVar>
template<class TVar2 >
void TPZSkylMatrix< TVar >::CopyFrom ( TPZSkylMatrix< TVar2 > &  orig)
inline

◆ Decompose_Cholesky() [1/8]

template<class TVar >
int TPZSkylMatrix< TVar >::Decompose_Cholesky ( )
overridevirtual

◆ Decompose_Cholesky() [2/8]

template<class TVar >
int TPZSkylMatrix< TVar >::Decompose_Cholesky ( std::list< int64_t > &  singular)
overridevirtual

◆ Decompose_Cholesky() [3/8]

template<>
int TPZSkylMatrix< std::complex< float > >::Decompose_Cholesky ( std::list< int64_t > &  singular)
virtual

Decomposes the current matrix using Cholesky method.

Parameters
singular

Reimplemented from TPZMatrix< TVar >.

Definition at line 2534 of file pzskylmat.cpp.

References DebugStop.

◆ Decompose_Cholesky() [4/8]

template<>
int TPZSkylMatrix< std::complex< double > >::Decompose_Cholesky ( std::list< int64_t > &  singular)
virtual

Decomposes the current matrix using Cholesky method.

Parameters
singular

Reimplemented from TPZMatrix< TVar >.

Definition at line 2541 of file pzskylmat.cpp.

References DebugStop.

◆ Decompose_Cholesky() [5/8]

template<>
int TPZSkylMatrix< std::complex< long double > >::Decompose_Cholesky ( std::list< int64_t > &  singular)
virtual

Decomposes the current matrix using Cholesky method.

Parameters
singular

Reimplemented from TPZMatrix< TVar >.

Definition at line 2548 of file pzskylmat.cpp.

References DebugStop.

◆ Decompose_Cholesky() [6/8]

template<>
int TPZSkylMatrix< std::complex< float > >::Decompose_Cholesky ( )
virtual

Decomposes the current matrix using Cholesky method. The current matrix has to be symmetric.

Reimplemented from TPZMatrix< TVar >.

Definition at line 2645 of file pzskylmat.cpp.

References DebugStop.

◆ Decompose_Cholesky() [7/8]

template<>
int TPZSkylMatrix< std::complex< double > >::Decompose_Cholesky ( )
virtual

Decomposes the current matrix using Cholesky method. The current matrix has to be symmetric.

Reimplemented from TPZMatrix< TVar >.

Definition at line 2651 of file pzskylmat.cpp.

References DebugStop.

◆ Decompose_Cholesky() [8/8]

template<>
int TPZSkylMatrix< std::complex< long double > >::Decompose_Cholesky ( )
virtual

Decomposes the current matrix using Cholesky method. The current matrix has to be symmetric.

Reimplemented from TPZMatrix< TVar >.

Definition at line 2657 of file pzskylmat.cpp.

References clk_mig, clk_rea, and DebugStop.

◆ Decompose_Cholesky_blk() [1/4]

template<class TVar >
int TPZSkylMatrix< TVar >::Decompose_Cholesky_blk ( int64_t  blk_sz)

◆ Decompose_Cholesky_blk() [2/4]

template<>
int TPZSkylMatrix< std::complex< float > >::Decompose_Cholesky_blk ( int64_t  blk_sz)

Definition at line 2790 of file pzskylmat.cpp.

References DebugStop.

◆ Decompose_Cholesky_blk() [3/4]

template<>
int TPZSkylMatrix< std::complex< double > >::Decompose_Cholesky_blk ( int64_t  blk_sz)

Definition at line 2796 of file pzskylmat.cpp.

References DebugStop.

◆ Decompose_Cholesky_blk() [4/4]

template<>
int TPZSkylMatrix< std::complex< long double > >::Decompose_Cholesky_blk ( int64_t  blk_sz)

Definition at line 2802 of file pzskylmat.cpp.

References DebugStop.

◆ Decompose_LDLt() [1/2]

template<class TVar >
int TPZSkylMatrix< TVar >::Decompose_LDLt ( )
overridevirtual

◆ Decompose_LDLt() [2/2]

template<class TVar >
int TPZSkylMatrix< TVar >::Decompose_LDLt ( std::list< int64_t > &  singular)
overridevirtual

Decomposes the current matrix using LDLt.
The current matrix has to be symmetric. "L" is lower triangular with 1.0 in its diagonal and "D" is a Diagonal matrix.

Reimplemented from TPZMatrix< TVar >.

Reimplemented in TPZSkylParMatrix< TVar >.

Definition at line 2893 of file pzskylmat.cpp.

References TPZMatrix< TVar >::Dim(), ELDLt, TPZMatrix< TVar >::Error(), TPZMatrix< TVar >::fDecomposed, TPZMatrix< TVar >::fDefPositive, TPZSkylMatrix< TVar >::fElem, TPZSkylMatrix< TVar >::GetVal(), IsZero(), TPZSkylMatrix< TVar >::PutVal(), TPZMatrix< TVar >::Rows(), and TPZSkylMatrix< TVar >::Size().

◆ DecomposeColumn() [1/5]

template<class TVar >
void TPZSkylMatrix< TVar >::DecomposeColumn ( int64_t  col,
int64_t  prevcol 
)
protected

◆ DecomposeColumn() [2/5]

template<class TVar >
void TPZSkylMatrix< TVar >::DecomposeColumn ( int64_t  col,
int64_t  prevcol,
std::list< int64_t > &  singular 
)
protected

◆ DecomposeColumn() [3/5]

template<>
void TPZSkylMatrix< std::complex< float > >::DecomposeColumn ( int64_t  col,
int64_t  prevcol,
std::list< int64_t > &  singular 
)
protected

Definition at line 3341 of file pzskylmat.cpp.

References DebugStop.

◆ DecomposeColumn() [4/5]

template<>
void TPZSkylMatrix< std::complex< double > >::DecomposeColumn ( int64_t  col,
int64_t  prevcol,
std::list< int64_t > &  singular 
)
protected

Definition at line 3346 of file pzskylmat.cpp.

References DebugStop.

◆ DecomposeColumn() [5/5]

template<>
void TPZSkylMatrix< std::complex< long double > >::DecomposeColumn ( int64_t  col,
int64_t  prevcol,
std::list< int64_t > &  singular 
)
protected

Definition at line 3351 of file pzskylmat.cpp.

References DebugStop.

◆ DecomposeColumn2() [1/4]

template<class TVar >
void TPZSkylMatrix< TVar >::DecomposeColumn2 ( int64_t  col,
int64_t  prevcol 
)
protected

◆ DecomposeColumn2() [2/4]

template<>
void TPZSkylMatrix< std::complex< float > >::DecomposeColumn2 ( int64_t  col,
int64_t  prevcol 
)
protected

Definition at line 3406 of file pzskylmat.cpp.

References DebugStop.

◆ DecomposeColumn2() [3/4]

template<>
void TPZSkylMatrix< std::complex< double > >::DecomposeColumn2 ( int64_t  col,
int64_t  prevcol 
)
protected

Definition at line 3411 of file pzskylmat.cpp.

References DebugStop.

◆ DecomposeColumn2() [4/4]

template<>
void TPZSkylMatrix< std::complex< long double > >::DecomposeColumn2 ( int64_t  col,
int64_t  prevcol 
)
protected

Definition at line 3417 of file pzskylmat.cpp.

References DebugStop.

◆ Diag()

template<class TVar>
TVar* TPZSkylMatrix< TVar >::Diag ( int64_t  col)
inlineprotected

◆ GetNelemts()

template<class TVar>
int64_t TPZSkylMatrix< TVar >::GetNelemts ( )
inline

Definition at line 568 of file pzskylmat.h.

References TPZSkylMatrix< TVar >::fStorage, and TPZVec< T >::size().

◆ GetVal()

template<class TVar >
const TVar & TPZSkylMatrix< TVar >::GetVal ( const int64_t  ,
const int64_t   
) const
overridevirtual

◆ InitializeElem()

template<class TVar >
void TPZSkylMatrix< TVar >::InitializeElem ( const TPZVec< int64_t > &  skyline,
TPZVec< TVar > &  storage,
TPZVec< TVar *> &  elem 
)
staticprivate

◆ IsSimetric()

template<class TVar>
virtual int TPZSkylMatrix< TVar >::IsSimetric ( ) const
inlineoverridevirtual

declare the object as simetric matrix

Reimplemented from TPZMatrix< TVar >.

Definition at line 430 of file pzskylmat.h.

◆ MemoryFootprint()

template<class TVar>
virtual int64_t TPZSkylMatrix< TVar >::MemoryFootprint ( ) const
inlineoverridevirtual

Returns the approximate size of the memory footprint (amount of memory required to store this object).

Reimplemented from TPZMatrix< TVar >.

Definition at line 408 of file pzskylmat.h.

References TPZSkylMatrix< TVar >::fElem, TPZSkylMatrix< TVar >::fStorage, TPZSkylMatrix< TVar >::SetSkyline(), and TPZVec< T >::size().

Referenced by wayToSort().

◆ MigratePages()

template<class TVar>
void TPZSkylMatrix< TVar >::MigratePages ( )
inlineprivate

◆ MultAdd()

template<class TVar >
void TPZSkylMatrix< TVar >::MultAdd ( const TPZFMatrix< TVar > &  x,
const TPZFMatrix< TVar > &  y,
TPZFMatrix< TVar > &  z,
const TVar  alpha,
const TVar  beta,
const int  opt = 0 
) const
overridevirtual

It computes z = beta * y + alpha * opt(this)*x but z and x can not overlap in memory.

Parameters
xIs x on the above operation
yIs y on the above operation
zIs z on the above operation
alphaIs alpha on the above operation
betaIs beta on the above operation
optIndicates if is Transpose or not

Reimplemented from TPZMatrix< TVar >.

Definition at line 1944 of file pzskylmat.cpp.

References TPZMatrix< TVar >::Cols(), ENoDecompose, TPZMatrix< TVar >::Error(), TPZMatrix< TVar >::fDecomposed, TPZSkylMatrix< TVar >::fElem, TPZFMatrix< TVar >::g(), TPZMatrix< TVar >::PrepareZ(), TPZFMatrix< TVar >::Redim(), TPZMatrix< TVar >::Rows(), TPZSkylMatrix< TVar >::Size(), and val().

Referenced by TPZSkylMatrix< TVar >::CopyFrom(), and main().

◆ NumElements()

template<class TVar >
int64_t TPZSkylMatrix< TVar >::NumElements ( const TPZVec< int64_t > &  skyline)
staticprivate

◆ operator()() [1/2]

template<class TVar >
TVar & TPZSkylMatrix< TVar >::operator() ( const int64_t  row,
const int64_t  col 
)

◆ operator()() [2/2]

template<class TVar >
TVar & TPZSkylMatrix< TVar >::operator() ( const int64_t  row)

Definition at line 1877 of file pzskylmat.cpp.

References TPZSkylMatrix< TVar >::operator()().

◆ operator*()

template<class TVar >
TPZSkylMatrix< TVar > TPZSkylMatrix< TVar >::operator* ( const TVar  v) const

◆ operator*=()

template<class TVar >
TPZSkylMatrix< TVar > & TPZSkylMatrix< TVar >::operator*= ( TVar  value)

◆ operator+()

template<class TVar >
TPZSkylMatrix< TVar > TPZSkylMatrix< TVar >::operator+ ( const TPZSkylMatrix< TVar > &  A) const

◆ operator+=()

template<class TVar >
TPZSkylMatrix< TVar > & TPZSkylMatrix< TVar >::operator+= ( const TPZSkylMatrix< TVar > &  A)

Definition at line 2391 of file pzskylmat.cpp.

References TPZMatrix< TVar >::Dim(), and test::res.

Referenced by TPZSkylMatrix< TVar >::CopyFrom().

◆ operator-() [1/2]

template<class TVar >
TPZSkylMatrix< TVar > TPZSkylMatrix< TVar >::operator- ( const TPZSkylMatrix< TVar > &  A) const

◆ operator-() [2/2]

template<class TVar >
TPZSkylMatrix< TVar > TPZSkylMatrix< TVar >::operator- ( ) const

Definition at line 3267 of file pzskylmat.cpp.

References TPZSkylMatrix< TVar >::operator*().

Referenced by TPZSkylMatrix< TVar >::CopyFrom().

◆ operator-=()

template<class TVar >
TPZSkylMatrix< TVar > & TPZSkylMatrix< TVar >::operator-= ( const TPZSkylMatrix< TVar > &  A)

Definition at line 2406 of file pzskylmat.cpp.

References TPZMatrix< TVar >::Dim(), and test::res.

Referenced by TPZSkylMatrix< TVar >::CopyFrom().

◆ operator=()

template<class TVar >
TPZSkylMatrix< TVar > & TPZSkylMatrix< TVar >::operator= ( const TPZSkylMatrix< TVar > &  A)

◆ PutVal()

template<class TVar >
int TPZSkylMatrix< TVar >::PutVal ( const int64_t  ,
const int64_t  ,
const TVar &  val 
)
overridevirtual

◆ Read()

template<class TVar >
void TPZSkylMatrix< TVar >::Read ( TPZStream buf,
void *  context 
)
overridevirtual

Unpacks the object structure from a stream of bytes.

Parameters
bufThe buffer containing the object in a packed form
context

Reimplemented from TPZMatrix< TVar >.

Definition at line 3270 of file pzskylmat.cpp.

References TPZSkylMatrix< TVar >::fElem, TPZSkylMatrix< TVar >::fStorage, TPZStream::Read(), TPZMatrix< TVar >::Read(), TPZVec< T >::Resize(), and TPZMatrix< TVar >::Rows().

Referenced by main(), read_input_matrix(), TPZSkylMatrix< TVar >::Redim(), and res_check().

◆ ReallocForNuma()

template<class TVar>
void TPZSkylMatrix< TVar >::ReallocForNuma ( )
inlineprivate

◆ Redim() [1/2]

template<class TVar >
int TPZSkylMatrix< TVar >::Redim ( const int64_t  newRows,
const int64_t  newCols 
)
overridevirtual

Redimensions the matrix reinitializing it with zero.

Parameters
newRowsSpecifies the new number of rows in matrix.
newColsSpecifies the new number of Columns in matrix.

Reimplemented from TPZMatrix< TVar >.

Definition at line 2516 of file pzskylmat.cpp.

References TPZSkylMatrix< TVar >::Clear(), TPZMatrix< TVar >::Dim(), TPZMatrix< TVar >::fCol, TPZMatrix< TVar >::fDecomposed, TPZSkylMatrix< TVar >::fElem, TPZVec< T >::Fill(), TPZVec< T >::Resize(), and TPZSkylMatrix< TVar >::Zero().

Referenced by TPZSkylMatrix< TVar >::CopyFrom(), CopyTo(), and TPZMatrixMarket::Read().

◆ Redim() [2/2]

template<class TVar>
int TPZSkylMatrix< TVar >::Redim ( const int64_t  newDim)
inline

◆ Resize()

template<class TVar >
int TPZSkylMatrix< TVar >::Resize ( const int64_t  newRows,
const int64_t  newCols 
)
overridevirtual

Redimensions a matriz keeping the previous values.

Parameters
newRowsSpecifies the new number of rows in matrix
newColsSpecifies the new number of Columns in matrix

Reimplemented from TPZMatrix< TVar >.

Definition at line 2487 of file pzskylmat.cpp.

References TPZMatrix< TVar >::Dim(), TPZMatrix< TVar >::fCol, TPZMatrix< TVar >::fDecomposed, TPZSkylMatrix< TVar >::fElem, TPZSkylMatrix< TVar >::fStorage, MIN, and TPZVec< T >::Resize().

Referenced by TPZSkylMatrix< TVar >::CopyFrom(), and main().

◆ s()

template<class TVar >
TVar & TPZSkylMatrix< TVar >::s ( const int64_t  row,
const int64_t  col 
)
overridevirtual

The operators check on the bounds if the DEBUG variable is defined.

Parameters
rowRow number.
colColumn number.

Reimplemented from TPZMatrix< TVar >.

Definition at line 1871 of file pzskylmat.cpp.

References TPZSkylMatrix< TVar >::operator()().

Referenced by TPZSkylMatrix< TVar >::CopyFrom(), main(), and res_check().

◆ SetSkyline()

template<class TVar >
void TPZSkylMatrix< TVar >::SetSkyline ( const TPZVec< int64_t > &  skyline)

modify the skyline of the matrix, throwing away its values skyline indicates the minimum row number which will be accessed by each equation

Definition at line 1792 of file pzskylmat.cpp.

References DebugStop, TPZSkylMatrix< TVar >::fElem, TPZVec< T >::Fill(), TPZSkylMatrix< TVar >::fStorage, TPZSkylMatrix< TVar >::InitializeElem(), and TPZMatrix< TVar >::Rows().

Referenced by CopyTo(), TPZSkylMatrix< TVar >::MemoryFootprint(), TPZMatrixMarket::Read(), and TPZSkylParMatrix< TVar >::SetSkyline().

◆ Size()

template<class TVar>
int64_t TPZSkylMatrix< TVar >::Size ( const int64_t  column) const
inline

◆ SkyHeight()

template<class TVar>
int64_t TPZSkylMatrix< TVar >::SkyHeight ( int64_t  col)
inline

◆ SolveSOR()

template<class TVar >
void TPZSkylMatrix< TVar >::SolveSOR ( int64_t &  numiterations,
const TPZFMatrix< TVar > &  F,
TPZFMatrix< TVar > &  result,
TPZFMatrix< TVar > *  residual,
TPZFMatrix< TVar > &  scratch,
const REAL  overrelax,
REAL &  tol,
const int  FromCurrent = 0,
const int  direction = 1 
)
overridevirtual

Solves the linear system using Successive Over Relaxation method (Gauss Seidel).
.

Parameters
numiterationsThe number of interations for the process.
FThe right hand side of the system.
resultThe solution.
residualReturns F - A*U which is the solution residual.
scratchAvailable manipulation area on memory.
overrelaxThe over relaxation parameter
tolThe tolerance value..
FromCurrentIt starts the solution based on FromCurrent. Obtaining solution FromCurrent + 1.
directionIndicates interaction direction, from first to last (default 1) or from last to first (-1)

Reimplemented from TPZMatrix< TVar >.

Definition at line 1988 of file pzskylmat.cpp.

References abs(), TPZMatrix< TVar >::Cols(), DebugStop, TPZMatrix< TVar >::Dim(), TPZSkylMatrix< TVar >::fElem, TPZSkylMatrix< TVar >::GetVal(), TPZMatrix< TVar >::gZero, Norm(), test::res, TPZMatrix< TVar >::Residual(), TPZSkylMatrix< TVar >::Size(), sqrt, pzgeom::tol, val(), and TPZFMatrix< TVar >::Zero().

Referenced by main(), and TPZSkylMatrix< TVar >::Redim().

◆ Subst_Backward()

template<class TVar >
int TPZSkylMatrix< TVar >::Subst_Backward ( TPZFMatrix< TVar > *  b) const
overridevirtual

Computes B = Y, where A*Y = B, A is upper triangular.

Parameters
bright hand side and result after all

Reimplemented from TPZMatrix< TVar >.

Definition at line 3086 of file pzskylmat.cpp.

References TPZMatrix< TVar >::Cols(), TPZMatrix< TVar >::Dim(), ECholesky, TPZMatrix< TVar >::Error(), TPZMatrix< TVar >::fDecomposed, TPZSkylMatrix< TVar >::fElem, TPZMatrix< TVar >::Rows(), and val().

Referenced by main(), and TPZSkylMatrix< TVar >::Redim().

◆ Subst_Diag()

template<class TVar >
int TPZSkylMatrix< TVar >::Subst_Diag ( TPZFMatrix< TVar > *  b) const
overridevirtual

Computes B = Y, where A*Y = B, A is diagonal matrix.

Parameters
bright hand side and result after all

Reimplemented from TPZMatrix< TVar >.

Definition at line 3167 of file pzskylmat.cpp.

References TPZMatrix< TVar >::Cols(), TPZMatrix< TVar >::Dim(), ELDLt, TPZMatrix< TVar >::fDecomposed, TPZSkylMatrix< TVar >::fElem, and TPZMatrix< TVar >::Rows().

Referenced by TPZSkylMatrix< TVar >::Redim().

◆ Subst_Forward()

template<class TVar >
int TPZSkylMatrix< TVar >::Subst_Forward ( TPZFMatrix< TVar > *  b) const
overridevirtual

Computes B = Y, where A*Y = B, A is lower triangular.

Parameters
bright hand side and result after all

Reimplemented from TPZMatrix< TVar >.

Definition at line 3034 of file pzskylmat.cpp.

References TPZMatrix< TVar >::Cols(), TPZMatrix< TVar >::Dim(), dimension, ECholesky, TPZMatrix< TVar >::Error(), TPZMatrix< TVar >::fDecomposed, TPZSkylMatrix< TVar >::fElem, and TPZMatrix< TVar >::Rows().

Referenced by main(), and TPZSkylMatrix< TVar >::Redim().

◆ Subst_LBackward()

template<class TVar >
int TPZSkylMatrix< TVar >::Subst_LBackward ( TPZFMatrix< TVar > *  b) const
overridevirtual

Computes B = Y, where A*Y = B, A is upper triangular with A(i,i)=1.

Parameters
bright hand side and result after all

Reimplemented from TPZMatrix< TVar >.

Definition at line 3188 of file pzskylmat.cpp.

References TPZMatrix< TVar >::Cols(), TPZMatrix< TVar >::Dim(), ECholesky, TPZMatrix< TVar >::Error(), TPZMatrix< TVar >::fDecomposed, TPZSkylMatrix< TVar >::fElem, and TPZMatrix< TVar >::Rows().

Referenced by TPZSkylMatrix< TVar >::Redim().

◆ Subst_LForward()

template<class TVar >
int TPZSkylMatrix< TVar >::Subst_LForward ( TPZFMatrix< TVar > *  b) const
overridevirtual

Computes B = Y, where A*Y = B, A is lower triangular with A(i,i)=1.

Parameters
bright hand side and result after all

Reimplemented from TPZMatrix< TVar >.

Definition at line 3135 of file pzskylmat.cpp.

References TPZMatrix< TVar >::Cols(), TPZMatrix< TVar >::Dim(), dimension, ELDLt, ELU, TPZMatrix< TVar >::fDecomposed, TPZSkylMatrix< TVar >::fElem, and TPZMatrix< TVar >::Rows().

Referenced by TPZSkylMatrix< TVar >::Redim().

◆ UpdateFrom()

template<class TVar >
void TPZSkylMatrix< TVar >::UpdateFrom ( TPZAutoPointer< TPZMatrix< TVar > >  mat)
overridevirtual

Updates the values of the matrix based on the values of the matrix.

Reimplemented from TPZMatrix< TVar >.

Definition at line 1775 of file pzskylmat.cpp.

References DebugStop, TPZMatrix< TVar >::fDecomposed, TPZMatrix< TVar >::fDefPositive, TPZSkylMatrix< TVar >::fStorage, matrix, and TPZVec< T >::NElements().

Referenced by TPZSkylMatrix< TVar >::~TPZSkylMatrix().

◆ Write()

template<class TVar >
void TPZSkylMatrix< TVar >::Write ( TPZStream buf,
int  withclassid 
) const
overridevirtual

Packs the object structure in a stream of bytes.

Parameters
bufBuffer which will receive the bytes
withclassid

Reimplemented from TPZMatrix< TVar >.

Definition at line 3287 of file pzskylmat.cpp.

References TPZSkylMatrix< TVar >::fElem, TPZSkylMatrix< TVar >::fStorage, TPZMatrix< TVar >::Rows(), TPZStream::Write(), and TPZMatrix< TVar >::Write().

Referenced by main(), TPZSkylMatrix< TVar >::Redim(), and res_dump().

◆ Zero()

template<class TVar >
int TPZSkylMatrix< TVar >::Zero ( )
overridevirtual

Friends And Related Function Documentation

◆ TPZSkylMatrix< double >

template<class TVar>
friend class TPZSkylMatrix< double >
friend

Definition at line 441 of file pzskylmat.h.

◆ TPZSkylMatrix< float >

template<class TVar>
friend class TPZSkylMatrix< float >
friend

Definition at line 440 of file pzskylmat.h.

Member Data Documentation

◆ fElem

template<class TVar>
TPZVec<TVar *> TPZSkylMatrix< TVar >::fElem
protected

Storage to keep the first elements to each equation.

fElem is of size number of equation+1 fElem[i] is the first element of the skyline of equation i fElem[Rows()] is one element beyond the last equation

Definition at line 620 of file pzskylmat.h.

Referenced by TPZSkylMatrix< TVar >::AddKel(), TPZSkylMatrix< TVar >::AddSameStruct(), TPZSkylMatrix< TVar >::AutoFill(), TPZSkylMatrix< TVar >::Clear(), TPZSkylMatrix< TVar >::Copy(), TPZSkylMatrix< TVar >::CopyFrom(), TPZSkylMatrix< TVar >::Decompose_Cholesky(), TPZSkylMatrix< TVar >::Decompose_Cholesky_blk(), TPZSkylMatrix< TVar >::Decompose_LDLt(), TPZSkylParMatrix< TVar >::DecomposeColumnLDLt(), TPZSkylParMatrix< TVar >::DecomposeColumnLDLt2(), TPZSkylMatrix< TVar >::Diag(), TPZSkylMatrix< TVar >::GetVal(), TPZSkylMatrix< TVar >::MemoryFootprint(), TPZSkylMatrix< TVar >::MigratePages(), TPZSkylMatrix< TVar >::MultAdd(), TPZSkylMatrix< TVar >::operator()(), TPZSkylMatrix< TVar >::operator*(), TPZSkylMatrix< TVar >::operator*=(), TPZSkylMatrix< TVar >::operator+(), TPZSkylMatrix< TVar >::operator-(), TPZSkylMatrix< TVar >::PutVal(), TPZSkylMatrix< TVar >::Read(), TPZSkylMatrix< TVar >::ReallocForNuma(), TPZSkylMatrix< TVar >::Redim(), TPZSkylMatrix< TVar >::Resize(), TPZSkylMatrix< TVar >::SetSkyline(), TPZSkylMatrix< TVar >::Size(), TPZSkylMatrix< TVar >::SkyHeight(), TPZSkylMatrix< TVar >::SolveSOR(), TPZSkylMatrix< TVar >::Subst_Backward(), TPZSkylMatrix< TVar >::Subst_Diag(), TPZSkylMatrix< TVar >::Subst_Forward(), TPZSkylMatrix< TVar >::Subst_LBackward(), TPZSkylMatrix< TVar >::Subst_LForward(), TPZSkylMatrix< TVar >::TPZSkylMatrix(), and TPZSkylMatrix< TVar >::Write().

◆ fStorage

template<class TVar>
TPZVec<TVar> TPZSkylMatrix< TVar >::fStorage
private

The documentation for this class was generated from the following files: