C23456789012345678901234567890123456789012345678901234567890123456789012 ************************************************************************ INTEGER NN PARAMETER (NN=30) CHARACTER*7 FILE, TITLE*80 CHARACTER*12 FILE2,FILE3,FILE5 INTEGER H,K,L REAL F,S,RATIO DIMENSION THETAIN(NN), NDATA(NN), NWEAK1(NN), SIG(NN) WRITE(*,*)' ' WRITE(*,*)' THE REQUIRED FILES ARE: NAME.INS & NAME.HKL.' WRITE(*,*)' THE OUTPUT FILE IS: NAME.FAL' WRITE(*,*)' ' WRITE(*,*)' PLEASE GIVE THE FILES FIRST NAME:' READ(*,'(A7)')FILE FILE2=TRIM(FILE)//'.INS' FILE3=TRIM(FILE)//'.HKL' FILE5=TRIM(FILE)//'.FAL' DO 50 N=1,30 50 THETAIN(N)=0.0 OPEN(UNIT=1,FILE=FILE2,STATUS='OLD',FORM='FORMATTED') 10 READ(1,'(A80)')TITLE IF(TITLE(1:4).NE.'CELL') GOTO 10 READ(TITLE(5:80),*)WAVE,A,B,C,AL,BE,GA IF(A.LT.1.0.OR.B.LT.1.0.OR.C.LT.1.0) THEN WRITE(*,*)' ' WRITE(*,*)'PLEASE CHECK THE CELL DATA FILE ',FILE2 CLOSE (UNIT=1) STOP 'AND RERUN AGAIN!' ELSE ENDIF CLOSE (UNIT=1) WRITE(6,12)A,B,C,AL,BE,GA 12 FORMAT(2X,'A=',F7.3,', B=',F7.3,', C=',F7.3,', AL=',F7.3, 1 ', BE=',F7.3,', GA=',F7.3,','/) RAD=1.0/57.29577951 COSA=COS(AL*RAD) COSB=COS(BE*RAD) COSG=COS(GA*RAD) SINA=SIN(AL*RAD) SINB=SIN(BE*RAD) SING=SIN(GA*RAD) D=SQRT(1.0+2.0*COSA*COSB*COSG-COSA**2-COSB**2-COSG**2) AST=SINA/(D*A) BST=SINB/(D*B) CST=SING/(D*C) DH=(COSB*COSG-COSA)/(SINB*SING) DK=(COSA*COSG-COSB)/(SINA*SING) DL=(COSA*COSB-COSG)/(SINA*SINB) CMA=CMA*RAD*2.0 CCC=COS(CMA) OPEN(UNIT=2,FILE=FILE3,STATUS='OLD',FORM='FORMATTED') OPEN(UNIT=3,FILE=FILE5,STATUS='UNKNOWN',FORM='FORMATTED') WRITE(3,21) 21 FORMAT(' THETA MEAN OF REFLECTIONS PERCENTAGE') WRITE(3,22) 22 FORMAT(' RANGE INT./SIGMA IN THE RANGE OBSERVED ') WRITE(3,*)' ' 100 READ(2,20,END=110,ERR=100)H,K,L,F,S 20 FORMAT(3I4,2F8.2) IF(H.EQ.999)GO TO 100 IF(H.EQ.0.AND.K.EQ.0.AND.L.EQ.0)GO TO 100 NREF=NREF+1 SINTH1=(H*AST)**2+(K*BST)**2+(L*CST)**2 SINTH2=2*(H*K*AST*BST*DL+H*L*AST*CST*DK+K*L*BST*CST*DH) SINTH=SINTH1+SINTH2 SINTH=SQRT(SINTH) SINTH=SINTH*WAVE/2.0 THETA= ASIN(SINTH) THETA= THETA/RAD NTHETA=THETA DO 200 N=1,30 IF (N.EQ.NTHETA) THEN IF (F.LT.0.0) F=0.0 IF (S.LT.1.0) S=1.0 THETAIN(N)=THETAIN(N)+F/S SIG(N)=SIG(N)+S NDATA(N)=NDATA(N)+1 IF(F.LT.2.0*S) NWEAK1(N)=NWEAK1(N)+1 ELSE ENDIF 200 CONTINUE IF(F.LT.2.0*S) NWEAK=NWEAK+1 GO TO 100 110 CONTINUE DO 300 N=1,30 ND=NDATA(N) IF(ND.LT.1) ND=1 C THETAIN(N)=(THETAIN(N)-SIG(N)) C IF (SIG(N).GT.1) THETAIN(N)=THETAIN(N)/SIG(N) THETAIN(N)=THETAIN(N)/ND RATIO=1.0*NWEAK1(N)/ND RATIO=(1.0-RATIO)*100.0 300 WRITE(3,40)N,(N+1),THETAIN(N),NDATA(N),RATIO 40 FORMAT(I3,' -',I3,F13.2,I15,F16.2) WRITE(3,60)NREF 60 FORMAT(//5X,'TOTAL NUMBER OF REFLECTIONS =',I5/) WRITE(3,61)NWEAK 61 FORMAT(5X,'TOTAL NUMBER OF WEAK MEASUREMENTS =',I5/) FRAC=100.0-100.0*NWEAK/NREF WRITE(3,62)FRAC 62 FORMAT(5X,'OVERALL RATIO OF OBSERVED REFLECTIONS =',F7.2,' (%)') 3000 CONTINUE END