!copyright (C) 2001 MSC-RPN COMM %%%RPNPHY%%% ***S/P LIN_DIFUVD2_AD ADJ of LIN_DIFUVD2 *SUBROUTINE LIN_DIFUVD2_AD(P, A, B, C, D, DELTA, N, NK, 1 & A5, B5, C5, D5, P5, P5P, DELTA5) * IMPLICIT NONE INTEGER N, NK REAL P(N,NK), A(N,NK), B(N,NK), C(N,NK), D(N,NK), DELTA(N,NK) REAL A5(N,NK), B5(N,NK), C5(N,NK), D5(N,NK) REAL P5(N,NK), DELTA5(N,NK),P5P(N,NK) * *Author * S. Laroche * *Object * *Arguments *----------------------------------------------------------------------- * REAL X,XT,XTT INTEGER I, K * * ******START TRAJECTORY ********************************************** * DO I=1,N C5(I,NK) = 0. P5(I,1) =-C5(I,1)/B5(I,1) P5P(I,1) =-C5(I,1)/B5(I,1) DELTA5(I,1) = D5(I,1)/B5(I,1) ENDDO * DO K=2,NK DO I=1,N P5(I,K) = -C5(I,K)/(B5(I,K)+A5(I,K)*P5(I,K-1)) P5P(I,K) = -C5(I,K)/(B5(I,K)+A5(I,K)*P5P(I,K-1)) DELTA5(I,K) = (D5(I,K)-A5(I,K)*DELTA5(I,K-1))/(B5(I,K)+A5(I,K)*P5(I,K-1)) ENDDO ENDDO * DO I=1,N P5P(I,NK) = DELTA5(I,NK) ENDDO DO K=NK-1,1,-1 DO I=1,N P5P(I,K) = P5P(I,K)*P5P(I,K+1) + DELTA5(I,K) ENDDO ENDDO * ******END TRAJECTORY ************************************************ * DO K=1,NK-1 DO I=N,1,-1 DELTA(I,K) = P(I,K) P(I,K+1) = P(I,K)*P5(I,K) + P(I,K+1) P(I,K) = P(I,K)*P5P(I,K+1) ENDDO ENDDO DO I=N,1,-1 DELTA(I,NK) = P(I,NK) P(I,NK) = 0. ENDDO DO K=NK,2,-1 DO I=1,N X = (D5(I,K)-A5(I,K)*DELTA5(I,K-1))/((B5(I,K)+A5(I,K)*P5(I,K-1))**2) P(I,K-1) = P(I,K-1) - DELTA(I,K)*A5(I,K)*X A(I,K) = A(I,K) - DELTA(I,K)*P5(I,K-1)*X B(I,K) = B(I,K) - DELTA(I,K)*X DELTA(I,K-1) = DELTA(I,K-1) - DELTA(I,K)*A5(I,K)/(B5(I,K)+A5(I,K)*P5(I,K-1)) A(I,K) = A(I,K) - DELTA(I,K)*DELTA5(I,K-1)/(B5(I,K)+A5(I,K)*P5(I,K-1)) D(I,K) = D(I,K) + DELTA(I,K)/(B5(I,K)+A5(I,K)*P5(I,K-1)) DELTA(I,K) = 0. A(I,K) = A(I,K) + P(I,K)*P5(I,K-1)*C5(I,K)/((B5(I,K)+A5(I,K)*P5(I,K-1))**2) P(I,K-1) = P(I,K-1) + P(I,K)*A5(I,K)*C5(I,K)/((B5(I,K)+A5(I,K)*P5(I,K-1))**2) B(I,K) = B(I,K) + P(I,K)*C5(I,K)/((B5(I,K)+A5(I,K)*P5(I,K-1))**2) C(I,K) = C(I,K) - P(I,K)/(B5(I,K)+A5(I,K)*P5(I,K-1)) P(I,K) = 0.0 ENDDO ENDDO DO I=1,N B(I,1) = B(I,1) - DELTA(I,1)*(D5(I,1)/(B5(I,1)**2)) D(I,1) = D(I,1) + DELTA(I,1)/B5(I,1) DELTA(I,1) = 0. B(I,1) = B(I,1) + P(I,1)*(C5(I,1)/(B5(I,1)**2)) C(I,1) = C(I,1) - P(I,1)/B5(I,1) P(I,1) = 0. C(I,NK) = 0. ENDDO * RETURN END