59 lines
1.9 KiB
Fortran
59 lines
1.9 KiB
Fortran
C-----------------------------------------------------------------------
|
|
C This subroutine gets the next DH set for automatic data collection
|
|
C-----------------------------------------------------------------------
|
|
SUBROUTINE NEXSEG
|
|
INCLUDE 'COMDIF'
|
|
DIMENSION ISET(25)
|
|
IUPDWN = 1
|
|
READ (IID,REC=4) ICENT,NUMDH,(SCRAP,I = 1,48),NSYM,LSET,ISET
|
|
C-----------------------------------------------------------------------
|
|
C IHO(5) = 1 means pointer mode, i.e. typed in DH matrices.
|
|
C-----------------------------------------------------------------------
|
|
IF (IHO(5) .EQ. 1) THEN
|
|
IHO(6) = IHO(6) + 1
|
|
NHO = IHO(6)
|
|
IF (NHO .GT. 25) THEN
|
|
NSET = 0
|
|
RETURN
|
|
ENDIF
|
|
NSET = ISET(NHO)
|
|
IF (NSET .EQ. 0) RETURN
|
|
NMSEG = 1
|
|
MSET = 1
|
|
IF (NSET .LT. 0) MSET = -1
|
|
IF (NSET .LT. 0) NSET = -NSET
|
|
DO 100 I = 1,3
|
|
DO 100 J = 1,3
|
|
IDH(8,I,J) = JRT(I,J,NSET)*MSET
|
|
100 CONTINUE
|
|
NSET = NSET*MSET
|
|
C-----------------------------------------------------------------------
|
|
C Normal sequence of sets. NSYM is the max no. of sets (+/-).
|
|
C If end of data collection set NSET = 0
|
|
C-----------------------------------------------------------------------
|
|
ELSE
|
|
IF (NSET .EQ. -NSYM) THEN
|
|
NSET = 0
|
|
RETURN
|
|
C-----------------------------------------------------------------------
|
|
C If a + set make it -; if a - set get the next + set.
|
|
C-----------------------------------------------------------------------
|
|
ELSE IF (NSET .GE. 0) THEN
|
|
NSET = -NSET
|
|
NMSEG = 1
|
|
DO 110 I = 1,3
|
|
DO 110 J = 1,3
|
|
IDH(8,I,J) = -IDH(8,I,J)
|
|
110 CONTINUE
|
|
ELSE
|
|
NSET = 1 - NSET
|
|
DO 120 I = 1,3
|
|
DO 120 J = 1,3
|
|
IDH(8,I,J) = JRT(I,J,NSET)
|
|
120 CONTINUE
|
|
NMSEG = 1
|
|
ENDIF
|
|
ENDIF
|
|
RETURN
|
|
END
|