49 const su2double
eps = numeric_limits<su2double>::epsilon();
66 su2double *ILU_matrix;
67 unsigned long *row_ptr;
68 unsigned long *col_ind;
71 su2double *block_inverse;
72 su2double *block_weight;
73 su2double *prod_block_vector;
74 su2double *prod_row_vector;
75 su2double *aux_vector;
76 su2double *sum_vector;
80 vector<unsigned long> *LineletPoint;
81 unsigned long nLinelet;
82 su2double **UBlock, **invUBlock, **LBlock,
83 **yVector, **zVector, **rVector, *LFBlock,
85 unsigned long max_nElem;
106 void Initialize(
unsigned long nPoint,
unsigned long nPointDomain,
unsigned short nVar,
unsigned short nEqn,
119 void SetIndexes(
unsigned long val_nPoint,
unsigned long val_nPointDomain,
unsigned short val_nVar,
unsigned short val_nEq,
unsigned long* val_row_ptr,
unsigned long* val_col_ind,
unsigned long val_nnz,
CConfig *config);
124 void SetValZero(
void);
131 su2double *GetBlock(
unsigned long block_i,
unsigned long block_j);
138 su2double GetBlock(
unsigned long block_i,
unsigned long block_j,
unsigned short iVar,
unsigned short jVar);
146 void SetBlock(
unsigned long block_i,
unsigned long block_j, su2double **val_block);
154 void SetBlock(
unsigned long block_i,
unsigned long block_j, su2double *val_block);
162 void AddBlock(
unsigned long block_i,
unsigned long block_j, su2double **val_block);
170 void SubtractBlock(
unsigned long block_i,
unsigned long block_j, su2double **val_block);
177 su2double *GetBlock_ILUMatrix(
unsigned long block_i,
unsigned long block_j);
185 void SetBlock_ILUMatrix(
unsigned long block_i,
unsigned long block_j, su2double *val_block);
194 void SetBlockTransposed_ILUMatrix(
unsigned long block_i,
unsigned long block_j, su2double *val_block);
202 void SubtractBlock_ILUMatrix(
unsigned long block_i,
unsigned long block_j, su2double *val_block);
210 void AddVal2Diag(
unsigned long block_i, su2double val_matrix);
218 void SetVal2Diag(
unsigned long block_i, su2double val_matrix);
226 void MatrixVectorProduct(su2double *matrix, su2double *vector, su2double *product);
234 void MatrixMatrixProduct(su2double *matrix_a, su2double *matrix_b, su2double *product);
240 void DeleteValsRowi(
unsigned long i);
248 su2double MatrixDeterminant(su2double **a,
unsigned long n);
256 void MatrixCoFactor(su2double **a,
unsigned long n, su2double **b) ;
263 void MatrixTranspose(su2double **a,
unsigned long n) ;
272 void Gauss_Elimination(
unsigned long block_i, su2double* rhs,
bool transposed =
false);
280 void Gauss_Elimination(su2double* Block, su2double* rhs);
288 void Gauss_Elimination_ILUMatrix(
unsigned long block_i, su2double* rhs);
298 void ProdBlockVector(
unsigned long block_i,
unsigned long block_j,
const CSysVector & vec);
306 void UpperProduct(
CSysVector & vec,
unsigned long row_i);
314 void LowerProduct(
CSysVector & vec,
unsigned long row_i);
322 void DiagonalProduct(
CSysVector & vec,
unsigned long row_i);
346 void RowProduct(
const CSysVector & vec,
unsigned long row_i);
377 void GetMultBlockBlock(su2double *c, su2double *a, su2double *b);
382 void GetMultBlockVector(su2double *c, su2double *a, su2double *b);
387 void GetSubsBlock(su2double *c, su2double *a, su2double *b);
392 void GetSubsVector(su2double *c, su2double *a, su2double *b);
399 void InverseDiagonalBlock(
unsigned long block_i, su2double *invBlock,
bool transpose =
false);
406 void InverseDiagonalBlock_ILUMatrix(
unsigned long block_i, su2double *invBlock);
413 void InverseBlock(su2double *Block, su2double *invBlock);
418 void BuildJacobiPreconditioner(
bool transpose =
false);
448 void BuildILUPreconditioner(
bool transposed =
false);
501 unsigned short BuildLineletPreconditioner(
CGeometry *geometry,
CConfig *config);
Definition: matrix_structure.hpp:557
Headers of the main subroutines for creating the geometrical structure. The subroutines and functions...
All the information about the definition of the physical problem. The subroutines and functions are i...
Parent class for defining the geometry of the problem (complete geometry, multigrid agglomerated geom...
Definition: geometry_structure.hpp:72
Headers of the mpi interface for generalized datatypes. The subroutines and functions are in the mpi_...
~CJacobiTransposedPreconditioner()
destructor of the class
Definition: matrix_structure.hpp:642
abstract base class for defining matrix-vector products
Definition: vector_structure.hpp:363
~CILUPreconditioner()
destructor of the class
Definition: matrix_structure.hpp:675
abstract base class for defining preconditioning operation
Definition: vector_structure.hpp:380
~CSysMatrixVectorProduct()
destructor of the class
Definition: matrix_structure.hpp:543
~CSysMatrixVectorProductTransposed()
destructor of the class
Definition: matrix_structure.hpp:576
specialization of preconditioner that uses CSysMatrix class
Definition: matrix_structure.hpp:689
~CJacobiPreconditioner()
destructor of the class
Definition: matrix_structure.hpp:609
~CLU_SGSPreconditioner()
destructor of the class
Definition: matrix_structure.hpp:708
Main class for defining sparse matrices-by-blocks with compressed row format.
Definition: matrix_structure.hpp:59
specialization of preconditioner that uses CSysMatrix class
Definition: matrix_structure.hpp:656
Headers for the classes related to linear solvers (CG, FGMRES, etc) The subroutines and functions are...
specialization of preconditioner that uses CSysMatrix class
Definition: matrix_structure.hpp:590
Class for holding and manipulating vectors needed by linear solvers.
Definition: vector_structure.hpp:60
specialization of preconditioner that uses CSysMatrix class
Definition: matrix_structure.hpp:722
const su2double eps
machine epsilon
Definition: matrix_structure.hpp:49
specialization of preconditioner that uses CSysMatrix class
Definition: matrix_structure.hpp:623
specialization of matrix-vector product that uses CSysMatrix class
Definition: matrix_structure.hpp:524
~CLineletPreconditioner()
destructor of the class
Definition: matrix_structure.hpp:741
In-Line subroutines of the matrix_structure.hpp file.
Main class for defining the problem; basically this class reads the configuration file...
Definition: config_structure.hpp:68