SUBROUTINE DDTRD(N,C,D,E,B) C C*********************************************************************** C C THIS PROGRAM SOLVES A LINEAR SYSTEM WITH COEFFICIENT MATRIX A C AND RIGHT HAND SIDE B, WHERE THE MATRIX A IS A STRICTLY OR C IRREDUCIBLY DIAGONALLY DOMINANT TRIDIAGONAL MATRIX. THE METHOD C IMPLEMENTED IS THE "STANDARD" ALGORITHM FOR SOLVING SUCH SYSTEMS. C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C ***** PARAMETERS ***** C C *** ON ENTRY ... C C N - INTEGER C THE ORDER OF THE TRIDIAGONAL MATRIX A. C C C - DOUBLE PRECISION(N) C THE SUBDIAGONAL OF THE TRIDIAGONAL MATRIX A. C C(2) THROUGH C(N) SHOULD CONTAIN THE SUBDIAGONAL C ELEMENTS OF A. C C D - DOUBLE PRECISION(N) C THE DIAGONAL ELEMENTS OF THE TRIDIAGONAL C MATRIX A. C C E - DOUBLE PRECISION(N) C THE SUPERDIAGONAL OF THE TRIDIAGONAL MATRIX A. C E(1) THROUGH E(N-1) SHOULD CONTAIN THE SUPER- C DIAGONAL ELEMENTS OF A. C C B - DOUBLE PRECISION(N) C THE RIGHT HAND SIDE VECTOR. C C *** ON RETURN ... C C B - THE SOLUTION VECTOR. C C*********************************************************************** C DOUBLE PRECISION C,D,E,B,ONE,T INTEGER N,I,I1,IPLUS1 DIMENSION C(N),D(N),E(N),B(N) DATA ONE/1.0D0/ C C*********************************************************************** C C CHECK FOR 1 X 1 CASE. IF N = 1, RETURN .... C C*********************************************************************** C D(1) = ONE/D(1) B(1) = B(1)*D(1) IF(N .EQ. 1) RETURN C C*********************************************************************** C C ZERO SUPERDIAGONAL ELEMENTS C AND C PERFORM FORWARD ELIMINATION .... C C*********************************************************************** T = D(1) DO 10 I = 1,N-1 IPLUS1 = I+1 E(I) = E(I)*T T = ONE/(D(IPLUS1)-C(IPLUS1)*E(I)) B(IPLUS1) = (B(IPLUS1)-C(IPLUS1)*B(I))*T 10 CONTINUE C C*********************************************************************** C C BACK SOLUTION .... C C*********************************************************************** C DO 20 I = N-1,1,-1 B(I) = B(I)-E(I)*B(I+1) 20 CONTINUE RETURN END