CTITLESAMNVR -- MINIMUM VARIANCE TRACE DECON 00000010 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR D. NYMAN 00000020 CA DESIGNER D. NYMAN 00000030 CA LANGUAGE S/370 FORTRAN H 00000040 CA SYSTEM IBM AND CRAY CA WRITTEN 05/09/78 00000050 C REVISED 11/07/78 COUNT TRACES PROCESSED 00000060 C REVISED 10/01/90 MAA ADDED ANOTHER VARIABLE (Y) TO THE 00000070 C PARAMETER LIST OF THE CALL TO SAPDDN. C MAA CHANGED THE ALTERNATE RETURN CHARACTER00000080 C FROM '&' TO '*'-MODIFIED FOR CRAY USE. CA 00000090 CA CALL SAMNVR (X, IND, OPAR, NOPRS, AVAR, PCC, AVPCC, Y, NUSM, *STMT) 00000100 CA 00000110 CA 00000120 CA INPUT X = ARRAY OF TRACE TIME WINDOWS R4 00000130 CA IND(1,I) = STARTING INDEX OF WINDOW I I4 00000140 CA IND(2,I) = ENDING INDEX OF WINDOW I 00000150 CA OPAR(1,I) = WINDOW I OPERATOR LENGTH IN POINTS I4 00000160 CA OPAR(2,I) = PREDICTION DISTANCE (>0), OR LENGTH OF 00000170 CA ANTICIPATORY PART OF OPERATOR (<0) 00000180 CA NOPRS = NUMBER OF WINDOWS AND OPERATORS I4 00000190 CA AVAR(I) = SUM OF WINDOW I OUTPUT TRACE VARIANCES R4 00000200 CA FOR ALL TRACES 00000210 CA AVPCC = SUM OF PARTIAL CORRELATION COEFFICIENTS R8 00000220 CA FOR ALL TRACES 00000230 CA NUSM = MAXIMUM LENGTH OF TEMPORARY WORK ARRAY Y I4 00000240 CA *STMT = ERROR RETURN STATEMENT NUMBER IF THERE 00000250 CA IS INSUFFICIENT LENGTH IN ARRAY Y 00000260 CA 00000270 CA OUTPUT X = ARRAY OF DECONVOLVED TRACE TIME WINDOWS R4 00000280 CA PCC = PARTIAL CORRELATION COEFFICIENT ARRAY R8 00000290 CA 00000300 CA Y = TEMPORARY WORK ARRAY, AT LEAST OF LENGTH R4 00000310 CA 4 (MAX WINDOW LENGTH + OPERATOR LENGTH) 00000320 CA 00000330 CA SAMNVR TAKES THE SPECIFIED TRACE WINDOWS FROM ARRAY X , AND 00000340 CA CALLS THE APPROPRIATE MINIMUM VARIANCE DECON SUBROUTINE: 'SAKDCN' 00000350 CA FOR SPIKING AND INTERPOLATION DECON, OR 'SAPDDN' FOR PREDICTION 00000360 CA DECON (PREDICTION DISTANCE > 1). 00000370 CA 00000380 CA 00000390 CA======================================================================00000400 C EJECT 00000410 C=======================================================================00000420 C 00000430 C LOCAL VARIABLES AND CONSTANTS 00000440 C 00000450 C IC = PCC ARRAY INDEX POINTER I4 00000460 C IX1 = ARRAY Y WORK SUB-ARRAY INDEX POINTER I4 00000470 C IX2 = ARRAY Y WORK SUB-ARRAY INDEX POINTER I4 00000480 C IX3 = ARRAY Y WORK SUB-ARRAY INDEX POINTER I4 00000490 C I0 = INDEX-1 OF FIRST POINT IN ARRAY X WINDOW I4 00000500 C LEN = LENGTH OF ARRAY Y WORK SUB-ARRAYS I4 00000510 C NANT = NUMBER OF ANTICIPATORY OPERATOR COEFFICIENTS I4 00000520 C NMEM = NUMBER OF MEMORY OPERATOR COEFFICIENTS I4 00000530 C NPTS = NUMBER OF POINTS IN TIME WINDOW I4 00000540 C OPL = OPERATOR LENGTH IN POINTS I4 00000550 C PRED = PREDICTION DISTANCE (>0), ANTICIPATORY LENGTH (<0) I4 00000560 C 00000570 C 00000580 C=======================================================================00000590 C EJECT 00000600 C 00000610 SUBROUTINE SAMNVR 00000620 * (X, IND, OPAR, NOPRS, AVAR, PCC, AVPCC, Y, NUSM, *) 00000630 C 00000640 IMPLICIT INTEGER (A-Z) 00000650 C REAL*8 PCC, AVPCC, RAVE 00000660 DOUBLE PRECISION PCC, AVPCC, RAVE 00000660 REAL X, Y, AVAR, VAR 00000670 INTEGER NAVE(4) 00000680 C INTEGER*2 NAVE(4) 00000680 EQUIVALENCE (RAVE,NAVE(1)) 00000690 DIMENSION X(1), IND(2,1), OPAR(2,1), AVAR(1), PCC(1), 00000700 * AVPCC(1), Y(1) 00000710 C 00000720 C PLACE EACH TIME WINDOW IN ARRAY Y 00000730 C AND CALL THE APPROPRIATE ROUTINE 00000740 C 00000750 RAVE=AVPCC(1) 00000760 IC=1 00000770 C 00010590 C C 00010590 C 00000780 DO 50 I=1,NOPRS 00000790 NPTS=IND(2,I)-IND(1,I)+1 00000800 OPL=OPAR(1,I) 00000810 PRED=OPAR(2,I) 00000820 LEN=NPTS+OPL+2 00000830 I0=IND(1,I)-1 00000840 IX1=LEN+1 00000850 IX2=IX1+LEN 00000860 C 00000870 DO 10 J=1,NPTS 00000880 10 Y(J)=X(I0+J) 00000890 C 00000900 IF (PRED.GT.1) GO TO 20 00000910 C 00000920 C PERFORM SPIKING / INTERPOLATION DECON 00000930 C 00000940 IX3=IX2+LEN 00000950 IF (IX3+LEN*(1-ISIGN(1,PRED*2+1))/2.GT.NUSM) RETURN 1 00000960 NANT=-MIN0(PRED,0) 00000970 NMEM=OPL-NANT 00000980 CALL SAKDCN 00000990 * (Y, NPTS, NANT, NMEM, VAR, PCC(IC), Y(IX1), Y(IX2), Y(IX3)) 00001000 IC=IC+OPL 00001010 GO TO 30 00001020 C 00001030 C PERFORM PREDICTION DECON 00001040 C 00001050 20 IF (IX2+LEN.GT.NUSM) RETURN 1 00001060 CALL SAPDDN 00001070 * (Y,Y,NPTS,PRED,OPL,VAR,PCC(IC),Y(IX1),Y(IX2)) 00001070 IC=IC+OPL*2 00001080 C 00001090 C PLACE DECONVOLVED TIME WINDOW IN ARRAY X 00001100 C 00001110 30 DO 40 J=1,NPTS 00001120 40 X(I0+J)=Y(J) 00001130 C 00001140 IF (VAR.NE.0) NAVE(I)=NAVE(I)+1 00001150 50 AVAR(I)=AVAR(I)+VAR 00001160 C 00001170 C ADD CURRENT PARTIAL CORRELATION 00001180 C COEFFICIENTS TO ARRAY AVPCC 00001190 C 00001200 AVPCC(1)=RAVE 00001210 C 00001220 DO 60 I = 2,IC 00001230 60 AVPCC(I) = AVPCC(I) + PCC(I-1) 00001240 C 00001250 RETURN 00001260 C 00001270 END 00001280