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} |