C---*----1----*----2----*----3----*----4----*----5----*----6----*----7
SUBROUTINE KPMSF
> (KNV3,RLTV,NKX,NKY,NKZ,NKX2,NKY2,NKZ2,NFOUT,
< KV3,VX,VY,VZ)
IMPLICIT LOGICAL(A-Z)
INTEGER KNV3,NKX,NKY,NKZ,NKX2,NKY2,NKZ2,KV3,MM,I2,I3,NFOUT
REAL RLTV(3,3),VX(KNV3),VY(KNV3),VZ(KNV3),FVY,FVZ
REAL DGVY,DGVZ,FV2,FV3
FVY=DFLOAT(NKY*2)
FVZ=DFLOAT(NKZ*2)
MM=0
DGVY=0.5D0*(RLTV(2,2)/FVY+RLTV(2,3)/FVZ)
DGVZ=0.5D0*(RLTV(3,2)/FVY+RLTV(3,3)/FVZ)
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) = 0.D0
VY(MM) = RLTV(2,2)*FV2 + RLTV(2,3)*FV3 + DGVY
VZ(MM) = 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,*) '**WARN MM SHOULD BE KNV3**'
KV3=MM
RETURN
END