File: NORFOU.FT of Tape: Various/ETH/f2
(Source file text)
SUBROUTINE NORFOU C COMMON /TITLE/ ADENT,GLOBAL,RUN,ICREAT COMMON /FITPAR/ JIT,FISTOP,AMARQI,UPMARQ,DNMARQ,VARI, $ UPVAR,DNVAR,VARMIN,MLOOP,LOOPLW,ISTART,ISTOP,ITEST,IDEFIX COMMON /PARAM/ DKHI,SHFACT,CHISQ,ITORQ,IDILA,DK,DL,HANG $ ,HUP,HDOWN,AMI,PS,PT,SOLLT,TEMP,TV,ES,AKL,AKV,CAP,EICH COMMON /PEAKS/ TASWI,KBLOW,KBLOW1,KMAX,K1,K3,CHI, $ Q(11,4),HIGHT(21),INDEX(21) COMMON /VECT/ C(44),D1(11,4),DIAGEL(44),D(44),E(44) COMMON /DATIN/ F(512),NP COMMON /CONST/ PI,TWOPI COMMON /PLOTC/ PLTBUF(400) COMMON /FAF/ A(2049),B(2049),N DIMENSION AR(44,44),Z(44,44) EQUIVALENCE (A,AR),(B,Z) INTEGER RUN REAL K3 LOGICAL ITORQ,IDILA,ITEST,TASWI C CDC JUST SO WE DON'T MISS THIS VITAL DECLARATION!! C DIMENSION=KMAX*4 AND KMAX,10 REAL DER1(44),DER2(11,10) C NA=K1*4 DO 10 I=1,NA C(I)=0. DO 20 J=1,NA AR(I,J)=0. 20 CONTINUE 10 CONTINUE DO 30 IX=1,NP I=IX-1 H2=FLOAT(I)/NP H3=2.*H2-1. H4=6.*H2*H2-6.*H2+1. H5=20.*H2*H2*H2-30.*H2*H2+12.*H2-1. R1=-F(IX)+Q(1,1)+Q(1,2)*H3+Q(1,3)*H4+Q(1,4)*H5 FLD1OV=1.+I*DKHI SQTFLD=SQRT(FLD1OV) IF (ITORQ) SQTFLD=1./SQTFLD DO 40 L=2,K1 LX=L-1 QL1=Q(L,1) QL2=Q(L,2) QL4=Q(L,4) CO=COS(I*QL1-QL2) SI=SIN(I*QL1-QL2) AM=Q(L,3)*SQTFLD/(1.-EXP(-SHFACT*QL1*FLD1OV)) E8=1./(1.-EXP(-QL4)) E9=EXP(-H2*QL4) E3=1.-E8-H2 EX=QL4*E8*E9 E1=E8*E9*(1.+QL4*E3) R1=R1+AM*CO*EX DER1(LX*4+1)=-I*SI*AM*EX*D1(L,1) DER1(LX*4+2)=SI*AM*EX*D1(L,2) DER1(LX*4+3)=CO*EX*D1(L,3) DER1(LX*4+4)=CO*AM*E1*D1(L,4) C IF SECOND DERIVATIVE C E2=E1*E3+E8*E9*(E3-Q(L,4)*E8*(1-E8)) C DER2(LX,1)=-I*I*CO*AM*EX*D1(L,1)*D1(L,1) C DER2(LX,2)=I*CO*AM*EX*D1(L,1)*D1(L,2) C DER2(LX,3)=-CO*AM*EX*D1(L,2)*D1(L,2) C DER2(LX,4)=-I*SI*EX*D1(L,1)*D1(L,3) C DER2(LX,5)=SI*EX*D1(L,2)*D1(L,3) C DER2(LX,6)=0. C DER2(LX,7)=-I*SI*AM*E1*D1(L,1)*D1(L,4) C DER2(LX,8)=SI*AM*E1*D1(L,2)*D1(L,4) C DER2(LX,9)=CO*E1*D1(L,3)*D1(L,4) C DER2(LX,10)=CO*AM*E2*D1(L,4)*D1(L,4) 40 CONTINUE DER1(1)=D1(1,1) DER1(2)=D1(1,2)*H3 DER1(3)=D1(1,3)*H4 DER1(4)=D1(1,4)*H5 DERX=0. DO 50 KL=1,K1 L=KL-1 M1=0 DO 60 NL=1,4 I=NL+4*L C(I)=C(I)-DER1(I)*R1 IF (L.EQ.0) GO TO 75 LJ=4*L DO 70 J=1,LJ AR(J,I)=AR(J,I)+DER1(J)*DER1(I) 70 CONTINUE 75 DO 80 M=1,NL J=M+4*L M1=M1+1 C IF SECOND DERIVATIVE C IF (L.NE.0) DERX=R1*DER2(L,M1) AR(J,I)=AR(J,I)+DER1(J)*DER1(I)+DERX 80 CONTINUE 60 CONTINUE 50 CONTINUE 30 CONTINUE DO 100 J=1,NA 100 DIAGEL(J)=AR(J,J) RETURN END