CTITLESAHCIC _ PERFORM PRESTACK COLLECTION FOR PROCESS AVEL C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** C @PROCESS VECTOR(IVA REPORT(SLIST)) C CA AUTHOR H. W. SWAN CA DESIGNER H. W. SWAN CA SYSTEM IBM/CRAY CA LANGUAGE VS FORTRAN VERSION 2.2 CA WRITTEN 12-03-87 CA LAST REVISED 10-26-88 C REVISED 05-23-91 JJC - CHANGED IMPLICIT NONE TO (A-Z). C REVISED 12-17-91 JJC - MODIFIED TO MEET SPARC STANDARDS C C REVISED BY MM-DD-YY REASON C --------------------------------------------------- C DPRHWS 07-06-88 ADDED TAU-P CAPABILITY C DPRHWS 10-14-88 ADDED DIP ANGLE CORRECTION C DPRHWS 10-26-88 ADDED PHYSICAL APERTURE LIMIT C ADJUST FIRST & LAST LIVE C VALUES TO REFLECT LEADING C AND TRAILING ZEROS. C DPRHWS 08-02-89 FIN AND LIN ARE NOW UPDATED C TO REFLECT THE FIRST AND C LAST VALUES ACTUALLY USED C IN THE DATA COLLECTION C DPRHWS 08-02-89 ADDED 'SCRATCH' OUTPUT ARRAY C TO THE CALLING LIST. C CA CA CA CALLING SEQUENCE: CA SUBROUTINE SAHCIC(S, TRACE, SLOTH, DIPANG, SCRATCH, CA FIN, LIN, FOUT, LOUT, T0, TSAMP, XOFF, ALIM, TPFLG, SPDP) CA CAIN/OUT ARGUMENT TYPE DESCRIPTION CA______ ________ ____ ___________ CA CAIN/OUT S (R4) THE RUNNING SUMS OF VARIOUS POWERS OF DATA CA SIN**2 (PHI). THIS ARRAY MUST BE INITIALIZED CA TO 0 BEFORE THE START OF A NEW CDP OR VELOCITY CA FUNCTION. CA (2-D ARRAY, DIMENSIONED: FOUT:LOUT X 8) CA CA IN TRACE (R4) THE NEXT TRACE OF THIS MOVED OUT CDP GATHER; CA (1-D ARRAY, DIMENSIONED: LIN) CA CA IN SLOTH (R4) THE STACKING SLOTH FUNCTION WHICH WAS USED CA TO NMO CORRECT THIS CDP GATHER. `SLOTH' CA IS DEFINED TO BE {VELOCITY ** (-2)}. CA (1-D ARRAY, DIMENSIONED: 0:LIN+1) CA CA IN DIPANG (R4) THE REFLECTOR DIP ANGLE (DEGREES) CA (1-D ARRAY, DIMENSIONED: LIN) CA CA OUT SCRATCH (R8) A SCRATCH ARRAY CA (1-D ARRAY, DIMENSIONED: LIN) CA CAIN/OUT FIN I4 THE INDEX OF THE FIRST LIVE VALUE IN THE CA INPUT TRACE CA CAIN/OUT LIN I4 THE INDEX OF THE LAST LIVE VALUE IN THE CA INPUT TRACE CA CA IN FOUT I4 THE INDEX OF THE FIRST OUTPUT SAMPLE UNDER CA ANALYSIS CA CA IN LOUT I4 THE INDEX OF THE LAST OUTPUT SAMPLE UNDER CA ANALYSIS CA CA IN T0 R4 THE TIME IN SECONDS OF THE SAMPLE TRACE(1); CA CA IN TSAMP R4 THE SAMPLE INTERVAL IN SECONDS; CA CA IN XOFF R4 THE SHOT-RECEIVER OFFSET FOR THIS TRACE (FT); CA FOR TAU-P DATA, THE 'P' VALUE (SEC/FT). CA CA IN ALIM R4 THE SIN**2 OF THE MAXIMUM INCIDENCE ANGLE TO CA COLLECT. CA CA IN TPFLG I4 0 = FOR X-T DATA; 1 = FOR TAU-P DATA. CA CA IN SPDP R4 THE MINIMUM AND MAXIMUM SIGNED PHYSICAL CA APERTURES FOR THIS GATHER (FEET) CA CA PURPOSE: CA CA THIS SUBROUTINE COLLECTS RUNNING SUMS FOR HYDROCARBON DETECTION. CA SUBROUTINE SAHCIC(S, TRACE, SLOTH, DIPANG, SCRATCH, * FIN, LIN, FOUT, LOUT, T0, TSAMP, XOFF, ALIM, TPFLG, SPDP) C CJJ IMPLICIT NONE IMPLICIT INTEGER (A-Z) C INTEGER SY, SX2Y, SX4Y, SX0, SX2, SX4, SX6, SX8 INTEGER I, TPFLG, FIN, LIN, FOUT, LOUT, FLV, LLV INTEGER NEWFIN, NEWLIN REAL TR, X2P, TIME, TRACE, SLOTH, S, TSAMP, T0, XOFF, ALIM REAL DIPANG, STH, SPDP(2), ALIM1, ALIM2, P, T1, T2, PI PARAMETER (SY=1, SX2Y=2, SX4Y=3, SX0=4, SX2=5, SX4=6) PARAMETER (SX6=7, SX8=8) PARAMETER (PI=3.14259) DIMENSION S(FOUT:LOUT, 8), TRACE(LIN), SLOTH(0:LIN+1) DIMENSION DIPANG(LIN) DOUBLE PRECISION X2, S0, S1, S2, S4, S6, S8, XP DOUBLE PRECISION C2TH, S2TH DOUBLE PRECISION SCRATCH(LIN) NEWFIN = 0 NEWLIN = -1 X2 = XOFF * XOFF C C FIND THE FIRST AND LAST LIVE VALUES. C DO 50 I=FIN, LIN FLV = I IF(TRACE(I) .NE. 0.0) GO TO 60 50 CONTINUE 60 DO 80 I=LIN, FIN, -1 LLV = I IF(TRACE(I) .NE. 0.0) GO TO 100 80 CONTINUE C C***************************************************** C * C HANDLE X-T DATA. * C * C***************************************************** C 100 IF(TPFLG .NE. 1) THEN C C THE FOLLOWING VECTORIZABLE LOOP PLACES A "-1.0" INTO THE 'SCRATCH' C ARRAY FOR EVERY SAMPLE OUTSIDE THE MUTE ZONE. C DO 150 I=FLV, LLV TIME = (I-1)*TSAMP + T0 X2P = X2 * SLOTH(I) S2 = 0.0 IF(TIME .GT. 0) S2 = X2P / (X2P + TIME*TIME) SCRATCH(I) = S2 IF(REAL(S2) .GT. ALIM) SCRATCH(I) = -1.0 150 CONTINUE C C***************************************************** C * C HANDLE TAU-P DATA. * C * C***************************************************** C ELSE C C THE FOLLOWING VECTORIZABLE LOOP PLACES A "-1.0" INTO THE 'SCRATCH' C ARRAY FOR EVERY SAMPLE OUTSIDE THE MUTE ZONE. C DO 200 I=FLV, LLV TIME = (I-1)*TSAMP + T0 TR = TRACE(I) P = SQRT(SLOTH(I)) S1 = XOFF / P S2 = X2 / SLOTH(I) S2TH = SIN(PI*DIPANG(I)/90.0) C2TH = DSQRT(1D0 - S2TH**2) S2 = (S2-0.5)*C2TH + S1*DSQRT(1D0-S2)*S2TH + 0.5 T1 = P * SPDP(1) T2 = P * SPDP(2) ALIM1= T1 / SQRT(T1**2 + TIME**2 + 1E-4) ALIM2= T2 / SQRT(T2**2 + TIME**2 + 1E-4) SCRATCH(I) = S2 IF(REAL(S1) .LT. ALIM1 .OR. REAL(S1) .GT. ALIM2 * .OR. REAL(S2) .GT. ALIM) SCRATCH(I) = -1.0 200 CONTINUE ENDIF C C******************************************************************* C * C COMMON CODE FOR BOTH X-T AND TAU-P DATA: * C * C******************************************************************* C C C THE FOLLOWING NON-VECTORIZABLE LOOP SEARCHES FOR THE FIRST AND C LAST LIVE VALUES WITHIN THE MUTE ZONE. C DO 300 I=FLV, LLV IF(SCRATCH(I) .LT. 0.0) THEN IF(NEWFIN .GT. 0) GO TO 350 ELSE IF(NEWFIN .EQ. 0) NEWFIN = I NEWLIN = I ENDIF 300 CONTINUE C C THE FOLLOWING VECTORIZABLE LOOP ACTUALLY DOES THE DATA COLLECTION, C OVER THE RANGE OF DATA WITHIN THE MUTE ZONE. C 350 DO 400 I=NEWFIN, NEWLIN TR = TRACE(I) S0 = 1.0 S2 = SCRATCH(I) S4 = S2 * S2 S6 = S2 * S4 S8 = S4 * S4 S(I, SY) = S(I, SY) + TR S(I, SX2Y) = S(I, SX2Y) + TR * S2 S(I, SX4Y) = S(I, SX4Y) + TR * S4 S(I, SX0) = S(I, SX0) + S0 S(I, SX2) = S(I, SX2) + S2 S(I, SX4) = S(I, SX4) + S4 S(I, SX6) = S(I, SX6) + S6 S(I, SX8) = S(I, SX8) + S8 400 CONTINUE C C RETURN THE NEW FIRST AND LAST LIVE VALUES WITHIN THE MUTE ZONE. C STORE THESE LAST, SINCE THEY'RE USED TO DYNAMICALLY DIMENSION C DUMMY ARRAYS! C FIN = NEWFIN LIN = NEWLIN RETURN END