CTITLE SALMPAB - LINEAR INTERPOLATE CDP-WINDOW TOP TIME PAIRS C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CABS SALMPAB - LINEAR INTERPOLATE CDP-WINDOW TOP TIME PAIRS C CSUBROUTINE SALMPAB C C SUBROUTINE SALMPAB(ICDP,IVNT,NPAIRS,IXBEG,IXEND,XCDP,TVNT,IDB,IPR) C C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991. C C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, C REPRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT THE C PRIOR CONSENT OF ATLANTIC RICHFIELD COMPANY. C C CA DESIGNER C. Y. YOUNG CA AUTHOR C. Y. YOUNG CA LANGUAGE VS FORTRAN CA SYSTEM IBM CA WRITTEN JULY 1988 CA CA PURPOSE OF PROGRAM: CA CA THIS SUBROUTINE LINEARLY INTERPOLATES THE INPUT CDP-WINDOW TOP CA TIME PAIRS FOR ALL THE ACTUAL CDP PROCESSING RANGE. C CA CA ARGUMENTS: CA CA CA ICDP INPUT INT INTEGER ARRAY OF LENGTH NPAIRS CONTAIN CA ING THE INPUT CDP NUMBERS FOR THE CDP CA WINDOW-TOP TIME PAIRS. CA CA IVNT INPUT INT INTEGER ARRAY OF LENGTH NPAIRS CONTAIN CA ING THE INPUT WINDOW-TOP TIMES OF CDP CA WINDOW-TOP TIME PAIRS. CA CA NPAIRS INPUT/ INT THE NUMBER OF INPUT CDP-WINDOW TOP CA OUTPUT PAIRS. CA CA IXBEG INPUT INT THE STARTING CDP NUMBER FOR THE PRO- CA CESSING RANGE. CA CA IXEND INPUT INT THE ENDING CDP NUMBER FOR THE PRO- CA CESSING RANGE. CA CA XCDP OUTPUT REAL REAL ARRAY OF WHICH WILL CONTAIN THE CA INTERPOLATED CDP VALUES. THE LENGTH CA WILL BE THE NUMBER OF CDPS IN THE CA PROCESSING RANGE. CA CA TVNT OUTPUT REAL REAL ARRAY OF WHICH WILL CONTAIN THE CA INTERPOLATED TOP VALUES. THE LENGTH CA WILL BE THE NUMBER OF CDPS IN THE CA PROCESSING RANGE. CA CA IDB INPUT INT INTEGER FLAG WHICH IF POSITIVE AND CA NON-ZERO FORCES DEBUG PRINT TO OCCUR. CA CA IPR INPUT INT SPARC LOGICAL PRINT DEVICE FOR PRINT- CA ING INFORMATION FROM THIS SUBROUTINE. CA CA EJECT CAEND C*********************************************************************** C C LOCAL VARIABLES C C DT R*4 SLOPE CALCULATION FOR LINEAR INTERPOLATION. C IC I*4 DIFFERENCE IN CONSECUTIVE INPUT CDP VALUES C IF GREATER THAN ONE (FOR INTERPOLATION). C JCDP I*4 DIFFERENCE IN CONSECUTIVE INPUT CDP VALUES. C NCDP1 I*4 NUMBER OF INPUT CDP-TOP OF TIME WINDOW PAIRS C C*********************************************************************** C SUBROUTINE SALMPAB(ICDP,IVNT,NPAIRS,IXBEG,IXEND,XCDP,TVNT,IDB,IPR) IMPLICIT INTEGER (A-Z) C REAL XCDP(*), TVNT(*), DT REAL ICDP(*),IVNT(*) C C C LINEAR INTERPOLATE BETWEEN WINDOW-TOP PICKS C C IF DEBUG PRINT FLAG SET THEN DUMP SOME VALUES C IF (IDB .GT. 0) THEN WRITE ( IPR, * ) 'INSIDE SALMPAB, NPAIRS = ', NPAIRS WRITE ( IPR, * ) 'CDP NO. TIME TOP ' WRITE ( IPR, 9000 ) ( INT(ICDP(I)), INT(IVNT(I)), + I = 1, NPAIRS) 9000 FORMAT (1X,5(I6,5X,I6)) ENDIF C C ONLY ONE TIME PICK PAIR IS INPUT C THEN SET THE NUMBER OF CDP-TIME PICK PAIRS TO BE THE NUMBER OF C CDP C IF (NPAIRS .EQ. 1) THEN NPAIRS = IXEND - IXBEG + 1 DO 100 I = 1, NPAIRS XCDP(I) = IXBEG + I - 1 TVNT(I) = IVNT(1) 100 CONTINUE C GO TO 180 ENDIF C J = 0 DO 140 I = 2, NPAIRS JCDP = INT(ICDP(I)) - INT(ICDP(I - 1)) JCDP1 = IABS ( JCDP ) IF (JCDP1 .NE. 0) + DT = ( IVNT(I) - IVNT(I - 1) ) / FLOAT ( JCDP1 ) J = J + 1 TVNT(J) = IVNT(I - 1) TVNT(J + JCDP1) = IVNT(I) IF (JCDP1 .NE. 1) THEN IC = JCDP1 - 1 DO 120 K = 1, IC TVNT(J + K) = IVNT(I - 1) + DT * K 120 CONTINUE C J = J + IC ENDIF 140 CONTINUE C NCDP1 = J + 1 XCDP(1) = ICDP(1) DO 160 J = 2, NCDP1 XCDP(J) = XCDP(J - 1) + 1 * ISIGN ( 1, JCDP ) 160 CONTINUE NPAIRS = NCDP1 180 CONTINUE C C IF DEBUG PRINT FLAG SET THEN PRINT C IF (IDB .GT. 0) THEN WRITE ( IPR, * ) 'OUTPUT NPAIRS = ', NPAIRS WRITE ( IPR, 9010 ) ( XCDP(J), TVNT(J), J = 1, NPAIRS ) 9010 FORMAT(1X,6E15.5) ENDIF C RETURN END