CTITLEMGRAD -- COMPUTES DDLOG GRADIENT VECTOR 00000010 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR D. D. THOMPSON 00000020 CA DESIGNER D. D. THOMPSON 00000030 CA LANGUAGE FORTRAN 77 00000040 CA SYSTEM IBM & CRAY 00000041 CA WRITTEN 1972 00000050 C REVISED MO-DA-YR 00000060 C REVISED 05-20-85 TWH. ADAPTED TO IBM & CRAY. 00000061 C 00000070 CA 00000080 CA 00000090 CA CALL MGRAD (X, XX, V, Z, G, KR, KW, KX, KEY) 00000100 CA INPUT X = TRACE R4 00000110 CA INPUT XX = SYNTHETIC TRACE R4 00000120 CA INPUT V = DIAGONAL MATRIX WHICH NORMALIZED R4 00000130 CA MAIN DIAGONAL OF LINEARSYSTEM 00000140 CA SYSTEM 00000150 CA INPUT Z = REFLECTION COEFFICIENT (RC'S) AND R4 00000160 CA WAVELET VECTOR 00000170 CA OUTPUT G = GRADIENT VECTOR R4 00000180 CA INPUT KR = NUMBER OF RC'S IN THE TOP OF V,G, I4 00000190 CA AND Z 00000200 CA INPUT KW = NUMBER OF WAVELET SAMPLES IN BOTTOM I4 00000210 CA OF V, G, AND Z 00000220 CA INPUT KX = NUMBER OF TRACE SAMPLES IN X AND XX I4 00000230 CA INPUT KEY = INPUT FLAG I4 00000240 CA 1 - COMPUTE RC'S ONLY 00000250 CA 2 - COMPUTE WAVELET ONLY 00000260 CA 3 - COMPUTE BOTH 00000270 CA 00000280 CA 00000290 CA THIS ROUTINE COMPUTES THE GRADIENT VECTOR MODIFIED 00000300 CA BY THE V-TRANSFORMATION FOR THE INPUT RC'S AND WAVELET. 00000310 CA 00000320 CA 00000330 C 00000340 C SUBROUTINES CALLED: NONE 00000350 C 00000360 C EJECT 00000370 C 00000380 SUBROUTINE MGRAD (X, XX, V, Z, G, KR, KW, KX, KEY) 00000390 CAEND 00000400 C 00000410 DIMENSION X(1),XX(1),V(1),Z(1),G(1) 00000420 IA=KW+1 00000430 IF((KW/2)*2.NE.KW)IA=KW 00000440 IF(KEY.EQ.2) GO TO 30 00000450 C 00000460 DO 20 00000470 * J=1,KR 00000480 J2=2*J 00000490 IL=J2-IA+1 00000500 IH=KW+J2-IA 00000510 IF(IL.LT.1) IL=1 00000520 IF(IH.GT.KX) IH=KX 00000530 A=0. 00000540 INDX=IA-J2+KR 00000550 C 00000560 DO 10 00000570 * I=IL,IH 00000580 C 00000590 10 A=A+Z(I+INDX)*(XX(I)-X(I)) 00000600 C 00000610 20 G(J)=A*V(J) 00000620 C 00000630 IF(KEY.EQ.1) RETURN 00000640 C 00000650 30 DO 50 00000660 * J=1,KW 00000670 INDX=IA-J 00000680 IL=1 00000690 IF((INDX/2)*2.EQ.INDX) IL=2 00000700 A=0. 00000710 C 00000720 DO 40 00000730 * I=IL,KX,2 00000740 C 00000750 40 A=A+Z((I+INDX)/2)*(XX(I)-X(I)) 00000760 C 00000770 50 G(J+KR)=A*V(J+KR) 00000780 C 00000790 RETURN 00000800 END 00000810