CTITLEMASOLV -- SOLVE TRIDIAGONAL MATRIX 00000010 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR RALPH MCMILLAN 00000020 CA DESIGNER RALPH MCMILLAN 00000030 CA LANGUAGE S/370 FORTRAN H 00000040 CA WRITTEN 01-10-77 00000050 C REVISED 00000060 C 00000070 CA 00000080 CA 00000090 CA CALL MASOLV (A, E, DEN, N, T, D) 00000100 CA INPUT A = OFF DIAGONAL ELEMENTS FROM TRI-DIAGONAL R4 00000110 CA INPUT E = AUX ARRAY CALCULATED IN MAINVT R4 00000120 CA INPUT DEN = AUX ARRAY CALCULATED IN MAINVT R4 00000130 CA INPUT N = NUMBER OF ELEMENTS IN A, E, DEN, T, AND D I4 00000140 CA OUTPUT T = SOLUTION OF TRI-DIAGONAL SYSTEM R4 00000150 CA IN/OUT D = RIGHT HAND SIDE OF TRI-DIAGONAL SYSTEM R4 00000160 CA 00000170 CA 00000180 CA THIS ROUTINE SOLVES A TRIDIAGONAL MATRIX. 00000190 CAEND 00000200 C 00000220 C EJECT 00000230 C 00000240 C LOCAL VARIABLES AND CONSTANTS (INTERNAL TO SUBROUTINE). 00000250 C 00000260 C NM1 = N - 1 I4 00000270 C 00000280 SUBROUTINE MASOLV (A, E, DEN, N, T, D) 00000290 C 00000300 IMPLICIT INTEGER (A-Z) 00000310 C 00000320 C 00000330 C REAL ARRAYS IN PARAMETER LIST. 00000340 REAL A (1) 00000350 REAL D (1) 00000360 REAL E (1) 00000370 REAL DEN (1) 00000380 REAL T (1) 00000390 C 00000400 C 00000410 NM1 = N - 1 00000420 C 00000430 D(1) = 0. 00000440 C 00000450 DO 10 00000460 * I = 2, NM1 00000470 D(I) = (D(I) - A(I) * D(I-1)) / DEN(I) 00000480 C 00000490 10 CONTINUE 00000500 C 00000510 T(N) = D(NM1) / (1.0 - E(NM1)) 00000520 C 00000530 DO 20 00000540 * J = 1, NM1 00000550 I = N - J 00000560 T(I) = E(I) * T(I+1) + D(I) 00000570 C 00000580 20 CONTINUE 00000590 C 00000600 RETURN 00000610 END 00000620