C---*----1----*----2----*----3----*----4----*----5----*----6----*----7 SUBROUTINE KSTEP > (KNV3,NBZTYP,ALTV,RLTV,NKX,NKY,NKZ,NKX2,NKY2,NKZ2,NFOUT, < KV3,VX,VY,VZ,QWGT) IMPLICIT LOGICAL(A-Z) INTEGER KNV3,NBZTYP,NKX,NKY,NKZ,NKX2,NKY2,NKZ2,KV3 INTEGER INDX(0:20,0:20,0:20),IK,NFOUT REAL ALTV(3,3),RLTV(3,3),A,B,C,PAI2,A1,B1,C1 REAL VX(KNV3),VY(KNV3),VZ(KNV3),QWGT(KNV3) LOGICAL SPINP PAI2 = 8.D0*ATAN(1.D0) SPINP = .FALSE. C*** IF((NBZTYP.EQ.0).OR.(NBZTYP.EQ.1)) THEN IF((NBZTYP.EQ.0).OR.(NBZTYP.EQ.1).OR.(NBZTYP.EQ.9) > .OR.(NBZTYP.GE.11)) THEN IF(NBZTYP.EQ.0) THEN C---------------------------------------------- WRITE(NFOUT,*) ' SURFACE B.Z. ' CALL KPMSF > (KNV3,RLTV,NKX,NKY,NKZ,NKX2,NKY2,NKZ2,NFOUT, < KV3,VX,VY,VZ) C---------------------------------------------- C**** ELSE IF(NBZTYP.EQ.1) THEN ELSE IF(NBZTYP.EQ.1.OR.NBZTYP.EQ.9.OR.NBZTYP.GE.11) THEN C---------------------------------------------- WRITE(NFOUT,*) ' WHOLE B.Z. ' CALL KPMWBZ > (KNV3,RLTV,NKX,NKY,NKZ,NKX2,NKY2,NKZ2,NFOUT, < KV3,VX,VY,VZ) C---------------------------------------------- END IF DO 100 IK=1,KNV3 QWGT(IK) = 1.D0/DFLOAT(KV3) 100 CONTINUE ELSE IF((NBZTYP.GE.2).AND.(NBZTYP.LE.5)) THEN IF(NBZTYP.EQ.2) THEN C---------------------------------------------------------- WRITE(NFOUT,*) ' SIMPLE CUBIC LATTICE ' CALL SCCM > (KNV3,NKX,SPINP,NFOUT, < KV3,VX,VY,VZ,QWGT,INDX) C---------------------------------------------------------- ELSE IF(NBZTYP.EQ.3) THEN C---------------------------------------------------------- WRITE(NFOUT,*) ' BCC LATTICE ' CALL BCCM > (KNV3,NKX,SPINP,NFOUT, < KV3,VX,VY,VZ,QWGT,INDX) C---------------------------------------------------------- ELSE IF((NBZTYP.EQ.4).OR.(NBZTYP.EQ.5)) THEN C---------------------------------------------------------- WRITE(NFOUT,*) ' FCC LATTICE ' CALL FCCM > (KNV3,NKX,SPINP,NFOUT, < KV3,VX,VY,VZ,QWGT,INDX) C---------------------------------------------------------- END IF A = ABS(ALTV(1,1)) * 2.D0 B = PAI2/A DO 200 IK = 1,KV3 VX(IK) = B*VX(IK) VY(IK) = B*VY(IK) VZ(IK) = B*VZ(IK) 200 CONTINUE ELSE IF(NBZTYP.EQ.6) THEN C---------------------------------------------------------- WRITE(NFOUT,*) ' HEX LATTICE ' CALL HEXM > (KNV3,NKX,NKY,RLTV,SPINP,NFOUT, < KV3,VX,VY,VZ,QWGT,INDX) C---------------------------------------------------------- ELSE IF (NBZTYP.EQ.8 .OR. NBZTYP.EQ.10) THEN WRITE (NFOUT,*) ' TETRAGONAL LATTICE ' CALL TETRAH > (KNV3,NKX,NKZ,RLTV,SPINP,NFOUT, < KV3,VX,VY,VZ,QWGT,INDX) A = ABS(ALTV(1,1))*2.0D0 A1 = PAI2/A B = ABS(ALTV(3,3))*2.0D0 B1 = PAI2/B WRITE (6,*) A,B,A1,B1,ALTV(1,1),ALTV(3,3) DO 201 IK = 1,KV3 VX(IK) = A1*VX(IK) VY(IK) = A1*VY(IK) VZ(IK) = B1*VZ(IK) 201 CONTINUE ELSE IF (NBZTYP.EQ.9.OR.NBZTYP.GE.11) THEN WRITE (NFOUT,*) ' ORTHORHONBIC LATTICE ' CALL APBO2 > (KNV3,NKX,NKY,NKZ,RLTV,SPINP,NFOUT, < KV3,VX,VY,VZ,QWGT,INDX) A = ABS(ALTV(1,1))*2.0D0 A1 = PAI2/A B = ABS(ALTV(2,2))*2.0D0 B1 = PAI2/B C = ABS(ALTV(3,3))*2.0D0 C1 = PAI2/C DO 202 IK = 1,KV3 VX(IK) = A1*VX(IK) VY(IK) = B1*VY(IK) VZ(IK) = C1*VZ(IK) 202 CONTINUE ELSE WRITE(NFOUT,*) ' NBZTYP ERR IN KSTEP NBUB = ',NBZTYP STOP END IF C KV3=1 C A = ABS(ALTV(1,1)) C A1 = PAI2/A C B = ABS(ALTV(3,3)) C B1 = PAI2/B C WRITE (6,*) A,B,A1,B1,ALTV(1,1),ALTV(3,3) C DO 202 IK = 1,KV3 C VX(IK) = A1*VX(IK) C VY(IK) = A1*VY(IK) C VZ(IK) = B1*VZ(IK) C 202 CONTINUE WRITE(NFOUT,300) (IK,VX(IK),VY(IK),VZ(IK),QWGT(IK),IK=1,KV3) 300 FORMAT((' ','IK = ',I3,3F10.6,3X,'QWGT = ',F10.6)) RETURN END