C---*----1----*----2----*----3----*----4----*----5----*----6----*----7 SUBROUTINE KPMWBZ > (KNV3,RLTV,NKX,NKY,NKZ,NKX2,NKY2,NKZ2,NFOUT, < KV3,VX,VY,VZ) C************************************************************ IMPLICIT LOGICAL(A-Z) INTEGER IKP,KNV3,NKX,NKY,NKZ,NKX2,NKY2,NKZ2,KV3,MM,I1,I2,I3,NFOUT REAL RLTV(3,3),VX(KNV3),VY(KNV3),VZ(KNV3),FVX,FVY,FVZ REAL DGVX,DGVY,DGVZ,FV1,FV2,FV3 FVX=DFLOAT(NKX*2) FVY=DFLOAT(NKY*2) FVZ=DFLOAT(NKZ*2) IKP=0 IF (IKP.EQ.0) THEN MM=0 C DGVX=0.5D0*(RLTV(1,1)/FVX+RLTV(1,2)/FVY+RLTV(1,3)/FVZ) C DGVY=0.5D0*(RLTV(2,1)/FVX+RLTV(2,2)/FVY+RLTV(2,3)/FVZ) C DGVZ=0.5D0*(RLTV(3,1)/FVX+RLTV(3,2)/FVY+RLTV(3,3)/FVZ) DGVX=0.0D0 DGVY=0.0D0 DGVZ=0.0D0 DO 100 I1=1,NKX2 FV1=DFLOAT(I1-NKX-1)/FVX DO 100 I2=1,NKY2 FV2=DFLOAT(I2-NKY-1)/FVY DO 100 I3=1,NKZ2 FV3=DFLOAT(I3-NKZ-1)/FVZ MM=MM+1 VX(MM)=RLTV(1,1)*FV1 + RLTV(1,2)*FV2 + RLTV(1,3)*FV3 +DGVX VY(MM)=RLTV(2,1)*FV1 + RLTV(2,2)*FV2 + RLTV(2,3)*FV3 +DGVY VZ(MM)=RLTV(3,1)*FV1 + RLTV(3,2)*FV2 + RLTV(3,3)*FV3 +DGVZ 100 CONTINUE WRITE(NFOUT,*) 'NUMBER OF GENERATED K-POINTS=',MM IF(MM.NE.KNV3) WRITE(NFOUT,*) '**WARNING MM SHOULD BE KNV3**' KV3=MM ELSE IF (IKP.EQ.1) THEN VX(1)=0.0D0 VY(1)=0.0D0 VZ(1)=0.0D0 KV3=1 END IF RETURN END