CTITLESPZM2D ----D POST STACK DEPTH MIGRATION C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA CA DESIGNER JAMES SUN CA AUTHOR JAMES SUN CA LANGUAGE FORTRAN CA SYSTEM IBM AND CRAY CA WRITTEN 03/08/89 CA C REVISED 01/20/90 JJC - MODIFIED TO MEET EDP STANDARDS. C REVISED 06/07/90 CLJ - UPDATED USER NOTES C REVISED 07/23/90 CLJ - ALLOW PREP TO RUN ON THE IBM C REVISED 07/25/90 CLJ - CORRECT FORMAT OF USER NOTES C REVISED 08/06/90 CLJ - ADD ERROR MESSAGE FOR UNDEFINED C VELOCITY FIELD C CA CA CA CALL SPZM2D (NO PARAMETERS) CA CA CA THIS PREPARATION ROUTINE SCRUTINIZES USER INPUT DATA CARDS CA FOR POSSIBLE ERRORS. IF NO ERRORS ARE FOUND, THE PARAMETERS CA LISTED ON THE INPUT CARDS ARE USED TO DEVELOP PROCESSING CA PARAMETERS FOR USE BY THIS PREPARATION ROUTINE'S CA CORRESPONDING PROCESSOR. THESE PARAMETERS ARE STORED ON CA DISK FOR ACCESS AT PROCESSING TIME. CA CA C EJECT C C C LOCAL ARRAYS (INTERNAL TO SUBROUTINE). C C C CARD = SPACE TO HOLD 80-CHAR. CARD INPUT DATA C80 C DATTR ( 96) = ARRAY FOR ATTRIBUTES OF DATA I4 C DENTRY ( 104) = ARRAY FOR STORAGE OF LOCAL PARAMETERS I4 C C C LOCAL VARIABLES AND CONSTANTS (INTERNAL TO SUBROUTINE). C C EJECT C CU PROCESS ZM2D -- 2-D POST STACK DEPTH MIGRATION CU CU DATA CARD (1 ) -- INPUT DATA GEOMETRY CU CU NO. OF CARDS: REQUIRED = 1 ALLOWED = 1 CU REQ OR OPT CU DF COLS DEFINITION OR DEFAULT CU -- ----- ---------- ----------- CU 1 1- 4 'ZM2D' | REQ | CU 2 - 5 PROCESS NUMBER | 0 | CU 3 - 6 NOT USED | | CU 4 - 7 PROCESSING MODE |LINE CARD| CU 'D' = DEPTH POINT MODE | | CU 5 8-10 NOT USED | | CU 6 11-15 STARTING DEPTH POINT | REQ | CU 7 16-20 ENDING DEPTH POINT | REQ | CU 8 21-25 ESTIMATED MAXIMUM TRUE DIP IN THE DATA | REQ | CU 9 26-30 LOWEST FREQUENCY (HZ) OF INTEREST | REQ | CU 10 31-35 HIGHEST FREQUENCY (HZ) OF INTEREST | REQ | CU 11 36-40 DEPTH (Z) STEP SIZE (FT) | REQ | CU 12 41-45 MAXIMUM DEPTH TO BE MIGRATED (FT) | REQ | CU 13 46-50 MAXIMUM TIME OF INPUT TRACE TO PROCESS (MS) |NOTE DF13| CU 14 51-55 NOT USED | | C 14 51-55 FOR PROGRAMMER USE ONLY (KBUFF - KBYTES) | 5000 | CU 15 56-60 NOT USED | | CU 16 61-65 DEPTH POINT SPACING (FT) |NOTE DF16| CU 17 66-70 NOT USED | | C 17 66-70 FOR PROGRAMMER USE (NTRNC) | 2 | CU 18 71-75 VELOCITY FUNCTION SMOOTHING WINDOW | 1 | CU 19 76-80 NOT USED | | CU |_________| CU DF NOTES: CU -------- CU CU 1 THE 'ZM2D' PROCESS OUTPUTS THREE SECTIONS: THE DEPTH MIGRATED CU SECTION(1), THE MIGRATED SECTION VERTICALLY STRETCHED TO CU TIME(2), AND A DEPTH INTERVAL VELOCITY PLOT(3). THEY ARE CU IDENTIFIED THROUGH THE TRACE HEADER VALUE 'FN' OR 'LNNO;. CU CU *** WARNING *** IF THE 'CTL' CARD IS USED FOR WRIT, MAKE SURE IT CU GIVES ENOUGH TRACE COUNT. CU CU 13 THIS IS USED FOR THE CASE IF NUMBER OF OUTPUT TRACE SAMPLE IS CU GREATER THAN THE INPUT. IN THIS CASE, SPECIFY THE TRACE LENGTH CU SUCH THAT IT CONTAINS ENOUGH SAMPLE FOR THE OUTPUT, AND USE CU DF13 TO SPECIFY THE ACTUAL MAXIMUM TIME OF THE INPUT TRACES. CU DEFAULT TO THE LINE CARD. CU CU 16 DEFAULT TO THE TRACE HEADER VALUE 'SPDP'. CU FLOATING POINT VALUE IS ALLOWED. CU REQUIRED IF VELOCITY Q.C. PLOTS IN PREP NEEDED. CU EJECT CU CU DATA CARD (2 ) -- MODEL DEFINITION CARD (VELOCITY MODEL) CU CU NO. OF CARDS: REQUIRED = 1 ALLOWED = 1 CU REQ OR OPT CU DF COLS DEFINITION OR DEFAULT CU -- ----- ---------- ----------- CU 1 1- 4 'ZM2D' | REQ | CU 2 - 5 PROCESS NUMBER | | CU 3 - 6 TYPE OF INTERPOLATION | L | CU 'L' = LINEAR | | CU 'S' = CUBIC SPLINE | | CU 4 - 7 NOT USED | | CU 5 8-10 'MOD' | REQ | CU 6 11-15 MAXIMUM NUMBER OF HORIZONS | REQ | CU 7 16-25 MINIMUM X IN LATERAL RANGE | REQ | CU 8 26-35 MAXIMUM X IN LATERAL RANGE | REQ | CU 9 36-45 SMALLEST ALGEBRAIC Z-VALUE IN VERTICAL RANGE | REQ | CU 10 46-55 LARGEST ALGEBRAIC Z-VALUE IN VERTICAL RANGE | REQ | CU 11 56-65 X-VALUE OF THE REFERENCE DEPTH POINT (DF13) |NOTE DF11| CU 12 66-70 THE RELATIVE DIRECTION OF THE CDP X-COORDINATE | +1 | CU (FROM CARD DF6 TO CARD DF7) AND THE MODEL | | CU +1: SAME DIRECTION AS THE MODEL | | CU -1: OPPOSITE DIRECTION AS THE MODEL | | CU 13 71-75 THE REFERENCE DEPTHPOINT |NOTE DF13| CU 14 76-80 NOT USED ----------- CU CU DF NOTES CU -- ----- CU CU 3 IF 'S' IS CHOSEN, CARE MUST BE TAKEN IN THE HORIZON DEFINITIONS CU TO CHOOSE REGULARLY SPACED CONTROL POINTS IN ORDER TO AVOID HIGH CU FREQUENCY SPLINE EFFECTS. CU CU 7- FLOATING POINT VALUE IS OKAY. CU 11 CU CU 11 THE DEFAULT VALUE IS DF7. CU CU 12 EXAMPLE: CU CU (1) CDP: DF6 (CARD 1) DF7 (CARD 1) CU MODEL: SMALLER X LARGER X CU THEN DF12 = +1 CU CU (2) CDP: DF7 (CARD 1) DF6 (CARD 1) CU MODEL: SMALLER X LARGER X CU THEN DF12 = -1 CU CU 13 THE DEFAULT VALUE IS CARD(1) DF6. CU EJECT CU CU DATA CARD (3 ) -- HORIZON DEFINITION CARD (VELOCITY MODEL) CU CU NO. OF CARDS: REQUIRED = 1 ALLOWED = NO LIMIT CU REQ OR OPT CU DF COLS DEFINITION OR DEFAULT CU -- ----- ---------- ----------- CU 1 1- 4 'ZM2D' | REQ | CU 2 - 5 PROCESS NUMBER | | CU 3 - 6 NOT USED | | CU 4 - 7 NOT USED | | CU 5 8-10 'HRZ' | REQ | CU 6 11-15 HORIZON NUMBER | REQ | CU 7 26-35 NOT USED | | CU 8 36-45 FIXED VELOCITY ACROSS HORIZON | OPT | CU 9 46-80 NOT USED | | CU ----------- CU DF NOTES CU -- ----- CU 8 IF FIXED VELOCITY ACROSS THE ENTIRE HORIZON IS DEFINED CU ON THIS CARD, ANY VELOCITY DATA IN HORIZON SAMPLE CARDS CU INVOLVING THE HORIZON WILL BE IGNORED. CU FLOATING POINT VALUE IS OKAY. CU CU EJECT CU CU DATA CARD (4 ) -- HORIZON SAMPLE CARDS (VELOCITY MODEL) CU CU NO. OF CARDS: REQUIRED = 2 ALLOWED = NO LIMIT CU REQ OR OPT CU DF COLS DEFINITION OR DEFAULT CU -- ----- ---------- ----------- CU 1 1- 4 'ZM2D' | REQ | CU 2 - 5 PROCESS NUMBER | | CU 3 - 6 NOT USED | | CU 4 - 7 NOT USED | | CU 5 8-10 'BEG' = FIRST SAMPLE CARD IN A SEGMENT | REQ | CU ' ' = INTERMEDIATE SAMPLE CARD | | CU 'END' = LAST SAMPLE CARD IN A SEGMENT | | CU 6 11-15 HORIZON NUMBER | REQ | CU 7 16-25 LATERAL (X) POSITION | REQ | CU 8 26-35 VERTICAL (Z) POSITION |NOTE DF8 | CU 9 36-45 VELOCITY UNDER HORIZON AT COORDINATE X |NOTE DF8 | CU 10 46-80 NOT USED | | CU ----------- CU CU DF NOTES CU -- ----- CU 5 EACH SUBSURFACE HORIZON IS COMPRISED OF ONE OR MORE LINE CU SEGMENTS. A SEGMENT IS DELINEATED BY A BEG AND AN END CU SAMPLE CARD. WITHIN EACH LINE SEGMENT, ANY NUMBER OF CU INTERMEDIATE SAMPLE CARDS MAY BE INSERTED. CU CU ALL BEG, INTERMEDIATE AND END SAMPLE CARDS MUST APPEAR IN CU ORDER OF INCREASING LATERAL POSITION. CU CU 7 FLOATING POINT VALUE IS OKAY. CU -9 CU CU 8 THE X-Z VALUES OF THIS CARD TYPE ARE USED TO DEFINE THE CU GEOMETRY OF THE SUBSURFACE HORIZON. THE INTERVAL CU VELOCITIES, HOWEVER, REQUIRE ONLY THE X LOCATION VALUE AS CU THEY REPRESENT PROPERTIES OF THE MATERIAL BENEATH THE CU HORIZON AT THE LATERAL POSITION SPECIFIED REGARDLESS OF CU THE Z POSITION OF THE HORIZON. CONSEQUENTLY, THE Z VALUE CU SHOULD ONLY BE SPECIFIED WHEN THE GEOMETRY OF THE CU HORIZON IS BEING DEFINED (AS OPPOSED TO THE SIMPLE CU SPECIFICATION OF INTERVAL VELOCITY). CU EJECT CU CU DATA CARD (5 ) -- END OF VELOCITY MODEL (VELOCITY MODEL) CU CU NO. OF CARDS: REQUIRED = 1 ALLOWED = 1 CU REQ OR OPT CU DF COLS DEFINITION OR DEFAULT CU -- ----- ---------- ----------- CU 1 1- 4 'ZM2D' | REQ | CU 2 - 5 PROCESS NUMBER | | CU 3 - 6 NOT USED | | CU 4 - 7 NOT USED | | CU 5 8-10 'EXT' | REQ | CU 6 11-80 NOT USED | | CU ----------- CUEND C C C FORMAT OF INPUT PARAMETER RECORDS C C C ****** FIRST RECORD, PROCESSING PARAMETERS ************ C C C WORD 1 WORD 2 WORD 3 WORD 4 WORD 5 WORD 6 WORD 7 WORD 8 C |_______|________|_______|_______|_______|_______|_______|_______| C | ZM2D | PROCESS| PTS | NOT | NOT | # OF | NOT | NOT | C |_______|_NUMBER_|_______|__USED_|__USED_|_PARMS_|__USED_|__USED_| C C C WORD 9 WORD 10 WORD 11 WORD 12 WORD 13 WORD 14 WORD 15 WORD 16 C |_______|________|_______|_______|_______|_______|_______|_______| C | IXBEG | IXEND | DX | IDIP | DZ | IZMAX | IFLO | IFHI | C |_______|________|_______|_______|_______|_______|_______|_______| C C C WORD 17 WORD 18 WORD 19 WORD 20 .......................WORD 104 C |_______|________|_______|_______|.......................|_______| C | NT | NTRNC | LOPR | KBUFF |.......................| NOT | C |_______|________|_______|_______|.......................|__USED_| C C C======================================================================= C EJECT C SUBROUTINE SPZM2D C C IMPLICIT INTEGER(A-Z) C C COMMON /P/ STATEMENTS GENERATED BY UTCGI4 11/28/83 C COMMON /P/ STARTP ( 2) , M00000( 2) COMMON /P/ LCINT COMMON /P/ LCTYP , M00020( 6) COMMON /P/ LCTPSP COMMON /P/ LCRL COMMON /P/ LCSI COMMON /P/ LCPI COMMON /P/ LCGRPI COMMON /P/ LCMXFD , M00068( 13) COMMON /P/ ACLNAM ( 5) , M00124( 68) COMMON /P/ KPNA COMMON /P/ KPRNO , M00420( 14) COMMON /P/ KPIUSM COMMON /P/ KPNUSM COMMON /P/ KPTIME COMMON /P/ KPRTF , M00492( 8) COMMON /P/ KPPRNT , M00528( 2) COMMON /P/ KPBUGF , M00540( 226) COMMON /P/ ENDP C C COMMON / SYSTEM / SYSTEM, SYBYPW,SYLOCF C C COMMON COM(1) C C=================================================================== C INTEGER ARRAYS -- LOCAL C=================================================================== C INTEGER DATTR (96) INTEGER DENTRY (104) C C=================================================================== C REAL ARRAYS AND VARIABLE C=================================================================== C REAL DX REAL DZ REAL DT REAL AENTRY (104) C C=================================================================== C EQUIVALENCES C=================================================================== C EQUIVALENCE (AENTRY(1), DENTRY (01)) C C EQUIVALENCE (DCTYP, DENTRY (03)) EQUIVALENCE (NOPAR, DENTRY (06)) EQUIVALENCE (DATTR(1), DENTRY (09)) C C================================================================= C CHARACTER CONSTANTS AND ARRAYS C================================================================= C CHARACTER*80 CARD C C================================================================= C DATA STATEMENTS C================================================================= C DATA DATTR /96 * 0/ C C ====================================================================== C INITIALIZATION C ====================================================================== C DAP = 1 NOREC = 0 IPR = KPPRNT C C NS=LCRL/LCPI C C ====================================================================== C PRINT HEADING C ====================================================================== C CALL USPHD (1, ACLNAM, KPNA, KPRNO, 0, 0, IPR) C IF(S1CPCH(SYSTEM, 1, 'CRAY', 1, 4) .NE. 0) GO TO 180 80 CONTINUE C C ====================================================================== C READ INPUT CARD (1) C ====================================================================== C DAC = 1 100 CALL FORC (KPNA, KPRNO, DAC, CARD, * 200) C IXBEG = S1CVBN(CARD,11,5) IXEND = S1CVBN(CARD,16,5) IDIP = S1CVBN(CARD,21,5) IFLO = S1CVBN(CARD,26,5) IFHI = S1CVBN(CARD,31,5) CALL USCHFT(CARD,36,5,DZ) IZMAX = S1CVBN(CARD,41,5) ITMAX = S1CVBN(CARD,46,5) KBUFF = S1CVBN(CARD,51,5) CALL USCHFT(CARD,61,5,DX) NTRNC = S1CVBN(CARD,66,5) LOPR = S1CVBN(CARD,71,5) C IF (IXBEG .EQ. 0) GO TO 240 IF (IXEND .EQ. 0) GO TO 260 IF (IDIP .EQ. 0) GO TO 280 IF (IFLO .EQ. 0) GO TO 300 IF (IFHI .EQ. 0) GO TO 320 IF (DZ .EQ. 0.) GO TO 340 IF (IZMAX .EQ. 0) GO TO 360 IF (ITMAX .EQ. 0) ITMAX=LCRL IF (KBUFF .EQ. 0) KBUFF=5000 IF (LOPR .EQ. 0) LOPR = 1 C NTRNC=MIN0(NTRNC,4) NTRNC=MAX0(NTRNC,2) C WRITE(IPR,8000) IXBEG,IXEND,DX,DZ,IZMAX, * IFLO,IFHI,IDIP,NTRNC,LOPR C DT = LCPI*0.001 NT=ITMAX/LCPI CJJ NZ=INT((FLOAT(IZMAX)+0.00001)/DZ) IF(NZ.GT.NS) GO TO 220 C WRITE(IPR,8020) NS,NZ,NT C C ====================================================================== C PRINT VELOCITY QC PLOTS C ====================================================================== C IF(DX.NE.0.0) THEN C C DAC = 1 120 CALL FORC (KPNA, KPRNO, DAC, CARD, * 400 ) IF(S1CPCH(CARD,8,'MOD',1,3) .NE. 0) GO TO 120 NUMH = S1CVBN (CARD, 11, 5 ) ICOM=KPIUSM CALL SPZM2DA(COM(ICOM),IXBEG,IXEND,DX,NZ,DZ,NUMH, + KPNA,KPRNO,KPNUSM,CARD,IABT,IPR,LOPR,NT,DT) IF(IABT .NE. 0) GO TO 420 C C ENDIF C C ====================================================================== C PREPARE 'PTS' RECORD C ====================================================================== C DENTRY(1) = KPNA DENTRY(2) = KPRNO C C CALL S1MVCH ('PTS', 1, DCTYP, 1, 3) C C CALL ARSET (DATTR, 96, 0) C C**** SET NO. OF PARAMETERS ON THIS RECORD C NOPAR = 12 C C DATTR( 1) = IXBEG DATTR( 2) = IXEND AENTRY(11) = DX DATTR( 4) = IDIP C C DATTR( 5) = IDZ C AENTRY(13) = DZ DATTR( 6) = IZMAX DATTR( 7) = IFLO DATTR( 8) = IFHI DATTR( 9) = NT DATTR(10) = NTRNC DATTR(11) = LOPR DATTR(12) = KBUFF C C CALL FOWP (KPNA, KPRNO, DAP, 104, DENTRY, * 380 ) NOREC = NOREC + 1 C C ===================================================================== C NORMAL TERMINATION C ===================================================================== C C C IF (KPBUGF .NE. 0) THEN DAP = 1 140 CALL FORP (KPNA, KPRNO, DAP, 104, DENTRY, * 160 ) WRITE (IPR, 8240) DENTRY GO TO 140 160 CONTINUE ENDIF C C WRITE (IPR, 8260) KPNA, KPRNO, NOREC C C RETURN C C ===================================================================== C ERROR EXITS C ===================================================================== C 180 WRITE (IPR, 8040 ) GO TO 80 C C 200 WRITE (IPR, 8060 ) KPNA, KPRNO GO TO 440 C C 220 WRITE (IPR, 8080 ) NZ, NS GO TO 440 C C 240 WRITE (IPR, 8100 ) GO TO 440 C C 260 WRITE (IPR, 8120 ) GO TO 440 C C 280 WRITE (IPR, 8140 ) GO TO 440 C C 300 WRITE (IPR, 8160 ) GO TO 440 C C 320 WRITE (IPR, 8180 ) GO TO 440 C C 340 WRITE (IPR, 8200 ) GO TO 440 C C 360 WRITE (IPR, 8220 ) GO TO 440 C C 380 WRITE (IPR, 8280 ) GO TO 440 C C 400 WRITE (IPR, 8300 ) GO TO 440 C C 420 WRITE (IPR, 8320 ) C C 440 KPRTF = -1 C C RETURN C C ================================================================= C FORMAT STATEMENTS C ================================================================= C C C 8000 FORMAT(/,' STARTING DEPTH POINT IXBEG =',I5, + /,' ENDING DEPTH POINT IXEND =',I5, + /,' DEPTH POINT SPACING DX =',F10.3, + /,' DEPTH (Z) STEP SIZE (FT) DZ =',F10.3, + /,' MAXIMUM DEPTH TO BE MIGRATED IZMAX =',I5, + /,' LOWEST FREQUENCY OF INTEREST IFLO =',I5, + /,' HIGHEST FREQUENCY OF INTEREST IFHI =',I5, + /,' ESTIMATED MAXIMUM TRUE DIP IDIP =',I5, + /,' (DF17) NTRNC =',I5, + /,' VELOCITY FUNCTION SMOOTHING WNDW LOPR =',I5) C C 8020 FORMAT(/,' NO. OF SAMPLES OF THE TRACE NS =', I5,/, + ' NO. OF DEPTH STEPS NZ =', I5,/, + ' NO. OF SAMPLES OF THE TIME NT =', I5 ) C C 8040 FORMAT(/,' *** WARNING *** ', * /,' *** WARNING *** PROC RUNS ON THE CRAY SYSTEM ONLY ', * /,' *** WARNING *** ',/) C C 8060 FORMAT(/,' *** NO CARD(1) FOUND FOR ',A4,I1) C C 8080 FORMAT(/,' *** INPUT TRACE DOES NOT HAVE ENOUGH SAMPLES TO ACCEPT' + /,' OUTPUT TRACE: NZ (=',I4,') > NS (=',I4,')', + /,' *** JOB ABORTED ***') C C 8100 FORMAT(/,' STARTING DEPTHPOINT MISSING; IT IS REQUIRED') C C 8120 FORMAT(/,' ENDING DEPTHPOINT MISSING; IT IS REQUIRED') C C 8140 FORMAT(/,' MAXIMUM TRUE DIP MISSING; IT IS REQUIRED') C C 8160 FORMAT(/,' LOWEST FREQENCY MISSING; IT IS REQUIRED') C C 8180 FORMAT(/,' HIGHEST FREQENCY MISSING; IT IS REQUIRED') C C 8200 FORMAT(/,' Z (DEPTH) STEP SIZE MISSING; IT IS REQUIRED') C C 8220 FORMAT(/,' MAXIMUM DEPTH MISSING; IT IS REQUIRED') C C 8240 FORMAT (1X,A4,I1,5X,A4,3I5,1X,I5,I5,/,4(1X,24I5,/)) C C 8260 FORMAT (//,' *** ',A4,I1,' COMPLETED -- NO ERRORS,', * /,' *** TOTAL NUMBER OF PARAMETER RECORDS = ',I5) C C 8280 FORMAT (/,' *** ERROR WRITING PARAMETER RECORD ***') C C 8300 FORMAT(/,' *** NO CARD(2) FOUND FOR ',A4,I1) C C 8320 FORMAT (/,' *** ERROR IN SPZM2D ROUTINE ***') C C END