NeoPZ
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
TPZMatRed< TVar, TSideMatrix > Class Template Reference

Implements a simple substructuring of a linear system of equations, composed of 4 submatrices. Matrix. More...

#include <pzmatred.h>

Inheritance diagram for TPZMatRed< TVar, TSideMatrix >:
[legend]
Collaboration diagram for TPZMatRed< TVar, TSideMatrix >:
[legend]

Public Member Functions

 TPZMatRed ()
 Simple constructor. More...
 
 TPZMatRed (const int64_t dim, const int64_t dim00)
 Constructor with 2 parameters. More...
 
template<class TSideCopy >
 TPZMatRed (const TPZMatRed< TVar, TSideCopy > &cp)
 
 ~TPZMatRed ()
 Simple destructor. More...
 
virtual int IsSimetric () const override
 returns 1 or 0 depending on whether the fK00 matrix is zero or not More...
 
void SetReduced ()
 changes the declared dimension of the matrix to fDim1 More...
 
void ReallocSolver ()
 
virtual int PutVal (const int64_t row, const int64_t col, const TVar &value) override
 Put and Get values without bounds checking these methods are faster than "Put" e "Get" if DEBUG is defined. More...
 
virtual 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...
 
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...
 
virtual int Zero () override
 This method will zero all submatrices associated with this reducable matrix class. More...
 
void SetK00 (TPZAutoPointer< TPZMatrix< TVar > > K00)
 Sets the matrix pointer of the upper left matrix to K00. More...
 
void SetK01IsComputed (bool directive)
 Sets K01 as computed. More...
 
void SetF0IsComputed (bool directive)
 Sets F0 as computed. More...
 
TPZAutoPointer< TPZMatrix< TVar > > K00 ()
 
TSideMatrix & K01 ()
 
TSideMatrix & K10 ()
 
TPZFMatrix< TVar > & K11 ()
 
TPZFMatrix< TVar > & F1 ()
 
TPZFMatrix< TVar > & F0 ()
 
int64_t Dim0 ()
 
int64_t Dim1 ()
 
void SetSolver (TPZAutoPointer< TPZMatrixSolver< TVar > > solver)
 
TPZAutoPointer< TPZMatrixSolver< TVar > > Solver ()
 
void SetF (const TPZFMatrix< TVar > &F)
 Copies the F vector in the internal data structure. More...
 
void SetMaxNumberRigidBodyModes (int maxrigid)
 indicate how many degrees of freedom are reserved for rigid body modes More...
 
int NumberRigidBodyModes ()
 return the number of rigid body modes detected during decomposition More...
 
void F1Red (TPZFMatrix< TVar > &F1)
 Computes the reduced version of the right hand side $ [F1]=[F1]-[K10][A00^-1][F0] $. More...
 
void K11Reduced (TPZFMatrix< TVar > &K11, TPZFMatrix< TVar > &F1)
 Computes the K11 reduced $ [K11]=[K11]-[K10][A00^-1][A01] $. More...
 
void U1 (TPZFMatrix< TVar > &F)
 Returns the second vector, inverting K11. More...
 
void UGlobal (const TPZFMatrix< TVar > &U1, TPZFMatrix< TVar > &result)
 Computes the complete vector based on the solution u1. More...
 
void UGlobal2 (TPZFMatrix< TVar > &U1, TPZFMatrix< TVar > &result)
 
void Print (const char *name=NULL, std::ostream &out=std::cout, const MatrixOutputFormat=EFormatted) const override
 Prints the object data structure. More...
 
int Redim (const int64_t dim, const int64_t dim00) override
 Redim: Set the dimension of the complete matrix and reduced matrix. More...
 
void MultAdd (const TPZFMatrix< TVar > &x, const TPZFMatrix< TVar > &y, TPZFMatrix< TVar > &z, const TVar alpha, const TVar beta, const int opt) const override
 It computes z = beta * y + alpha * opt(this)*x but z and x can not overlap in memory. More...
 
void SimetrizeMatRed ()
 If fK00 is simetric, only part of the matrix is accessible to external objects. More...
 
int ClassId () const override
 Saveable methods. More...
 
void Write (TPZStream &buf, int withclassid) const override
 Writes this object to the TPZStream buffer. Include the classid if withclassid = true. More...
 
void Read (TPZStream &buf, void *context) override
 read objects from the stream More...
 
template<>
void K11Reduced (TPZFMatrix< double > &K11, TPZFMatrix< double > &F1)
 
template<>
void K11Reduced (TPZFMatrix< float > &K11, TPZFMatrix< float > &F1)
 
template<>
void K11Reduced (TPZFMatrix< long double > &K11, TPZFMatrix< long double > &F1)
 
template<>
void K11Reduced (TPZFMatrix< std::complex< double > > &K11, TPZFMatrix< std::complex< double > > &F1)
 
template<>
void UGlobal (const TPZFMatrix< REAL > &U1, TPZFMatrix< REAL > &result)
 
- 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
 
virtual int64_t MemoryFootprint () const
 Returns the approximate size of the memory footprint (amount of memory required to store this object). More...
 
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...
 
virtual void AddKel (TPZFMatrix< TVar > &elmat, TPZVec< int64_t > &sourceindex, 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...
 
virtual void UpdateFrom (TPZAutoPointer< TPZMatrix< TVar > >)
 Updates the values of the matrix based on the values of the matrix. 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 Decompose_Cholesky ()
 Decomposes the current matrix using Cholesky method. The current matrix has to be symmetric. More...
 
virtual int Decompose_Cholesky (std::list< int64_t > &singular)
 Decomposes the current matrix using Cholesky method. More...
 
virtual int Decompose_LDLt (std::list< int64_t > &singular)
 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...
 
virtual int Decompose_LDLt ()
 Decomposes the current matrix using LDLt. More...
 
virtual int Substitution (TPZFMatrix< TVar > *B) const
 Computes Forward and Backward substitution for a "LU" decomposed matrix. More...
 
virtual int Subst_Forward (TPZFMatrix< TVar > *b) const
 Computes B = Y, where A*Y = B, A is lower triangular. More...
 
virtual int Subst_Backward (TPZFMatrix< TVar > *b) const
 Computes B = Y, where A*Y = B, A is upper triangular. More...
 
virtual int Subst_LForward (TPZFMatrix< TVar > *b) const
 Computes B = Y, where A*Y = B, A is lower triangular with A(i,i)=1. More...
 
virtual int Subst_LBackward (TPZFMatrix< TVar > *b) const
 Computes B = Y, where A*Y = B, A is upper triangular with A(i,i)=1. More...
 
virtual int Subst_Diag (TPZFMatrix< TVar > *b) const
 Computes B = Y, where A*Y = B, A is diagonal matrix. More...
 
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 void Input (std::istream &in=std::cin)
 Input operation. More...
 
virtual void Print (std::ostream &out) const
 
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 int Resize (const int64_t newRows, const int64_t newCols)
 Redimensions a matriz keeping the previous values. 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 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)
 Solves the linear system using Successive Over Relaxation method (Gauss Seidel).
. 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
 

Private Member Functions

void DecomposeK00 ()
 Decompose K00 and adjust K01 and K10 to reflect rigid body modes. More...
 

Static Private Member Functions

static void Swap (int64_t *row, int64_t *col)
 Swaps the row and column index. More...
 

Private Attributes

TPZAutoPointer< TPZMatrix< TVar > > fK00
 Stiffnes matrix. More...
 
TPZAutoPointer< TPZMatrixSolver< TVar > > fSolver
 Solution method for inverting $ fK00 $. More...
 
TPZFMatrix< TVar > fK11
 Full Stiffnes matrix. More...
 
TSideMatrix fK01
 
TSideMatrix fK10
 
TPZFMatrix< TVar > fF0
 Right hand side or force matrix. More...
 
TPZFMatrix< TVar > fF1
 
int64_t fDim0
 Stores matricess $ fKij $ dimensions. More...
 
int64_t fDim1
 
bool fIsReduced
 Is true if the declared dimension of the matrix is fDim0. More...
 
bool fK01IsComputed
 Is true if $ [(K00)^-1][KO1] $ has been computed and overwritten $ [K01] $. More...
 
bool fF0IsComputed
 Is true if $ [(K00)^-1][F0] $ has been computed and overwritten $ [F0] $. More...
 
int fMaxRigidBodyModes
 Number of rigid body modes foreseen in the computational mesh. More...
 
int fNumberRigidBodyModes
 Number of rigid body modes identified during the decomposition of fK00. More...
 

Friends

class TPZMatRed< TVar, TPZFMatrix< TVar > >
 
class TPZMatRed< TVar, TPZVerySparseMatrix< TVar > >
 

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)
 
- 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...
 
virtual int Clear ()
 It clears data structure. More...
 
- 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...
 
- 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...
 
- Static Protected Attributes inherited from TPZMatrix< TVar >
static TVar gZero
 Initializing value to static variable. More...
 

Detailed Description

template<class TVar, class TSideMatrix>
class TPZMatRed< TVar, TSideMatrix >

Implements a simple substructuring of a linear system of equations, composed of 4 submatrices. Matrix.

Implements a matrix composed of 4 submatrices:

\[ [K00] [U0] + [K01] [U1] = [F0] \]

\[ [K10] [U0] + [K11] [U1] = [F1] \]

Definition at line 34 of file pzmatred.h.

Constructor & Destructor Documentation

◆ TPZMatRed() [1/3]

template<class TVar , class TSideMatrix >
TPZMatRed< TVar, TSideMatrix >::TPZMatRed ( )

Simple constructor.

Definition at line 31 of file pzmatred.cpp.

◆ TPZMatRed() [2/3]

template<class TVar , class TSideMatrix >
TPZMatRed< TVar, TSideMatrix >::TPZMatRed ( const int64_t  dim,
const int64_t  dim00 
)

Constructor with 2 parameters.

Parameters
dimassumes the value of n1+n2
dim00equals n1

Definition at line 43 of file pzmatred.cpp.

◆ TPZMatRed() [3/3]

template<class TVar, class TSideMatrix>
template<class TSideCopy >
TPZMatRed< TVar, TSideMatrix >::TPZMatRed ( const TPZMatRed< TVar, TSideCopy > &  cp)
inline

Definition at line 51 of file pzmatred.h.

◆ ~TPZMatRed()

template<class TVar , class TSideMatrix >
TPZMatRed< TVar, TSideMatrix >::~TPZMatRed ( )

Simple destructor.

Definition at line 57 of file pzmatred.cpp.

Referenced by TPZMatRed< TTVar, TPZFMatrix< TTVar > >::TPZMatRed().

Member Function Documentation

◆ ClassId()

template<class TVar , class TSideMatrix >
int TPZMatRed< TVar, TSideMatrix >::ClassId ( ) const
overridevirtual

Saveable methods.

Implements TPZSavable.

Definition at line 272 of file pzmatred.h.

Referenced by TPZMatRed< TTVar, TPZFMatrix< TTVar > >::NumberRigidBodyModes().

◆ DecomposeK00()

template<class TVar , class TSideMatrix >
void TPZMatRed< TVar, TSideMatrix >::DecomposeK00 ( )
private

◆ Dim0()

template<class TVar, class TSideMatrix>
int64_t TPZMatRed< TVar, TSideMatrix >::Dim0 ( )
inline

Definition at line 140 of file pzmatred.h.

Referenced by TPZCondensedCompEl::CalcStiff().

◆ Dim1()

template<class TVar, class TSideMatrix>
int64_t TPZMatRed< TVar, TSideMatrix >::Dim1 ( )
inline

◆ F0()

template<class TVar, class TSideMatrix>
TPZFMatrix<TVar>& TPZMatRed< TVar, TSideMatrix >::F0 ( )
inline

Definition at line 135 of file pzmatred.h.

Referenced by TPZCondensedCompEl::CalcStiff().

◆ F1()

template<class TVar, class TSideMatrix>
TPZFMatrix<TVar>& TPZMatRed< TVar, TSideMatrix >::F1 ( )
inline

◆ F1Red()

template<class TVar, class TSideMatrix >
void TPZMatRed< TVar, TSideMatrix >::F1Red ( TPZFMatrix< TVar > &  F1)

◆ GetVal()

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

◆ IsSimetric()

template<class TVar , class TSideMatrix >
int TPZMatRed< TVar, TSideMatrix >::IsSimetric ( ) const
overridevirtual

◆ K00()

template<class TVar, class TSideMatrix>
TPZAutoPointer<TPZMatrix<TVar> > TPZMatRed< TVar, TSideMatrix >::K00 ( )
inline

◆ K01()

template<class TVar, class TSideMatrix>
TSideMatrix& TPZMatRed< TVar, TSideMatrix >::K01 ( )
inline

Definition at line 116 of file pzmatred.h.

Referenced by TPZCondensedCompEl::CalcStiff(), and TPZCondensedCompEl::LoadSolution().

◆ K10()

template<class TVar, class TSideMatrix>
TSideMatrix& TPZMatRed< TVar, TSideMatrix >::K10 ( )
inline

Definition at line 120 of file pzmatred.h.

Referenced by TPZCondensedCompEl::CalcStiff().

◆ K11()

template<class TVar, class TSideMatrix>
TPZFMatrix<TVar>& TPZMatRed< TVar, TSideMatrix >::K11 ( )
inline

◆ K11Reduced() [1/5]

template<class TVar, class TSideMatrix >
void TPZMatRed< TVar, TSideMatrix >::K11Reduced ( TPZFMatrix< TVar > &  K11,
TPZFMatrix< TVar > &  F1 
)

◆ K11Reduced() [2/5]

template<>
void TPZMatRed< double, TPZVerySparseMatrix< double > >::K11Reduced ( TPZFMatrix< double > &  K11,
TPZFMatrix< double > &  F1 
)

Definition at line 256 of file pzmatred.cpp.

◆ K11Reduced() [3/5]

template<>
void TPZMatRed< float, TPZVerySparseMatrix< float > >::K11Reduced ( TPZFMatrix< float > &  K11,
TPZFMatrix< float > &  F1 
)

Definition at line 264 of file pzmatred.cpp.

◆ K11Reduced() [4/5]

template<>
void TPZMatRed< long double, TPZVerySparseMatrix< long double > >::K11Reduced ( TPZFMatrix< long double > &  K11,
TPZFMatrix< long double > &  F1 
)

Definition at line 272 of file pzmatred.cpp.

◆ K11Reduced() [5/5]

template<>
void TPZMatRed< std::complex< double >, TPZVerySparseMatrix< std::complex< double > > >::K11Reduced ( TPZFMatrix< std::complex< double > > &  K11,
TPZFMatrix< std::complex< double > > &  F1 
)

Definition at line 280 of file pzmatred.cpp.

◆ MultAdd()

template<class TVar, class TSideMatrix >
void TPZMatRed< TVar, TSideMatrix >::MultAdd ( const TPZFMatrix< TVar > &  x,
const TPZFMatrix< TVar > &  y,
TPZFMatrix< TVar > &  z,
const TVar  alpha,
const TVar  beta,
const int  opt 
) 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 vector and N is matrix dimension

Reimplemented from TPZMatrix< TVar >.

Definition at line 521 of file pzmatred.cpp.

Referenced by TPZMatrix< STATE >::Multiply(), and TPZMatRed< TTVar, TPZFMatrix< TTVar > >::NumberRigidBodyModes().

◆ NumberRigidBodyModes()

template<class TVar, class TSideMatrix>
int TPZMatRed< TVar, TSideMatrix >::NumberRigidBodyModes ( )
inline

return the number of rigid body modes detected during decomposition

Definition at line 168 of file pzmatred.h.

◆ Print()

template<class TVar , class TSideMatrix >
void TPZMatRed< TVar, TSideMatrix >::Print ( const char *  name = NULL,
std::ostream &  out = std::cout,
const MatrixOutputFormat  form = EFormatted 
) const
overridevirtual

◆ PutVal()

template<class TVar, class TSideMatrix >
int TPZMatRed< TVar, TSideMatrix >::PutVal ( const int64_t  row,
const int64_t  col,
const TVar &  value 
)
overridevirtual

◆ Read()

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

read objects from the stream

Reimplemented from TPZSavable.

Definition at line 696 of file pzmatred.cpp.

Referenced by TPZMatRed< TTVar, TPZFMatrix< TTVar > >::NumberRigidBodyModes(), and TPZDohrSubstructCondense< TTVar >::Read().

◆ ReallocSolver()

template<class TVar, class TSideMatrix>
void TPZMatRed< TVar, TSideMatrix >::ReallocSolver ( )
inline

Definition at line 76 of file pzmatred.h.

Referenced by TPZDohrSubstructCondense< TTVar >::ReallocMatRed().

◆ Redim()

template<class TVar , class TSideMatrix >
int TPZMatRed< TVar, TSideMatrix >::Redim ( const int64_t  dim,
const int64_t  dim00 
)
overridevirtual

Redim: Set the dimension of the complete matrix and reduced matrix.

Reimplemented from TPZMatrix< TVar >.

Definition at line 481 of file pzmatred.cpp.

Referenced by TPZCondensedCompEl::CalcResidual(), TPZCondensedCompEl::CalcStiff(), TPZMatrix< STATE >::Input(), TPZMatRed< TTVar, TPZFMatrix< TTVar > >::NumberRigidBodyModes(), and TPZCondensedCompEl::Resequence().

◆ s()

template<class TVar , class TSideMatrix >
TVar & TPZMatRed< TVar, TSideMatrix >::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 113 of file pzmatred.cpp.

Referenced by TPZMatRed< TTVar, TPZFMatrix< TTVar > >::ReallocSolver(), and TPZMatrix< STATE >::Simetrize().

◆ SetF()

template<class TVar, class TSideMatrix >
void TPZMatRed< TVar, TSideMatrix >::SetF ( const TPZFMatrix< TVar > &  F)

◆ SetF0IsComputed()

template<class TVar, class TSideMatrix>
void TPZMatRed< TVar, TSideMatrix >::SetF0IsComputed ( bool  directive)
inline

Sets F0 as computed.

Definition at line 107 of file pzmatred.h.

Referenced by TPZCondensedCompEl::CalcStiff().

◆ SetK00()

template<class TVar, class TSideMatrix >
void TPZMatRed< TVar, TSideMatrix >::SetK00 ( TPZAutoPointer< TPZMatrix< TVar > >  K00)

Sets the matrix pointer of the upper left matrix to K00.

Parameters
K00pointer to an upper left matrix

Definition at line 134 of file pzmatred.cpp.

Referenced by AssembleMatrices(), TPZMatRedStructMatrix< TStructMatrix, TSparseMatrix >::Create(), InitializeMatrices(), and TPZMatRed< TTVar, TPZFMatrix< TTVar > >::ReallocSolver().

◆ SetK01IsComputed()

template<class TVar, class TSideMatrix>
void TPZMatRed< TVar, TSideMatrix >::SetK01IsComputed ( bool  directive)
inline

Sets K01 as computed.

Definition at line 99 of file pzmatred.h.

Referenced by TPZCondensedCompEl::CalcStiff().

◆ SetMaxNumberRigidBodyModes()

template<class TVar, class TSideMatrix>
void TPZMatRed< TVar, TSideMatrix >::SetMaxNumberRigidBodyModes ( int  maxrigid)
inline

indicate how many degrees of freedom are reserved for rigid body modes

Definition at line 162 of file pzmatred.h.

Referenced by TPZSubMeshAnalysis::Assemble().

◆ SetReduced()

template<class TVar, class TSideMatrix>
void TPZMatRed< TVar, TSideMatrix >::SetReduced ( )
inline

changes the declared dimension of the matrix to fDim1

Definition at line 70 of file pzmatred.h.

Referenced by AssembleMatrices(), TPZCondensedCompEl::CalcStiff(), InitializeMatrices(), and TPZCondensedCompEl::Resequence().

◆ SetSolver()

template<class TVar, class TSideMatrix >
void TPZMatRed< TVar, TSideMatrix >::SetSolver ( TPZAutoPointer< TPZMatrixSolver< TVar > >  solver)

◆ SimetrizeMatRed()

template<class TVar , class TSideMatrix >
void TPZMatRed< TVar, TSideMatrix >::SimetrizeMatRed ( )

If fK00 is simetric, only part of the matrix is accessible to external objects.

Simetrizes copies the data of the matrix to make its data simetric

Definition at line 67 of file pzmatred.cpp.

Referenced by AssembleMatrices(), InitializeMatrices(), TPZMatRed< TTVar, TPZFMatrix< TTVar > >::K11Reduced(), and TPZMatRed< TTVar, TPZFMatrix< TTVar > >::NumberRigidBodyModes().

◆ Solver()

template<class TVar, class TSideMatrix>
TPZAutoPointer<TPZMatrixSolver<TVar> > TPZMatRed< TVar, TSideMatrix >::Solver ( )
inline

Definition at line 151 of file pzmatred.h.

◆ Swap()

template<class TVar , class TSideMatrix >
void TPZMatRed< TVar, TSideMatrix >::Swap ( int64_t *  row,
int64_t *  col 
)
inlinestaticprivate

◆ U1()

template<class TVar, class TSideMatrix >
void TPZMatRed< TVar, TSideMatrix >::U1 ( TPZFMatrix< TVar > &  F)

◆ UGlobal() [1/2]

template<class TVar, class TSideMatrix >
void TPZMatRed< TVar, TSideMatrix >::UGlobal ( const TPZFMatrix< TVar > &  U1,
TPZFMatrix< TVar > &  result 
)

Computes the complete vector based on the solution u1.

Parameters
U1right hand side
resultcontains the result of the operation

Definition at line 342 of file pzmatred.cpp.

Referenced by TPZDohrSubstructCondense< TTVar >::Contribute_v2_local(), TPZSubMeshAnalysis::LoadSolution(), TPZCondensedCompEl::LoadSolution(), TPZMatRed< TTVar, TPZFMatrix< TTVar > >::NumberRigidBodyModes(), and TPZDohrSubstructCondense< TTVar >::SolveSystemPhi().

◆ UGlobal() [2/2]

template<>
void TPZMatRed< REAL, TPZVerySparseMatrix< REAL > >::UGlobal ( const TPZFMatrix< REAL > &  U1,
TPZFMatrix< REAL > &  result 
)

Definition at line 300 of file pzmatred.cpp.

◆ UGlobal2()

template<class TVar, class TSideMatrix >
void TPZMatRed< TVar, TSideMatrix >::UGlobal2 ( TPZFMatrix< TVar > &  U1,
TPZFMatrix< TVar > &  result 
)

◆ Write()

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

Writes this object to the TPZStream buffer. Include the classid if withclassid = true.

Writes this object to the TPZStream buffer. Include the classid if withclassid = true

Reimplemented from TPZSavable.

Definition at line 659 of file pzmatred.cpp.

Referenced by TPZMatRed< TTVar, TPZFMatrix< TTVar > >::NumberRigidBodyModes(), and TPZDohrSubstructCondense< TTVar >::Write().

◆ Zero()

template<class TVar , class TSideMatrix >
int TPZMatRed< TVar, TSideMatrix >::Zero ( )
overridevirtual

This method will zero all submatrices associated with this reducable matrix class.

Reimplemented from TPZMatrix< TVar >.

Definition at line 505 of file pzmatred.cpp.

Referenced by TPZCondensedCompEl::CalcStiff(), TPZMatRed< TTVar, TPZFMatrix< TTVar > >::ReallocSolver(), and TPZCondensedCompEl::Resequence().

Friends And Related Function Documentation

◆ TPZMatRed< TVar, TPZFMatrix< TVar > >

template<class TVar, class TSideMatrix>
friend class TPZMatRed< TVar, TPZFMatrix< TVar > >
friend

Definition at line 38 of file pzmatred.h.

◆ TPZMatRed< TVar, TPZVerySparseMatrix< TVar > >

template<class TVar, class TSideMatrix>
friend class TPZMatRed< TVar,TPZVerySparseMatrix< TVar > >
friend

Definition at line 39 of file pzmatred.h.

Member Data Documentation

◆ fDim0

template<class TVar, class TSideMatrix>
int64_t TPZMatRed< TVar, TSideMatrix >::fDim0
private

◆ fDim1

template<class TVar, class TSideMatrix>
int64_t TPZMatRed< TVar, TSideMatrix >::fDim1
private

◆ fF0

template<class TVar, class TSideMatrix>
TPZFMatrix<TVar> TPZMatRed< TVar, TSideMatrix >::fF0
private

◆ fF0IsComputed

template<class TVar, class TSideMatrix>
bool TPZMatRed< TVar, TSideMatrix >::fF0IsComputed
private

◆ fF1

template<class TVar, class TSideMatrix>
TPZFMatrix<TVar> TPZMatRed< TVar, TSideMatrix >::fF1
private

◆ fIsReduced

template<class TVar, class TSideMatrix>
bool TPZMatRed< TVar, TSideMatrix >::fIsReduced
private

◆ fK00

template<class TVar, class TSideMatrix>
TPZAutoPointer<TPZMatrix<TVar> > TPZMatRed< TVar, TSideMatrix >::fK00
private

◆ fK01

template<class TVar, class TSideMatrix>
TSideMatrix TPZMatRed< TVar, TSideMatrix >::fK01
private

◆ fK01IsComputed

template<class TVar, class TSideMatrix>
bool TPZMatRed< TVar, TSideMatrix >::fK01IsComputed
private

◆ fK10

template<class TVar, class TSideMatrix>
TSideMatrix TPZMatRed< TVar, TSideMatrix >::fK10
private

◆ fK11

template<class TVar, class TSideMatrix>
TPZFMatrix<TVar> TPZMatRed< TVar, TSideMatrix >::fK11
private

◆ fMaxRigidBodyModes

template<class TVar, class TSideMatrix>
int TPZMatRed< TVar, TSideMatrix >::fMaxRigidBodyModes
private

◆ fNumberRigidBodyModes

template<class TVar, class TSideMatrix>
int TPZMatRed< TVar, TSideMatrix >::fNumberRigidBodyModes
private

◆ fSolver

template<class TVar, class TSideMatrix>
TPZAutoPointer<TPZMatrixSolver<TVar> > TPZMatRed< TVar, TSideMatrix >::fSolver
private

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