CTITLESASMTH -- SMOOTH VELOCITY OR SLOWNESS FUNCTION WITH WINDOW C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA LENTYH LOPR CA CA DESIGNER JAMES SUN CA AUTHOR JAMES SUN CA LANGUAGE FORTRAN CA SYSTEM CRAY AND IBM CA WRITTEN 02/08/89 CA C REVISED 03/31/89 JCS REAPPLY MUTE TO THE DEPTH SECTION C REVISED 01/20/90 JJC - COMBINED ORIGINAL SASMTH1 WITH C SASMTH2 INTO SASMTH. C REVISED 08/07/90 CLJ - ADD ERROR MESSAGE FOR UNDEFINED C VELOCITY FIELD AND ADD THIS TO PREP C FOR IBM AND CRAY C CA CA CALLING PROCEDURE: CA SUBROUTINE SASMTH(V,WORK,NZ,LOPR,ITYPE,IPR) CA C CALLING ARGUMENTS CA CA IN/OUT V = VELOCITY ARRAY R4 CA OUTPUT WORK = WORKING ARRAY R4 CA INPUT NZ = NUMBER OF DEPTH STEPS I4 CA INPUT LOPR = OPERATOR LENGTH I4 CA INPUT ITYPE = SMOOTH TYPE (1 FOR VELOCITY, 2 FOR SLOWNESS) I4 CA INPUT IPR = PRINT UNIT I4 C CA CA THIS SUBROUTINE SMOOTH VELOCITY FUNCTION WITH WINDOW LENGTH LOPR CA CA ARRAY DIMENSION REQUIREMENT CA CA REAL: CA V - NZ INPUT/OUTPUT CA WORK - NZ+LOPR-1 CA C SUBROUTINE SASMTH(V,WORK,NZ,LOPR,ITYPE,IPR) C IMPLICIT INTEGER(A-Z) C REAL FLOAT REAL WORK REAL V DIMENSION V(1),WORK(1) C MOPR=LOPR/2 MOPR1=MOPR+1 C CALL ARMVE(V,WORK(MOPR1),NZ) CALL ARSET(WORK,MOPR,V(1)) CALL ARSET(WORK(NZ+MOPR1),MOPR,V(NZ)) C CALL ARSET(V,NZ,0.) C GO TO ( 100, 150 ), ITYPE C 100 DO 110 IJ=1,LOPR ISJ=IJ DO 120 IZ=1,NZ V(IZ)=V(IZ)+WORK(ISJ) 120 ISJ=ISJ+1 110 CONTINUE C DO 130 IZ=1,NZ 130 V(IZ)=V(IZ)/FLOAT(LOPR) C GO TO 200 C 150 DO 160 IJ=1,LOPR ISJ=IJ DO 170 IZ=1,NZ V(IZ)=V(IZ)+1./WORK(ISJ) 170 ISJ=ISJ+1 160 CONTINUE C DO 180 IZ=1,NZ 180 V(IZ)=FLOAT(LOPR)/V(IZ) C 200 CONTINUE C RETURN END