Initial revision
This commit is contained in:
88
difrac/cntref.f
Normal file
88
difrac/cntref.f
Normal file
@@ -0,0 +1,88 @@
|
||||
C-----------------------------------------------------------------------
|
||||
C Subroutine to count the number of reflections in a segment
|
||||
C-----------------------------------------------------------------------
|
||||
SUBROUTINE CNTREF
|
||||
INCLUDE 'COMDIF'
|
||||
DIMENSION INDX(3),FDH(3,3),FDHI(3,3),ISET(25)
|
||||
WRITE (COUT,10000)
|
||||
CALL GWRITE (ITP,' ')
|
||||
IOUT = -1
|
||||
CALL SPACEG (IOUT,1)
|
||||
C-----------------------------------------------------------------------
|
||||
C Ensure no rotation and set segment flag
|
||||
C-----------------------------------------------------------------------
|
||||
DPSI = 0.0
|
||||
ISEG = 0
|
||||
IPRVAL = 0
|
||||
IUMPTY = 1
|
||||
C-----------------------------------------------------------------------
|
||||
C Get segment data and calculate segment parameters
|
||||
C-----------------------------------------------------------------------
|
||||
DO 180 JSEG = 1,NSEG
|
||||
DO 110 I = 1,3
|
||||
DO 110 J = 1,3
|
||||
NDH(I,J) = IDH(JSEG,I,J)
|
||||
110 CONTINUE
|
||||
IND(1) = IHO(JSEG)
|
||||
IND(2) = IKO(JSEG)
|
||||
IND(3) = ILO(JSEG)
|
||||
HO = IND(1)
|
||||
KO = IND(2)
|
||||
LO = IND(3)
|
||||
DO 120 I = 1,3
|
||||
DO 120 J = 1,3
|
||||
FDH(I,J) = NDH(I,J)
|
||||
120 CONTINUE
|
||||
CALL MATRIX (FDH,FDHI,FDHI,FDHI,'INVERT')
|
||||
DO 140 I = 1,3
|
||||
INDX(I) = FDHI(I,1)*(IND(1)-HO) + FDHI(I,2)*(IND(2)-KO) +
|
||||
$ FDHI(I,3)*(IND(3)-LO)
|
||||
IF (INDX(I) .GE. 0) THEN
|
||||
INDX(I) = INDX(I) + 0.5
|
||||
ELSE
|
||||
INDX(I) = INDX(I) - 0.5
|
||||
ENDIF
|
||||
140 CONTINUE
|
||||
IFSHKL(1,1) = NDH(1,1)*INDX(1) + IND(1)
|
||||
IFSHKL(2,1) = NDH(2,1)*INDX(1) + IND(2)
|
||||
IFSHKL(3,1) = NDH(3,1)*INDX(1) + IND(3)
|
||||
DO 150 I = 1,3
|
||||
IFSHKL(I,2) = NDH(I,2)*INDX(2) + IFSHKL(I,1)
|
||||
IFSHKL(I,3) = NDH(I,3)*INDX(3) + IFSHKL(I,2)
|
||||
150 CONTINUE
|
||||
IH = IFSHKL(1,3)
|
||||
IK = IFSHKL(2,3)
|
||||
IL = IFSHKL(3,3)
|
||||
IUPDWN = 1
|
||||
C-----------------------------------------------------------------------
|
||||
C Set the standards flag for ANGCAL
|
||||
C-----------------------------------------------------------------------
|
||||
ISTAN = 0
|
||||
NN = 0
|
||||
NCOUNT = 0
|
||||
C-----------------------------------------------------------------------
|
||||
C Calculate the angle values and count the valid reflections
|
||||
C-----------------------------------------------------------------------
|
||||
160 IPRVAL = 0
|
||||
CALL ANGCAL
|
||||
IF (IVALID .EQ. 0) THEN
|
||||
IF (ISCAN .EQ. 1) THEN
|
||||
IBZ = 1
|
||||
CALL COMPTN (IBZ)
|
||||
IF (IBZ .EQ. 3) GO TO 170
|
||||
ENDIF
|
||||
NCOUNT = NCOUNT + 1
|
||||
CALL HKLN (IH,IK,IL,NCOUNT)
|
||||
ENDIF
|
||||
170 CALL INCHKL
|
||||
IF (ISEG .EQ. 0) GO TO 160
|
||||
WRITE (COUT,11000) JSEG,NCOUNT
|
||||
CALL GWRITE (ITP,' ')
|
||||
WRITE (LPT,11000) JSEG,NCOUNT
|
||||
180 CONTINUE
|
||||
IUMPTY = 0
|
||||
KI = ' '
|
||||
RETURN
|
||||
10000 FORMAT (' Count the number of reflections in each segment')
|
||||
11000 FORMAT (' DH Segment',I2,' contains',I6,' reflections')
|
||||
END
|
||||
Reference in New Issue
Block a user