CTITLEMTRANS -- TRANSFORMATION 00000010 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR D.D. THOMPSON R&D 00000020 CA DESIGNER D.D. THOMPSON R&D 00000030 CA LANGUAGE S/370 FORTRAN H 00000040 CA WRITTEN 2/15/77 00000050 CA 00000090 CA CALL MTRANS (Q, NT, NSUM, W, QQ) 00000100 CA I/0 : Q = INPUT AND OUTPUT ARRAY (LENGTH NT+NAUX) R8 00000350 CA INPUT : NT = NUMBER OF MAINLINE ELEMENTS IN TOP OF Q I4 00000360 CA INPUT : NSUM = NUMBER ON EACH SIDE OF CENTER TO USE I4 00000370 CA IN SLIDING SUM TRANSFORMATION. 00000380 CA INPUT : W = ARRAY OF TRACE WEIGHTS FOR MAINLINE R4 00000390 CA COMPONENTS OF Q. 00000400 CA WORK : QQ = SCRATCH ARRAY OF MIN. LENGTH NT. R8 00000430 CA 00000440 CA THIS ROUTINE PERFORMS A TRANSFORMATION TO THE OPTIMIZATION 00000470 CA PROBLEM TO PERMIT ARBITRARY TRACE WEIGHTING AND TO REDUCE 00000480 CA NOISE SENSITIVITY. SPECIFICALLY, GIVEN AN INPUT VECTOR 00000490 CA Q OF LENGTH NT+NAUX IT PERFORMS THE OPERATION 00000500 CA 00000510 CA _ _ 00000520 CA | | 00000530 CA | W'*(A'*A+I)*W | * Q 00000540 CA | | 00000550 CA |_ _| 00000560 CA 00000610 CA WHERE 00000640 CA W= DIAGONAL MATRIX OF TRACE WEIGHT FACTORS. 00000650 CA A=TRANSFORMATION CONSISTING OF A SYMMETRIC SLIDING SUM 00000660 CA OF 2*NSUM+1 ELEMENTS WITH WRAP-AROUND TO PROVIDE NOISE 00000670 CA SUPPRESSION. 00000680 CA 00000700 SUBROUTINE MTRANS (Q, NT, NSUM, W, QQ) 00000710 C 00000720 REAL*4 W(1) 00000730 REAL*8 P 00000731 REAL*8 Q(1) 00000740 REAL*8 QQ(1) 00000741 REAL*8 T 00000742 REAL*8 TT 00000743 REAL*16 S 00000750 C 00000751 IF(NSUM.EQ.0) GO TO 90000000760 S=0. 00000770 K=NT-NSUM+1 00000780 C 00000790 C APPLY WEIGHTS TO MAINLINE PORTION OF (Q). 00000800 C 00000810 DO 900000820 * I = 1, NT 00000821 9 Q(I)=Q(I)*W(I) 00000830 C 00000840 C FORM WRAP AROUND HALF OF INITIAL SLIDING SUM IN (S). 00000850 C 00000860 DO 1000000870 * I = K, NT 00000871 10 S=S+Q(I) 00000880 C 00000890 C ADD ON REMAINING HALF (EXCEPT FOR LAST ELEMENT) OF 00000900 C INITIAL SLIDING SUM (S). 00000910 C 00000920 DO 1100000930 * I = 1, NSUM 00000931 11 S=S+Q(I) 00000940 C 00000950 C *** MAIN LOOP FOR FIRST SLIDING SUM *** 00000960 C 00000970 DO 2000000980 * I = 1, NT 00000981 K1=I-NSUM 00000990 K2=I+NSUM 00001000 IF(K1.LE.0) K1=NT+K1 00001010 IF(K2.GT.NT)K2=K2-NT 00001020 C 00001030 C ADD LAST ELEMENT OF THIS SUM TO (S) 00001040 C 00001050 S=S+Q(K2) 00001060 C 00001070 C STORE THIS SUM IN SCRATCH QQ. 00001080 C 00001090 QQ(I)=S 00001100 C 00001110 C REMOVE TAIL ELEMENT FROM THIS SUM IN PREPARATION FOR 00001120 C NEXT SUM. 00001130 C 00001140 20 S=S-Q(K1) 00001150 C 00001160 C ***END OF MAIN LOOP FOR FIRST SLIDING SUM*** 00001170 C 00001180 C FORM WRAP AROUND HALF OF INITIAL SLIDING SUM IN (S) 00001190 C FOR 2ND SLIDING SUM TRANS. 00001200 C 00001210 S=0. 00001220 DO 11000001230 * I = K, NT 00001231 110 S=S+QQ(I) 00001240 C 00001250 C ADD TO S THE REMAINING HALF (EXCEPT LAST ELEMENT) OF 00001260 C INITIAL SLIDING SUM (FOR 2ND TRANSFORM) 00001270 C 00001280 DO 11100001290 * I = 1, NSUM 00001291 111 S=S+QQ(I) 00001300 C 00001310 C ***BEGIN MAIN SLIDING SUM LOOP FOR 2ND TRANSFORM.*** 00001320 C 00001330 DO 12000001340 * I = 1, NT 00001341 K1=I-NSUM 00001350 K2=I+NSUM 00001360 IF(K1.LE.0) K1=NT+K1 00001370 IF(K2.GT.NT)K2=K2-NT 00001380 C 00001390 C ADD NEW ELEMENT OF QQ TO S TO COMPLETE A NEW SUM. 00001400 C 00001410 S=S+QQ(K2) 00001420 P=S 00001430 T=Q(I) 00001440 C 00001450 C REPLACE Q WITH (OLD VALUE PLUS SUM) * W(I) 00001460 C 00001470 Q(I)=(T+P)*W(I) 00001480 C 00001490 C REMOVE LAST ELEMENT OF SUM FROM S TO PREPARE FOR NEXT 00001500 C SUM. 00001510 C 00001520 120 S=S-QQ(K1) 00001530 C 00001540 C ***END 2ND SLIDING SUM LOOP*** 00001550 C 00001560 RETURN 00001570 C 00001580 C CASE OF NSUM = 0 ONLY APPLY W**2 TO Q 00001590 C 00001600 900 DO 89900001610 * I = 1, NT 00001611 TT=W(I) 00001620 899 Q(I)=Q(I)*TT*TT 00001630 RETURN 00001720 END 00001730