int * pPerm
Definition: Solver.h:78
int Row0
Definition: Solver.h:67
int nEq
Definition: Solver.h:163
char ** pChunks
Definition: Solver.h:61
SD_CHUNK_DATA PoolCol
Definition: Solver.h:110
int ds_DefineConnectivity(SD_MATRIX_DATA *const pMat0, const int &nEq, int Eq[], const int &nEl, const int &Dim)
This function is needed for defining the system (matrix) connectivity i.e. the non-zero coefficients ...
Definition: Solver.cc:1884
int ds_Initialize(const size_t &MatDim, SD_MATRIX_DATA **ppMat)
This is the first function to be called prior to begin to work with any matrix. The user must gives t...
Definition: Solver.cc:422
int ds_Solve(const SD_MATRIX_WHAT &Code, SD_MATRIX_DATA *pMat, double *pX)
Definition: Solver.cc:546
int * pPerm
Definition: Solver.h:104
StateType State
Definition: Solver.h:166
int * pBlockJump
Definition: Solver.h:85
The CHUNK_DATA is used to keep track of allocated memory chunks ( block of memory )...
Definition: Solver.h:57
size_t Col1
Definition: Solver.h:118
size_t Dim
Definition: Solver.h:77
The data structure to store the matrix for numerical factorization is a simple one. The matrix structure is after the mmd sorting algorithm and the symbolic factorization mainly composed of clustered non-zero matrix coefficients which form blocks. In this case we use a data strucutre to represent these row and column blocks. NOTE: The row blocks are simply what in the literature is specified as supernodes. We have kept the data structure as simple as possible to minimize the numerical operations and so the execution time. NOTE: When we define a system we have the possibility to define a multiplicity factor. This allows us to perform all initialization tasks ( input of incidences, symbolic factorization, block format calculation ) with all indices modulo the multiplicity factor to save time and memory. Thus the computed block format is always the same for any specified multiplicity factor only the block bounds are different. ATTENTION: The size of the permutation vector is only Dim/(Multiplicity Factor).
Definition: Solver.h:65
SD_MATRIX_WHAT
Definition: Solver.h:174
int nColBlock
Definition: Solver.h:81
int nColBlock
Definition: Solver.h:70
struct SD_COL_BLOCK_DATA * Next
Definition: Solver.h:119
int ds_AssembleMatrix(SD_MATRIX_DATA *pMat0, const int &nEq, int Eq[], const int &Dim, const double *ElMat)
This function assemble the element square matrix [ElMat] for one element with nEq*M x nEq*M real coef...
Definition: Solver.cc:630
int nDeletedEq
Definition: Solver.h:164
int Row1
Definition: Solver.h:68
SD_ROW_BLOCK_DATA * pRowBlock
Definition: Solver.h:80
int * pPerm
Definition: Solver.h:141
SD_TMP_CON_MATRIX_DATA TmpCon
Definition: Solver.h:169
int nChunks
Definition: Solver.h:59
int nFreeCol
Definition: Solver.h:112
double * pUpper
Definition: Solver.h:87
int ReleaseBlockMatrix(SD_BLOCK_MATRIX_DATA *pMat)
Release all the data allocated for the numerical factorization algorithm.
Definition: Solver.cc:1860
SD_COL_DATA * FreeCol
Definition: Solver.h:111
SD_ROW_BLOCK_DATA UnusedData
Definition: Solver.h:124
struct SD_COL_DATA * Next
Definition: Solver.h:93
int SizeBlockJump
Definition: Solver.h:84
int iColBlock
Definition: Solver.h:71
SD_ROW_DATA * pRow
Definition: Solver.h:109
int * pSizeColBlock
Definition: Solver.h:83
SD_COL_BLOCK_DATA * FreeColBlock
Definition: Solver.h:147
int iFloat
Definition: Solver.h:72
int * pSupernode
Definition: Solver.h:107
StateType
Definition: Solver.h:159
int Row1
Definition: Solver.h:128
int * pPermInv
Definition: Solver.h:105
SD_CHUNK_DATA PoolColBlock
Definition: Solver.h:146
SD_COL_BLOCK_DATA * ColBlock
Definition: Solver.h:134
int nSupernode
Definition: Solver.h:106
size_t Col
Definition: Solver.h:92
int TotChunkSize
Definition: Solver.h:62
int SizeUpper
Definition: Solver.h:86
SD_CON_MATRIX_DATA Con
Definition: Solver.h:168
int ReleaseConMatrix(SD_CON_MATRIX_DATA *pMat)
Definition: Solver.cc:407
size_t nRow
Definition: Solver.h:103
int * pFirstColBlock
Definition: Solver.h:82
When the user define a matrix, the software return a pointer to an opaque type i.e. a pointer to void as index to reference the matrix. This pointer is actually the pointer to the SD_MATRIX_DATA data structure. This date structure is defined as a union of differnet matrix data representations, and the type of data actually stored depend on the evolution of the algorithn.
Definition: Solver.h:161
int Row0
Definition: Solver.h:127
size_t nCol
Definition: Solver.h:69
size_t nRow
Definition: Solver.h:140
int nColBlock
Definition: Solver.h:145
int pChunksSize
Definition: Solver.h:60
int nRowBlock
Definition: Solver.h:143
SD_COL_DATA * Col
Definition: Solver.h:98
int nRowBlock
Definition: Solver.h:79
SD_BLOCK_MATRIX_DATA Block
Definition: Solver.h:170
size_t nCol
Definition: Solver.h:113
SD_TMP_ROW_BLOCK_DATA * pRowBlock
Definition: Solver.h:144