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