CTITLEMTDLOG -- RESAMPLES INPUT TRACE FROM TIME TO DEPTH 00000010 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA 00000020 CA AUTHOR DAVE D. THOMPSON 00000030 CA DESIGNER DAVE D. THOMPSON 00000040 CA LANGUAGE FORTRAN H EXTENDED 00000050 CA WRITTEN 04-12-80 00000060 C 00000070 CA 00000080 CA CALL MTDLOG ( X,U,N,K,ID,XD ) 00000090 CA 00000100 CA INPUT X = INPUT TRACE OF LENGTH N. R4 00000110 CA INPUT U = INPUT ITT TRACE (MICROSEC/FT) OF LENGTH R4 00000120 CA N. ALL SAMPLES GREATER THAN ZERO. 00000130 CA INPUT N = NUMBER OF TRACE SAMPLES I4 00000140 CA INPUT K = NUMBER OF FEET TO CORRESPOND TO ONE I4 00000150 CA SECOND IN XD. (1-WAY DEPTH / 2-WAY TIME) 00000160 CA INPUT ID = DEGREE OF POLYNOMIAL FOR INTERPOLATION I4 00000170 CA OUTPUT XD = OUTPUT TRACE OF LENGTH N. XD CANNOT BE R4 00000180 CA THE SAME AS X. 00000190 CA 00000200 CA 00000210 CA PURPOSE: THIS ROUTINE RESAMPLES INPUT TRACE X FROM TIME 00000220 CA TO DEPTH BASED ON INPUT ITT TRACE U AND RETURNS 00000230 CA THE RESULT IN TRACE XD. 00000240 CA 00000250 C 00000260 C 00000270 SUBROUTINE MTDLOG (X,U,N,K,ID,XD) 00000280 REAL X (1) 00000290 REAL U (1) 00000300 REAL XD (1) 00000310 C 00000320 C FORM RESAMPLE SCALE PARAMETER Q 00000330 C 00000340 Q = 0.5E6 / K 00000350 Z = 0.5 * (ID - 1) 00000360 C 00000370 C BEGIN DEPTH OUTPUT WITH FIRST SAMPLE OF INPUT 00000380 C 00000390 XD(1) = X(1) 00000400 C 00000410 C INITIALIZE BRACKET (A & B) OF OUTPUT SAMPLES 00000420 C CORRESPONDING TO CURRENT PAIRS OF ADJACENT INPUT 00000430 C 00000440 A = 1.0 00000450 B = 1.0 + Q / U(1) 00000460 J = 2 00000470 C 00000480 C LOOP THROUGH OUTPUT SAMPLES FORMING THEM ONE AT 00000490 C A TIME FROM INTERPOLATED INPUT 00000500 C 00000510 DO 30 00000520 * I = 2, N 00000530 C 00000540 C LOAD THE OUTPUT WITH LAST INPUT FOR CASE DEPTH 00000550 C MAPS BEYOND THE 2ND OF THE INPUT ARRAY (WILL 00000560 C OVERRIDE THIS NORMALLY) 00000570 C 00000580 XD(I) = X(N) 00000590 C 00000600 C CHECK CURRENT OUTPUT SAMPLE AGAINST RANGE LIMIT 00000610 C 00000620 10 IF (B .GE. I) GO TO 20 00000630 C 00000640 C CURRENT SAMPLE OUTSIDE RANGE---UPDATE RANGE 00000650 C AND RECHECK 00000660 C 00000670 A = B 00000680 C 00000690 C IF AT THE END OF THE INPUT, LEAVE OUTPUT SET AT 00000700 C THE LAST VALUE AND GO TO THE NEXT SAMPLE 00000710 C 00000720 IF (J .GT. N) GO TO 30 00000730 B = B + Q / U(J) 00000740 J = J + 1 00000750 GO TO 10 00000760 C 00000770 C CURRENT SAMPLE WITHIN RANGE---COMPUTE FLOATING 00000780 C SAMPLE NUMBER DESIRED FROM INPUT 00000790 C 00000800 20 QI = (I - A) / (B - A) + J - 1 00000810 C 00000820 C L IS COMPUTED AS THE FIRST SAMPLE FOR THE GATE OF 00000830 C ID+1 SAMPLES CENTERED ON QI TO USE FOR INTERPOLATION 00000840 C 00000850 L = QI - Z 00000860 IF (L .LT. 1) L = 1 00000870 IF (L + ID .GT. N) L = N - ID 00000880 F = QI - L + 1.0 00000890 C 00000900 C THIS CALL PERFORMS POLYNOMIAL INTERPOLATION OF 00000910 C INPUT TO PRODUCE AN OUTPUT SAMPLE 00000920 C 00000930 CALL MPLYFT (X(L),F,XD(I),ID) 00000940 C 00000950 30 CONTINUE 00000960 RETURN 00000970 END 00000980