CAINDMS2SPLT -- SPLITS UP TRACE INTO TIME GATES 00000010 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CTITLE S2SPLT -- SPLITS UP TRACE INTO TIME GATES 00000010 CA AUTHOR HOOGSTRAAT 00000040 CA DESIGNER HOOGSTRAAT 00000050 CA LANGUAGE S/370 FORTRAN H EXTENDED 00000060 CA WRITTEN UNKNOWN 00000070 C REVISED 10-04-76 MENDEKE - ADJUSTED WINDOW START TIME 00000080 C BY VELOCITY AND DISTANCE. 00000081 C 00000082 C 00000083 C 00000084 C 00000085 SUBROUTINE S2SPLT (XTEM,RLENG,SAMPIN,SAMPOT,PAR,L,M,OFFSET, 00000090 * IPR,IC,NEWIC,NOSPL,COMEND,ERROR) 00000100 CA 00000105 CA 00000110 CA CALL S2SPLT (XTEM,RLENG,SAMPIN,SAMPOT,PAR,L,M,OFFSET, 00000120 CA IPR,IC,NEWIC,NOSPL,COMEND,ERROR) 00000130 CA 00000140 CA 00000150 CA INPUT XTEM = INPUT TRACE R4 00000160 CA INPUT RLENG = RECORD LENGTH IN MS I4 00000170 CA INPUT SAMPIN = CURRENT SAMPLE RATE I4 00000180 CA INPUT SAMPOT = SAMPLE RATE AFTER PROCESSING I4 00000190 CA INPUT PAR = PARAMETER ARRAY I4 00000200 CA INPUT L = NO OF PARAMETERS FOR EACH WINDOW I4 00000210 CA INPUT M = NO OF TRACE WINDOWS I4 00000220 CA 00000230 CA INPUT PAR(1,M) = START TIME OF WINDOW I4 00000240 CA 00000250 CA INPUT PAR(3,M) TO PAR(L-2,M) THE VARIOUS FILTER I4 00000260 CA PARAMETERS 00000270 CA OUTPUT PAR(L-1,M)= COMMON INDEX OF SPLIT OFF TRACE I4 00000280 CA WINDOW 00000281 CA OUTPUT PAR(L ,M)= WINDOW LENGTH I4 00000290 CA 00000300 CA INPUT OFFSET = NO OF SAMPLES TO BE APPENDED I4 00000310 CA BEFORE EACH WINDOW 00000320 CA INPUT IPR = PRINTER UNIT I4 00000330 CA 00000340 CA 00000350 CA I / O IC = TO BE USED COMMON SCRATCH START INDEX I4 00000360 CA OUTPUT NOSPL = NO OF TRACE WINDOWS SPLITTED OFF UPON I4 00000370 CA RETURN 00000380 CA 00000381 CA S2SPLT SPLITS THE INPUT TRACE IN XTEM INTO THE VARIOUS 00000390 CA OVERLAPPING TRACE WINDOWS AS SPECIFIED IN PAR. 00000400 CA 00000410 CA 00000420 CA 00000430 CA 00000440 CAEND 00000450 CTITLE S2COMB -- RECOMBINES TIME GATES TO FORM A TRACE 00000460 CA AUTHOR HOOGSTRAAT 00000470 CA DESIGNER HOOGSTRAAT 00000480 CA LANGUAGE S/370 FORTRAN H EXTENDED 00000490 CA WRITTEN UNKNOWN 00000500 C REVISED MO-DA-YR 00000510 C 00000520 CA 00000530 CA 00000540 CA CALL S2COMB (XTEM,RLENG,SAMPIN,SAMPOT,PAR,L,M,OFFSET, 00000550 CA IPR,IC,NOSPLT) 00000560 CA 00000570 CA 00000580 CA INPUT XTEM = INPUT TRACE ADDRESS R4 00000581 CA INPUT RLENG = RECORD LENGTH IN MS I4 00000591 CA INPUT SAMPIN = CURRENT SAMPLE RATE I4 00000601 CA INPUT SAMPOT = SAMPLE RATE AFTER PROCESSING I4 00000611 CA INPUT PAR = PARAMETER ARRAY I4 00000621 CA INPUT L = NO OF PARAMETERS FOR EACH WINDOW I4 00000631 CA INPUT M = NO OF TRACE WINDOWS I4 00000641 CA 00000651 CA INPUT PAR(1,M) = START TIME OF WINDOW I4 00000661 CA INPUT PAR(3,M) TO PAR(L-2,M) THE VARIOUS FILTER I4 00000671 CA PARAMETERS 00000681 CA 00000691 CA INPUT PAR(L-1,M)= COMMON INDEX OF SPLIT OFF I4 00000700 CA TRACE WINDOW 00000701 CA INPUT PAR(L ,M)= WINDOW LENGTH I4 00000711 CA 00000721 CA INPUT OFFSET = NO OF SAMPLES TO BE APPENDED I4 00000731 CA BEFORE EACH WINDOW 00000741 CA INPUT IPR = PRINTER UNIT I4 00000751 CA INPUT IC = INDEX TO BLANK COMMON I4 00000761 CA INPUT NOSPLT = NO OF WINDOWS I4 00000771 CA 00000780 CA S2COMB RECOMBINES THE TRACE WINDOWS BACK TO A TRACE. 00000781 CA 00000782 CAEND 00000783 IMPLICIT INTEGER (A-Z) 00000784 C 00000785 REAL XTEM (10) 00000786 COMMON COM (10) 00000787 REAL COM 00000788 INTEGER PAR (L,M) 00000789 EXTERNAL S1ATP 00000790 C 00000791 C 00000792 REAL A 00000800 REAL B 00000810 REAL C 00000820 C 00000830 NOSPL = 0 00000840 C 00000850 C CHECK FOR 1 WINDOW ONLY, IF SO RETURN WITH NOSPL = 0 00000860 C WHICH MEANS NO TIME VARIANT AND THE TRACE IS FINE WHERE IT IS 00000870 C 00000880 IF (PAR(1,2).GE.RLENG) RETURN 00000890 C 00000900 IS = IC 00000910 C 00000920 C GET INPUT TRACE LENGTH IN SAMPLES, AND WINDOW OVERLAP 00000930 C 00000940 SAMMAX = SAMPIN 00000950 IF (SAMMAX.LT.SAMPOT) SAMMAX = SAMPOT 00000960 C 00000970 MM = SAMMAX * 2 00000980 C 00000990 C 00001000 NOSAMP = RLENG / SAMPIN 00001010 C 00001020 C 00001030 C 00001040 C SET START OF FIRST WINDOW 00001050 C 00001060 C 00001070 C 00001080 C = PAR(18,1) 00001090 IW1 = 1 00001100 C 00001110 DO 10 I = 1, M 00001120 IW2 = NOSAMP 00001121 C SET OVERLAP SAMPLE 00001122 C 00001130 PAR(2,I) = (PAR(2,I) + MM -1) / MM * MM 00001140 OVER = PAR(2,I) / SAMPIN / 2 00001150 IF (I .NE. 1) PAR(16,I) = PAR(2,I-1)/SAMPIN/2 00001160 C 00001170 C ADJUST START TIME BY DISTANCE AND VELOCITY 00001171 C 00001172 IF (I .EQ. M) GO TO 25 00001180 ADJSTM = PAR(1,I+1) 00001181 TESTV = PAR(19,I+1) 00001191 IF(TESTV .EQ. 0) GO TO 20 00001201 A = C * 1000. / TESTV 00001211 B = ADJSTM 00001221 IF (TESTV .GT. 0) ADJSTM = SQRT(B*B + A*A) 00001231 IF (TESTV .LT. 0) ADJSTM = B - A 00001241 20 ADJSTM = ADJSTM / SAMMAX * SAMMAX 00001242 PAR(L-2,I+1) = ADJSTM 00001243 IW2 = ADJSTM / SAMPIN + OVER 00001244 C 00001245 C LAST WINDOW MUST COMPLETE THE JOB 00001246 C 00001247 C 00001250 C 00001260 C CHECK FOR EARLY COMPLETION 00001270 C 00001280 25 IF (IW2.GT.NOSAMP) IW2 = NOSAMP 00001290 C 00001300 C COMPUTE WINDOW LENGTH AND REQUIRED FFT LENGTH FOR THIS WINDOW 00001310 C ERROR OF ON NEGATIVE WINDOW LENGTH 00001320 C 00001330 LW = IW2 - IW1 + 1 00001340 IF (LW.LT.1) GO TO 8002 00001350 C 00001360 IF (SAMPIN.LT.SAMPOT) GO TO 30 00001370 C 00001380 CALL S1FMAG (LW,MAG,LFOUR) 00001390 LFOUR = LFOUR * SAMPIN / SAMPOT 00001400 GO TO 40 00001410 C 00001420 30 CALL S1FMAG (LW*SAMPIN/SAMPOT,MAG,LFOUR) 00001430 LFOUR = LFOUR * SAMPOT / SAMPIN 00001440 C 00001450 C CHECK NOT TO EXCEED AVAILABLE COMMON 00001460 C 00001470 40 IF (IS+OFFSET+LFOUR.GT.COMEND) GO TO 8001 00001480 C 00001490 NOSPL = NOSPL + 1 00001500 C 00001510 IS = IS + OFFSET 00001520 C 00001530 C SAVE COMMON INDEX OF WINDOW START 00001540 C AND THE WINDOW LENGTH EXCLUDING THE OFFSET 00001550 C 00001560 PAR(L-1,I) = IS 00001570 PAR(L ,I) = LW 00001580 C 00001590 C MOVE TRACE WINDOW INTO COMMON 00001600 C 00001610 CALL ARMVE (XTEM(IW1),COM(IS),LW) 00001620 IS = IS + LFOUR + 2 00001630 C 00001640 C CHECK FOR END OF S1SPLT 00001650 C 00001660 IF ( IW2.NE.NOSAMP) GO TO 5 00001670 C 00001680 NEWIC = IS 00001690 RETURN 00001700 C 00001710 C SET START OF NEXT WINDOW 00001720 C 00001730 5 IW1 = IW2 - OVER - OVER + 1 00001740 10 CONTINUE 00001750 C 00001760 ENTRY S2COMB (XTEM,RLENG,SAMPIN,SAMPOT,PAR,L,M,OFFSET, 00001770 * IPR,IC,NOSPLT) 00001780 C 00001790 C 00001800 LW = PAR(L,1) 00001810 FR = PAR(L-1,1) 00001820 IW1 = 1 00001830 C 00001840 C RECOMBINE TRACE WINDOWS 00001850 C 00001860 DO 100 I = 1, NOSPL 00001870 C 00001880 OVER = PAR(2,I) / SAMPOT 00001890 C 00001900 CALL ARMVE (COM(FR),XTEM(IW1),LW) 00001910 C 00001920 C CHEC IF DONE 00001930 C 00001940 IF (I.EQ.NOSPL) RETURN 00001950 C 00001960 C TIE ENDS 00001970 C 00001980 IM1 = IW1 + LW - OVER 00001990 IM2 = PAR(L-1,I+1) 00002000 C = 1. / (OVER+1) 00002010 A = C 00002020 B = OVER * C 00002030 C 00002040 DO 110 K = 1, OVER 00002050 XTEM(IM1) = XTEM(IM1)*B + COM(IM2)*A 00002060 IM1 = IM1 + 1 00002070 IM2 = IM2 + 1 00002080 A = A + C 00002090 B = B - C 00002100 110 CONTINUE 00002110 C 00002120 C GET READY FOR NEXT MOVE 00002130 C 00002140 IW1 = IW1 + LW 00002150 LW = PAR(L,I+1) - OVER 00002160 FR = PAR(L-1,I+1) + OVER 00002170 100 CONTINUE 00002180 C 00002190 C ERROR EXIT 00002200 C 00002210 8001 WRITE (IPR,88001) 00002220 88001 FORMAT (4X/' *** NOT ENOUGH COMMON FOR S2SPLT') 00002230 GO TO 8100 00002240 C 00002250 8002 WRITE (IPR,88002) 00002260 88002 FORMAT (4X/' *** NEGATIVE WINDOW LENGTH ENCOUNTERED IN', 00002270 * ' S2SPLT') 00002280 C 00002290 8100 ERROR = - 1 00002300 RETURN 00002310 END 00002320