Files
sics/difrac/pfind.f
2000-02-18 15:54:23 +00:00

55 lines
2.0 KiB
Fortran

C-----------------------------------------------------------------------
C Get the coarse value of Phi for PCENTR
C-----------------------------------------------------------------------
SUBROUTINE PFIND (TIM)
INCLUDE 'COMDIF'
DIMENSION PCOUNT(NSIZE)
EQUIVALENCE (ACOUNT(9*NSIZE + 1), PCOUNT(1))
C-----------------------------------------------------------------------
C If offset by 2.5 deg and do 20 0.25 deg steps then we should find
C the maximum.
C-----------------------------------------------------------------------
STEPM = 0.05
PSTEP = 0.25
NPTS = 20
NATT = 0
C-----------------------------------------------------------------------
C Offset phi to the start of the scan
C-----------------------------------------------------------------------
100 POFFS = PSTEP*10.0
PHI = PHI - POFFS
IF (PHI .LT. 0.0) PHI = PHI + 360.0
IF (PHI .GE. 360.0) PHI = PHI - 360.0
PHIOFF = PHI
CALL ANGSET (THETA,OMEGA,CHI,PHI,NATT,ICOL)
C-----------------------------------------------------------------------
C Find the max intensity either by step and count or by doing a scan,
C depending on the type of diffractometer
C-----------------------------------------------------------------------
ICOUNT = 0
MCOUNT = 0
DO 110 I = 1,NPTS
CALL CCTIME (TIM,PCOUNT(I))
IF (PCOUNT(I) .GT. MCOUNT) THEN
MCOUNT = PCOUNT(I)
ICOUNT = I
ENDIF
PHI = PHI + PSTEP
IF (PHI .LT. 0.0) PHI = PHI + 360.0
IF (PHI .GE. 360.0) PHI = PHI - 360.0
CALL ANGSET (THETA,OMEGA,CHI,PHI,NATT,ICOL)
110 CONTINUE
IF (ICOUNT .EQ. 1 .OR. ICOUNT .EQ. NPTS) THEN
TIM = 5.0
RETURN
ENDIF
PHI = PHIOFF + (ICOUNT - 1)*PSTEP
TIM = 500.0*TIM/PCOUNT(ICOUNT)
IF (TIM .LT. 10000.0) THEN
IF (TIM .LT. 1000.) TIM = 1000.
PSTEP = PSTEP/4
IF (PSTEP .GT. STEPM) GO TO 100
ENDIF
RETURN
END