Calling UVSS Library
UVSS Libraray consist of Three Calls: 1. UVSS_SET (Setup the Data Structure and Reordering)
CALL UVSS_SET (NEQ,NCOEFF,DIAG,RHS,A,A2,KPT,KIND,ANS,J_POINTER)
2. UVSS_MEM (Allocate memory)
CALL UVSS_MEM (NEQ,NCOEFF,DIAG,RHS,A,A2,KPT,KIND,ANS,J_POINTER)
3. UVSS (Factorize The matrix)
CALL UVSS (NEQ,NCOEFF,DIAG,RHS,A,A2,KPT,KIND,ANS,J_POINTER)
4. UVSS2 (Performs Forwared/Backward Substitution) Can be called many times for each R.H.S.
CALL UVSS2 (NEQ,NCOEFF,DIAG,RHS,A,A2,KPT,KIND,ANS,J_POINTER)
5. UVSS_FREE will free all memory used by the solver. Must be called before calling uvss_set again.
CALL UVSS_FREE (NEQ,NCOEFF,J_POINTER)
NEQ [I] : number of equations
NCOEFF [I] : number of non-zero coefficients
DIAG [I] : diagonal terms [size NEQ]
KPT [I] : number of (off- diagonal) coefficients in each row [size NEQ]
KIND [I] : column location of each coefficient [size NCOEFF]
A [I] : (off-diagonal) coefficients in row format [size NCOEFF] (UPPER)
A2 [I] : (off-diagonal) coefficients in column format [size NCOEFF] (LOWER)
RHS [I] : Right-Hand Side (Load vector) [size NEQ]
ANS [O] : Left-Hand Side (Solution) [size NEQ]
J_POINTER [I] : WORKING VECTOR SIZE (100,2)
[I] Denotes Input
[O] Denotes Onput
Example:
1 2 3 4 5 6
1 | 100 1 2 5 | | X1 | | 201 |
2 | 41 200 6 7 9 | | X2 | | 202 |
3 | 42 46 300 10 11 12 | | X3 | | 203 |
A = 4 | 47 50 400 13 14 | | X4 | = | 204 |
5 | 51 53 500 15 | | X5 | | 205 |
6 | 45 49 52 54 55 600 | | X6 | | 206 |
NUMBER OF EQUATIONS = 6
NUMBER OF COEFFICIENTS = 12
NEQ = 6
NCOEFF = 12
DIAG = { 100, 200, 300, 400, 500, 600}
KPT = { 3, 3, 3, 2, 1, 0}
KIND = { 2, 3, 6, 3, 4, 6, 4, 5, 6, 5, 6, 6}
A = { 1, 2, 5, 6, 7, 9, 10,11,12, 13,14, 15}
A2 = { 41, 42, 45, 46, 47, 49, 50,51,52, 53,54,55}
RHS = { 201, 202, 203, 204, 205, 206}