module util_tridiagonal_matrix_solver_mod implicit none contains SUBROUTINE DTRIDGL(L,AF,BF,CF,DF,XK) ! GCM2.0 Feb 2003 ! DOUBLE PRECISION VERSION OF TRIDGL REAL*8,INTENT(IN) :: AF(L),BF(L),CF(L),DF(L) REAL*8,INTENT(OUT) :: XK(L) INTEGER,INTENT(IN) :: L !* THIS SUBROUTINE SOLVES A SYSTEM OF TRIDIAGIONAL MATRIX !* EQUATIONS. THE FORM OF THE EQUATIONS ARE: !* A(I)*X(I-1) + B(I)*X(I) + C(I)*X(I+1) = D(I) !* ..............REVIEWED -CP........ REAL*8 :: AS(2*L),DS(2*L) REAL*8 :: XKB,X INTEGER :: I !======================================================================C AS(L) = AF(L)/BF(L) DS(L) = DF(L)/BF(L) DO I=2,L X = 1./(BF(L+1-I) - CF(L+1-I)*AS(L+2-I)) AS(L+1-I) = AF(L+1-I)*X DS(L+1-I) = (DF(L+1-I)-CF(L+1-I)*DS(L+2-I))*X END DO XK(1)=DS(1) DO I=2,L XKB = XK(I-1) XK(I) = DS(I)-AS(I)*XKB END DO END SUBROUTINE DTRIDGL end module util_tridiagonal_matrix_solver_mod