A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rkb / paroff / haefi1.ft
CommitLineData
81e70d48
PH
1C -+-+-+-+-+ \ e H A E F I 1 . F T \ e -+-+-+-+-+\r
2C\r
3C 11 POINT FILTER\r
4C\r
5 SUBROUTINE FI1LTR\r
6 INCLUDE HAEBUF.FI\r
7 INCLUDE HAEGSA.FI\r
8 INCLUDE HAEPTI.FI\r
9 INCLUDE HABRK.FI\r
10 INCLUDE HAEI85.FI\r
11 INCLUDE HAETTY.FI\r
12C\r
13\fC\r
14 REAL COND\r
15 INTEGER NCOND\r
16 EXTERNAL COND,NCOND\r
17C\r
18 REAL FFTX(85), @ PART OF THE FFT BUFFER\r
19 * ORD,ABZ,TEMSET,\r
20 * FFTMIN,FFTMAX, @ HERE WE SAVE THE NEW MINIMUM AND MAXIMUM\r
21 * X(11),Y(11), @ TEMPORARY STORAGE\r
22 * A(6) @ SCALING\r
23 INTEGER I,J,K,INCR2,PNT,BAND\r
24 LOGICAL F1, @ SAMPLE BUFFER IS EMPTY FLAG\r
25 * W @ BUFFER CHANGED FLAG\r
26 DATA A /.1038,.1956,.1608,.0488,.021,-.03/\r
27C\r
28C\r
29C\r
30C OPEN THE INPUT DATA FILE UNIT 5\r
31C READ THE FILE HEADER FIRST BLOCK AND\r
32C THE DATA HEADER, THE SECOND BLOCK OF UNIT 5\r
33C INSERT THE COMMON CEGESA FROM THE DATA FILE\r
34C\r
35 IF (REC5.LT.1) DEFINE FILE5(MAXBL5,85,U,REC5)\r
36 REC5=1\r
37 F1=SAMCNT.EQ.0 .OR. .NOT. COMP @ HEADER OF FILE 5 DOES NOT MATCH THE HEADER OF THE ACTUAL SAMPLE BUFFER\r
38 READ (5'REC5) (RCRD0(I),I=1,85) @ READ THE FILE HEADER\r
39 IF (F1) SAMCNT=0 @ CLEAR THE ACTUAL SAMPLE BUFFER\r
40 IF (F1) COMP=.FALSE. @ AND THE COMPUTATIONS FLAG TOO\r
41 IF (REDVAL.NE.6H2DPWLD) GOTO 20 @ RECORD IS EMPTY\r
42 REDVAL=0 @ FOR SAVETY ONLY\r
43 READ (5'REC5) LCEGSA(1),(LCEGSA(I),I=2,LCEGSA(1)) @ READ THE DATA HEADER BLOCK ( COMMON CEGESA)\r
44 IF (FILTER.EQ.0) GOTO 40 @ ONLY ONE FILTER SCAN ALLOWED\r
45 WRITE (TTY,2) FILTER @ ' DATA SET ALREADY WITH N POINT FILTER SMOOTHED'\r
46 RETURN\r
4740 CONTINUE\r
48 INCR2=INCR/2 @ NUMBER OF DATA POINTS IN POWER SPECTRUM\r
49C\r
50C HERE WE SCAN WITH A 11 POINT FILTER THE POWER SPECTRUM \r
51C\r
52C\r
53 CALL MOVE (-11,0,Y)\r
54 W=.FALSE.\r
55 FFTMAX=0\r
56 FFTMIN=5E55\r
57 DO 10 I=1,INCR2\r
58 J=MOD(I-1,85)\r
59 IF (J.NE.0) GOTO 15\r
60 IF (W) WRITE (5'REC5) FFTX\r
61 W=.FALSE.\r
62 READ (5'REC5) FFTX\r
63 REC5=REC5-1\r
6415 CONTINUE\r
65 CALL MOVE (10,Y(2),Y)\r
66 Y(11)=FFTX(J+1)\r
67 FFTX(J+1)=0\r
68 DO 16 K=1,6\r
69 FFTX(J+1)=FFTX(J+1)+A(K)*(Y(7-K)+Y(5+K))\r
70 FFTMIN=AMIN1(FFTMIN,FFTX(J+1))\r
71 FFTMAX=AMAX1(FFTMAX,FFTX(J+1))\r
7216 CONTINUE\r
73 W=.TRUE.\r
7410 CONTINUE\r
75 IF (W) WRITE (5'REC5) FFTX\r
76C\r
77C HERE WE SCAN THE BAND INTENSITY\r
78C\r
79 W=.FALSE.\r
80 DO 30 BAND=1,5\r
81 CALL MOVE (-11,0,Y)\r
82 CALL MOVE (-11,0,X)\r
83 DO 30 I=0,DATCNT-1\r
84 PNT=MOD(I,4)+1\r
85 IF (PNT.NE.1) GOTO 35\r
86 IF (W) WRITE (5'REC5) INTE85\r
87 W=.FALSE.\r
88 REC5=STSCAN+I/4\r
89 READ (5'REC5) INTE85\r
90 REC5=REC5-1\r
9135 CONTINUE\r
92 CALL MOVE (10,Y(2),Y)\r
93 CALL MOVE (10,X(2),X)\r
94 Y(11)=INTE(1,BAND,PNT)\r
95 X(11)=INTE(4,BAND,PNT)\r
96 INTE(1,BAND,PNT)=0\r
97 INTE(4,BAND,PNT)=0\r
98 DO 36 K=1,6\r
99 INTE(1,BAND,PNT)=INTE(1,BAND,PNT)+A(K)*(Y(7-K)+Y(5+K))\r
10036 INTE(4,BAND,PNT)=INTE(4,BAND,PNT)+A(K)*(X(7-K)+X(5+K))\r
101 W=.TRUE.\r
10230 CONTINUE\r
103 IF (W) WRITE (5'REC5) INTE85\r
104C INSERT THE NEW MIN/MAX INTO THE SECOND DATA HEADER BLOCK\r
105 REC5=2 @ READ THE HEADER AGAIN\r
106 XMINI=FFTMIN\r
107 XMAXI=FFTMAX @ INSERT THE NEW MIN/MAX\r
108 FILTER=11 @ 11 POINT FILTER \r
109 WRITE (5'REC5) LCEGSA(1),(LCEGSA(I),I=2,LCEGSA(1)) @ WRITE THE DATA HEADER BLOCK ( COMMON CEGESA)\r
110 RETURN\r
111C\r
11220 CONTINUE @ FILE 5 IS EMPTY\r
113 COMPUT=0\r
114 SAMCNT=0\r
115 WRITE (TTO,1) @ NO DATA FOUND\r
116 RETURN\r
117C\r
1181 FORMAT (' KEINE DATEN IN DER DATEI 5')\r
1192 FORMAT (' LEISTUNGS SPECTRUM BEREITS MIT ',I3,' PUNKT FILTER',\r
120 * 'GEGELAETET.')\r
121 END\r
122\f\1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0