CTITLESAFF3DC - DETERMINE WHICH TRACES CONTRIBUTE TO FILTER C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CABS SAFF3DC - DETERMINE WHICH TRACES CONTRIBUTE TO FILTER C CSUBROUTINE SAFF3DC C C SUBROUTINE SAFF3DC( KTR,NTR,X,Y,TID,DXMAX,POX, C * NTIN,IOUT,ITN,DX ) C C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1992. C C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, C REPRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT THE C PRIOR CONSENT OF ATLANTIC RICHFIELD COMPANY. C CA CA DESIGNER D CORRIGAN CA AUTHOR D CORRIGAN CA LANGUAGE FORTRAN 77 CA SYSTEM IBM/CRAY CA WRITTEN 08-28-91 CA CA PURPOSE OF PROGRAM: CA CA FOR A GIVEN OUTPUT TRACE, THIS SUBROUTINE DETERMINES WHICH CA INPUT TRACES WILL CONTRIBUTE TO THE FAN REJECT FILTER. CA C************************************************************** C * C SUBROUTINES AND FUNCTIONS CALLED FROM THIS ROUTINE * C * C SAFF3DH * C * C************************************************************** C CA ARGUMENTS: CA CA CA ARGUMENT TYPE I/O MEANING CA -------- ------- --- -------- CA CA KTR INTEGER I CURRENT OUTPUT TRACE CA NTR INTEGER I TOTAL NUMBER OF TRACES CA X INTEGER I ARRAY OF X-COORDINATES (NTR) CA Y INTEGER I ARRAY OF Y-COORDINATES (NTR) CA TID INTEGER I ARRAY OF TRACE ID-S (NTR) CA DXMAX REAL I MAX. DIFFERENTIAL IN-LINE OFFSET CA POX REAL I MAX. DIFFERENTIAL X-LINE OFFSET CA NTIN INTEGER O NUMBER OF TRACES FOR THIS OUTPUT CA IOUT INTEGER O TRACE NUMBER FOR THIS OUTPUT CA ITN INTEGER O ARRAY OF INPUT TRACE NUMBERS CA DX REAL O ARRAY OF DIFFERENTIAL OFFSETS CA CA EJECT CAEND C*********************************************************************** C C LOCAL VARIABLES C C CTH - COS OF ANGLE OF OUTPUT TRACE RELATIVE TO X-AXIS R*4 C DXT - DIFFERENTIAL OFFSET BETWEEN INPUT TRACE AND OUTPUT C TRACE R*4 C IT - LOOP INDEX OVER THE TRACES FOR THIS OUTPUT I*4 C ITR - LOOP INDEX OVER THE NUMBER OF TRACES I*4 C RC - DISTANCE OF OUTPUT TRACE FROM THE ORIGIN R*4 C RT - DISTANCE OF INPUT TRACE FROM ORIGIN R*4 C STH - SIN OF ANGLE OF OUTPUT TRACE RELATIVE TO X-AXIS R*4 C TT - DISTANCE OF INPUT TRACE FROM SOURCE-RECEIVER LINE R*4 C C*********************************************************************** C C SUBROUTINE SAFF3DC( KTR,NTR,X,Y,TID,DXMAX,POX, * NTIN,IOUT,ITN,DX ) C IMPLICIT INTEGER (A-Z) C INTEGER X(*),Y(*),TID(*),ITN(*) REAL DX(*) REAL POX,DXMAX,RC,STH,CTH,XT,YT,TT,RT,DXT C C --------------------------------------------------------------------- C C INITIALIZE AND DETERMINE SIN(THETA) AND COS(THETA) C FOR TRANSFORMING TO IN-LINE AND X-LINE COORD. C NTIN = 0 XT = X(KTR) YT = Y(KTR) RC = SQRT( XT*XT + YT*YT ) C IF( RC.GT.0. ) THEN C STH = Y(KTR)/RC CTH = X(KTR)/RC ELSE STH = 0. CTH = 1. C ENDIF C C FOR EACH INPUT TRACE: C C 1. DETERMINE IF IT CONTRIBUTES C 2. IF IT DOES, COMPUTE AND STORE ITN,DX C DO 200 ITR = 1,NTR IF( TID(ITR).NE.1 ) GO TO 200 TT = -STH*X(ITR) + CTH*Y(ITR) IF( ABS(TT).GT.POX ) GO TO 200 RT = CTH*X(ITR) + STH*Y(ITR) DXT = RT - RC C IF( ABS(DXT).LE.DXMAX ) THEN C NTIN = NTIN + 1 ITN(NTIN) = ITR DX (NTIN) = DXT C ENDIF C 200 CONTINUE C C --------------------------------------------------------------------- C C SORT THESE TRACES BY DISTANCE C CALL SAFF3DH( DX,NTIN,ITN ) C C DETERMINE LOCATION OF OUTPUT TRACE IN ITN ARRAY C DO 300 IT = 1,NTIN IF( ITN(IT).EQ.KTR ) IOUT = IT 300 CONTINUE C C --------------------------------------------------------------------- C RETURN END