CTITLESAFX3DE -- MERGE THE 3D-SPATIAL FILTERED PATCHES C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** C*********************************************************************** CABS SAFX3DE - MERGE THE 3D-SPATIAL FILTERED PATCHES C C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1989. 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 C CA DESIGNER D CORRIGAN CA AUTHOR D CORRIGAN CA LANGUAGE VS FORTRAN CA SYSTEM IBM/CRAY CA WRITTEN 12-13-88 CA CA REVISED 10-19-90 CLJ RENAME FROM FX3MER, ADD TO CRAY CA CA PURPOSE OF PROGRAM: CA CA MERGE THE RESULTS OF FILTERING ONE PATCH CA WITH PREVIOUS PATCHES CA CA CALLING PROCEDURE: CA SUBROUTINE SAFX3DE( D,NCDP,NLIN,ICDP,ILIN,A,LGI,LGX,BUF,LBUF ) CA CA CALLING ARGUMENTS: CA CA ARGUMENTS (INPUT) CA CA D - I/O DATA FOR ONE FREQUENCY (NCDP,NLIN) CA NCDP - NUMBER OF CDP CA NLIN - NUMBER OF LINES CA ICDP - FIRST CDP TO APPLY FILTER CA ILIN - FIRST LINE TO APPLY FILTER CA A - DATA TO BE MERGED WITH D (LGI,LGX) CA LGI - IN-LINE DESIGN GATE LENGTH CA LGX - X -LINE DESIGN GATE LENGTH CA BUF - BUFFER SPECIFYING MERGE ZONE CA (FROM SUBROUTINE FX3OLP) CA LBUF - LENGTH OF ARRAY BUF CA C C SUBROUTINES CALLED: C C CCOPY (ESSL/CRAY LIBRARY) C CEND C*********************************************************************** C SUBROUTINE SAFX3DE( D,NCDP,NLIN,ICDP,ILIN,A,LGI,LGX,BUF,LBUF ) C IMPLICIT INTEGER(A-Z) C COMPLEX D(NCDP,NLIN) COMPLEX A(LGI,LGX) REAL BUF(LBUF) REAL WA REAL WD C C FORMAT OF BUF: C C BUF(1) = LENGTH OF THIS ARRAY (LBUF) C BUF(2) = FLAG FOR FILTER C BUF(3) = FIRST CDP IN A (ICDP) C BUF(4) = FIRST LINE IN A (ILIN) C BUF(5) = LENGTH OF IN-LINE MERGE ZONE (LOI) C BUF(6) = LENGTH OF X-LINE MERGE ZONE (LOX) C C BUF(7) º C . º = IN-LINE MERGE WEIGHTS C . º C BUF(7+LOI-1)º C C C C BUF(7+LOI) º C . º = X-LINE MERGE WEIGHTS C . º C BUF(7+LOI )º C +LOX-1) C C IN MERGE ZONE D = (1-W)*D + W*A C C C ARGUMENTS (OUTPUT) C C - D - I/O DATA FOR ONE FREQUENCY (NCDP,NLIN) C C --------------------------------------------------------------------- C C --------------------------------------------------------------------- C LOI = BUF(5) LOX = BUF(6) C C MOVE DATA OUTSIDE THE MERGE ZONE INTO D C IAI = 1 + LOI IDI = ICDP + LOI NC = LGI - LOI C DO 100 IAX = 1 + LOX,LGX IDX = ILIN + IAX - 1 100 CALL CCOPY( NC,A(IAI,IAX),1,D(IDI,IDX),1 ) C C --------------------------------------------------------------------- C IW = 7 IF( LOI.EQ.0 ) GO TO 500 C C MERGE IN-LINE C IDI = ICDP DO 400 IAI = 1,LOI C WA = BUF(IW) WD = 1. - WA DO 200 IAX = 1,LGX IDX = ILIN + IAX - 1 200 D(IDI,IDX) = WD*D(IDI,IDX) + WA*A(IAI,IAX) C IW = IW + 1 400 IDI = IDI + 1 C C --------------------------------------------------------------------- C 500 IF( LOX.EQ.0 ) RETURN C C MERGE X-LINE C IDX = ILIN C DO 800 IAX = 1,LOX WA = BUF(IW) WD = 1. - WA DO 600 IAI = 1,LGI IDI = ICDP + IAI - 1 600 D(IDI,IDX) = WD*D(IDI,IDX) + WA*A(IAI,IAX) C IW = IW + 1 800 IDX = IDX + 1 C C --------------------------------------------------------------------- C RETURN END