File: DINGLE.CD of Tape: Various/ETH/cd1
(Source file text) 

DINGLE,9621,CM60000,CT15.
PERMF,LGO.
FTN(BL,OPT,R).
CATALOG,LGO,DINGBN. 
.EOR.
        PROGRAM DINGLE(OUTPUT=240B,TAPE4=OUTPUT,TAPE5,TAPE6)
C 
        COMMON /IN/  ANF(6,6),AF(6,6),ETA(6,6),DAF(6,6),DETA(6,6) 
     $  ,DK,HANG,HI,NP,T(6),DT(6),MR,ADENT(6),MF,FREQ(6)
        COMMON /MOD/ AM(6,6),A0(6,6),A0M(6),DA0M(6),AF0(6,6)
     $  ,ANFM(6),ETA0(6,6)
        COMMON /LINE/ DY(6),A,B,DA,DB,SA,SB,SAB,RR,RMSD,CHISQ 
C 
        DIMENSION X(400),Y(400),NB(400) 
	DIMENSION XL(10),YL(10)
C 
100     FORMAT(I3)
110     FORMAT((F8.1))
130     FORMAT((A6))
C 
        READ(5,100) MF
        READ(5,110) (FREQ(I),I=1,MF)
        READ(5,100) MR
        READ(5,130) (ADENT(I),I=1,MR) 
        CALL INPUT
        CALL AZERO
        CALL PRINT(1,0) 
	N=MR
        DO 50 I=1,MF
        DO 51 J=1,MR
        YL(J)=ETA(I,J)
        DY(J)=DETA(I,J) 
        XL(J)=T(J) 
51	CONTINUE
        CALL LINREG(XL,YL,N)
	CALL PRINT(2,I)
	TMAX=0.
	DO 10 K=1,MR
10	TMAX=AMAX1(TMAX,T(K))
	LMIN=1
	LMAX=(400-4*MR)/2
	DO 61 L=1,LMAX
	X(L)=1.+(TMAX-1.)*(L-LMIN)/FLOAT(LMAX-LMIN)
	Y(L)=A*X(L)+B
	NB(L)=4
61	CONTINUE
        DO 52 J=1,MR
        YL(J)=ETA0(I,J)
        DY(J)=DETA(I,J) 
        XL(J)=T(J) 
52	CONTINUE
        CALL LINREG(XL,YL,N)
        CALL PRINT(3,I) 
	LMIN=LMAX+1
	LMAX=LMAX*2
	DO 62 L=LMIN,LMAX
	X(L)=1.+(TMAX-1.)*(L-LMIN)/FLOAT(LMAX-LMIN)
	Y(L)=A*X(L)+B
	NB(L)=10
62	CONTINUE
	DO 60 J=1,MR
	K=4*(J-1)+LMAX+1
	X(K)=T(J)
	Y(K)=ETA(I,J)+DETA(I,J)
	NB(K)=2
	X(K+1)=T(J)
	Y(K+1)=ETA(I,J)-DETA(I,J)
	NB(K+1)=2
	X(K+2)=T(J)
	Y(K+2)=ETA(I,J)
	NB(K+2)=1
	X(K+3)=T(J)
	Y(K+3)=ETA0(I,J)
	NB(K+3)=3
60	CONTINUE
	NPOINT=400
	CALL GRAPH(X,Y,NB,NPOINT)
50      CONTINUE
        END 
        SUBROUTINE INPUT
C 
        COMMON /IN/  ANF(6,6),AF(6,6),ETA(6,6),DAF(6,6),DETA(6,6) 
     $  ,DK,HANG,HI,NP,T(6),DT(6),MR,ADENT(6),MF,FREQ(6)
C 
610     FORMAT(A2)
620     FORMAT(A6)
630     FORMAT(I2)
640     FORMAT(8(G10.3))
C 
        ICHAN=6 
        DO 10 I=1,MR
1       REWIND ICHAN
2       READ(ICHAN,610) AMIST 
        IF (AMIST.NE.2H$$) GO TO 2
        READ(ICHAN,630) IMIST 
        IF (IMIST.NE.1) GO TO 2 
        READ(ICHAN,620) ANAME 
        IF (ANAME.NE.ADENT(I)) GO TO 2
        READ(ICHAN,630) IMIST 
        READ(ICHAN,640) DK,HANG,HI,AMIST,T(I),DT(I),AMIST,FNP 
        NP=IFIX(FNP)
        DK=DK*1.E-3 
        READ(ICHAN,610) AMIST 
        READ(ICHAN,630) IMIST 
        READ(ICHAN,630) NFREQ 
        DO 20 J=1,NFREQ 
        READ(ICHAN,640) Q1,Q2,Q3,Q4,DQ1,DQ2,DQ3,DQ4 
        DO 30 K=1,MF
        IF (ABS(Q1-FREQ(K)).GT.1./(DK*NP)) GO TO 30 
        ANF(K,I)=Q1 
        AF(K,I)=Q3
        ETA(K,I)=Q4 
        DAF(K,I)=DQ3
        DETA(K,I)=DQ4 
30      CONTINUE
20      CONTINUE
10      CONTINUE
        RETURN
        END 
        SUBROUTINE PRINT(IFUN,LOOP) 
C 
        COMMON /IN/  ANF(6,6),AF(6,6),ETA(6,6),DAF(6,6),DETA(6,6) 
     $  ,DK,HANG,HI,NP,T(6),DT(6),MR,ADENT(6),MF,FREQ(6)
        COMMON /MOD/ AM(6,6),A0(6,6),A0M(6),DA0M(6),AF0(6,6)
     $  ,ANFM(6),ETA0(6,6)
        COMMON /LINE/ DY(6),A,B,DA,DB,SA,SB,SAB,RR,RMSD,CHISQ 
C 
500     FORMAT(1H1) 
505     FORMAT(1X,T50,#VERSION  #,I3) 
510     FORMAT(1X,T10,#RUNS:#,T20,A6,T30,#TO#,T40,A6,//)
520     FORMAT(1X,T20,#ANGLE= #,F6.1,T40,#HI= #,F7.3,# T#,T60 
     $  ,#DK= #,1PE10.2,# 1/T#,//)
530     FORMAT(1X,T20,#FREQUENCY : #,F8.3,# T#,//)
540     FORMAT(1X,T10,#RUN#,T22,#T[K]#,T32,#FREQ[T]#,T43, 
     $  #AMP(AF)#,T52,#VAR.AMP.#,T62,#ETA[T]#,T71,#VAR.ETA.#, 
     $  T80,#/#,T91,#ETA0[T]#,T105,#A0#,//) 
550     FORMAT(1X,T10,A6,T20,0PF6.3,T30,F9.2,T40,1PE10.2,T50,E10.2, 
     $  T60,0PF7.3,T70,F7.3,T80,#/#,T90,F7.3,T100,1PE10.2)
560     FORMAT(1X,//,T10,#MEAN FREQUENCY= #,T30,F9.4,# T#,T90,
     $  #MEAN A0= #,T100,1PE10.2,/,T10,#PERIOD= #,T30,1PE9.2, 
     $  # 1/T#,T90,#VAR.A0= #,T100,1PE10.2,////)
570     FORMAT(1X,T10,#ETA0 FIT:#,T20,#X =#,T30,F7.3,T40,#K#,T70,
     $  #MU =#,T80,F7.3,/,T10,#********#,/,T33,#+/-#,T38,F7.3,
     $  T83,#+/-#,T88,F7.3,#  (LINE FIT)#,/,T38,F7.3,T88,F7.3,
     $  #  (VARIANCE)#,,//)
580     FORMAT(1X,T20,#MU*P =#,T30,3PF7.3,T40,#1E-3*1/T#,T70,
     $  #CHISQ=#,T80,0PF7.3,/,T70,#RMSD=#,T80,F7.3,/,T70,
     $  #RR=#,T80,F7.3,//)
590     FORMAT(1X,T10,#ETA FIT:#,T20,#X =#,T30,F7.3,T40,#K#,T70,
     $  #MU =#,T80,F7.3,/,T10,#........#,/,T33,#+/-#,T38,F7.3,
     $  T83,#+/-#,T88,F7.3,#  (LINE FIT)#,/,T38,F7.3,T88,F7.3,
     $  #  (VARIANCE)#,,//)
C 
C       !!!!!!!!!!!!!!!!!!!!!!! 
        IVERS=4 
C       !!!!!!!!!!!!!!!!!!!!!!! 
        I=LOOP
        IF (IFUN.EQ.2) GO TO 2
        IF (IFUN.EQ.3) GO TO 3
        WRITE(4,500)
        WRITE(4,505) IVERS
        WRITE(4,510) ADENT(1),ADENT(MR) 
        WRITE(4,520) HANG,HI,DK 
        RETURN
2       WRITE(4,500)
	WRITE(4,530) FREQ(I)
        WRITE(4,540)
        WRITE(4,550) (ADENT(J),T(J),ANF(I,J),AF(I,J),DAF(I,J) 
     $  ,ETA(I,J),DETA(I,J),ETA0(I,J),A0(I,J),J=1,MR) 
        PER=1./ANFM(I)
        WRITE(4,560) ANFM(I),A0M(I),PER,DA0M(I) 
3       TD=B/A
        AMU=A/14.69 
        DTDL=ABS(TD)*SQRT((DA/A)**2+(DB/B)**2)
        TRY=SA/A**2+SB/B**2-2*SAB/A/B 
        IF (TRY.LE.0.) TRY=1000000. 
        DTDS=ABS(TD)*SQRT(TRY)
        DMUL=DA/14.69 
        DMUS=SQRT(SA)/14.69 
        IF (IFUN.EQ.2) WRITE(4,590) TD,AMU,DTDL,DMUL,DTDS,DMUS 
        IF (IFUN.EQ.3) WRITE(4,570) TD,AMU,DTDL,DMUL,DTDS,DMUS 
        AMUP=AMU*PER
        WRITE(4,580) AMUP,CHISQ,RMSD,RR 
	IF (IFUN.EQ.3) WRITE(4,500)
        RETURN
        END 
        SUBROUTINE AZERO
C 
        COMMON /IN/  ANF(6,6),AF(6,6),ETA(6,6),DAF(6,6),DETA(6,6) 
     $  ,DK,HANG,HI,NP,T(6),DT(6),MR,ADENT(6),MF,FREQ(6)
        COMMON /MOD/ AM(6,6),A0(6,6),A0M(6),DA0M(6),AF0(6,6)
     $  ,ANFM(6),ETA0(6,6)
  
C 
        DO 10 J=1,MR
        DO 11 I=1,MF
        TAU=ETA(I,J)*DK*NP
        AM(I,J)=AF(I,J)*TAU/(1-EXP(-TAU)) 
11      A0(I,J)=AM(I,J)*SQRT(HI)*EXP(ETA(I,J)/HI)/T(J)
10      CONTINUE
        DO 12   I=1,MF
        SP=0. 
        SA=0. 
        SB=0. 
        SC=0. 
        DO 13 J=1,MR
        A0P=A0(I,J)**2*((DAF(I,J)/AF(I,J))**2+(DETA(I,J)/ETA(I,J))**2)
        A0P=1./A0P
        SA=SA+A0(I,J)*A0P 
        SB=SB+A0(I,J)**2*A0P
        SC=SC+ANF(I,J)
        SP=SP+A0P 
13      CONTINUE
        A0M(I)=SA/SP
        DA0M(I)=SQRT((SB/SP-A0M(I)**2)/(MR-1))
        ANFM(I)=SC/MR 
12      CONTINUE
        DO 14 I=1,MF
        DO 15 J=1,MR
        ETA0(I,J)=HI*ALOG(A0M(I)*T(J)/SQRT(HI)/AM(I,J)) 
        TAU0=ETA0(I,J)*DK*NP
        AF0(I,J)=AM(I,J)*(1.-EXP(-TAU0))/TAU0 
15      CONTINUE
14      CONTINUE
        RETURN
        END 
        SUBROUTINE LINREG(X,Y,N)
C 
        COMMON /LINE/ DY(6),A,B,DA,DB,SA,SB,SAB,RR,RMSD,CHISQ 
C 
        DIMENSION V(6),P(6) 
        DIMENSION X(1),Y(1) 
C 
C       LINE FIT: Y=A*X+B TO N POINTS X(I),Y(I) 
C       DA,DB VARIANCES FROM LINE FIT 
C       SA,SB VARIANCES, SAB CORRELATION FROM DY(I) 
C       RR=REGRESSION COEFFICIENT, RMSD=ROOT MEAN SQUARE DEVIATION
        SX=0. 
        SY=0. 
        SXX=0.
        SXY=0.
        SYY=0.
        SP=0. 
        DO 60 J=1,N 
        P(J)=1. 
        IF (DY(J).EQ.0.) GO TO 72 
        P(J)=1./DY(J)**2
72      SX=SX+X(J)*P(J) 
        SY=SY+Y(J)*P(J) 
        SXX=SXX+X(J)*X(J)*P(J)
        SXY=SXY+X(J)*Y(J)*P(J)
        SYY=SYY+Y(J)*Y(J)*P(J)
        SP=SP+P(J)
60      CONTINUE
        D=SP*SXX-SX*SX
        A=(SP*SXY-SX*SY)/D
        B=(SY*SXX-SX*SXY)/D 
C 
C 
C       VARIANCES FROM LINE FIT 
        IF (N.GT.2) GO TO 75
        DA=0. 
        DB=0. 
        RR=0. 
        RMSD=0. 
        CHISQ=0.
        GO TO 76
75      CONTINUE
        Q=0.
        QA=0. 
        DO 62 J=1,N 
        V(J)=Y(J)-X(J)*A-B
        Q=Q+V(J)*V(J)*P(J)
        QA=QA+(V(J))**2 
62      CONTINUE
        QM=(Q/(N-2))
        C=SP*SYY-SY*SY
        DA=SQRT(QM*SP/D)
        DB=SQRT(QM*SXX/D) 
        RR=SQRT(A*A*D/C)
        RMSD=SQRT(QA/N) 
        CHISQ=QM
76      CONTINUE
C       VARIANCES FROM DY(I)
        IF (DY(1).NE.0.) GO TO 77 
        SA=0. 
        SB=0. 
        SAB=0.
        RETURN
77      SA=SP/D 
        SB=SXX/D
        SAB=SX/D
        RETURN
        END 
	SUBROUTINE GRAPH(X,Y,NB,NPOINT)
C
	DIMENSION X(1),Y(1),NB(1),LINEA(120),LRUB(120),XSCALE(24)
	LOGICAL SQUARE
C
	DATA LINEA /120*1H /
C
1000	FORMAT(3X,A6,2H :/10X,1H:) 
1001	FORMAT(10X,1H:,120A1)
1002	FORMAT(1X,F8.3,2H :,120A1)
1003	FORMAT(10X,1H-,24A5)
1004	FORMAT(8X,11(F6.3,4X))
C
	IXAUT=2
	XMIN=1.
	XMAX=-1E100
	IYAUT=3
	YMIN=1.E100
	YMAX=-1.E100
	KCOL=91.
	LINE=55.
	SQUARE=.F.
	XAXIS=5H T[K]
	YAXIS=6HETA[T]
C
	LRUB(1)=1
	IF(IXAUT.EQ.0) GO TO 20
	DO 10 N=1,NPOINT
	IF (IXAUT.NE.2) XMIN=AMIN1(XMIN,X(N)) 
	IF (IXAUT.NE.1) XMAX=AMAX1(XMAX,X(N)) 
10	CONTINUE
20	IF(IYAUT.EQ.0) GO TO 40
	DO 30 N=1,NPOINT
	IF (IYAUT.NE.2) YMIN=AMIN1(YMIN,Y(N)) 
30	IF (IYAUT.NE.1) YMAX=AMAX1(YMAX,Y(N)) 
40	DX=(XMAX-XMIN)/(KCOL-1) 
	DY=(YMAX-YMIN)/(LINE-1) 
	IF(.NOT.SQUARE) GOTO 50 
	DX=DX*10. 
	DY=DY*6.
	DX=AMAX1(DX,DY)
	DY=DX
	DX=DX/10. 
	DY=DY/6.
50	CENX=(XMIN+XMAX)/2. 
	CENY=(YMIN+YMAX)/2. 
	RKCEN=FLOAT(KCOL)/2.
	RLCEN=FLOAT(LINE)/2.
	WRITE(4,1000) YAXIS
	NP=NPOINT 
	DO 100 L=1,LINE 
	KLAST=0
	LPOINT=0
	IF(NP.EQ.0) GOTO 65 
	DO 60 N=1,NP
	NLP=N-LPOINT
	X(NLP)=X(N) 
	Y(NLP)=Y(N) 
	NB(NLP)=NB(N) 
	IF((RLCEN-(Y(N)-CENY)/DY).GT.FLOAT(L)) GOTO 60
	LPOINT=LPOINT+1 
	K=IFIX(RKCEN+(X(N)-CENX)/DX)+1
	LRUB(LPOINT)=K 
	KLAST=MAX0(K,KLAST)
	IF(NB(N).NE.1) GOTO 51
	LINEA(K)=1HE
	GOTO 60 
51	IF(NB(N).NE.2) GOTO 52
	LINEA(K)=1H-
	GOTO 60 
52	IF(NB(N).NE.3) GOTO 53
	LINEA(K)=1H0
	GOTO 60 
53	IF(NB(N).NE.4) GOTO 54
	LINEA(K)=1H.
	GOTO 60 
54	IF(NB(N).NE.5) GOTO 55
	LINEA(K)=1H5
	GOTO 60 
55	IF(NB(N).NE.6) GOTO 56
	LINEA(K)=1H6
	GOTO 60 
56	LINEA(K)=1H*
60	CONTINUE
65	LINEL=LINE-L
	LSCALE=(LINEL)/6
	IF((6*LSCALE).EQ.(LINEL)) GOTO 70 
	WRITE(4,1001) (LINEA(K),K=1,KLAST)
	GOTO 80 
70	YSCALE=CENY+DY*(FLOAT(LINEL)-RLCEN+.5)
	WRITE(4,1002) YSCALE,(LINEA(K),K=1,KLAST) 
80	NP=NP-LPOINT
	DO 90 K=1,LPOINT
	KL=LRUB(K) 
90	LINEA(KL)=1H 
100	CONTINUE
	KSCALE=KCOL/5
	IF(KSCALE.EQ.24) KSCALE=23
	DO 110 K=1,KSCALE 
110	XSCALE(K)=5H^---- 
	WRITE(4,1003) (XSCALE(K),K=1,KSCALE),XAXIS 
	KSCALE=KCOL/10
	IF(KSCALE.EQ.12) KSCALE=11
	DO 120 K=1,KSCALE 
120	XSCALE(K)=CENX+DX*(10.*FLOAT(K-1)-RKCEN+.5) 
	WRITE(4,1004) (XSCALE(K),K=1,KSCALE) 
	RETURN
	END