C^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SUBROUTINE GSTEP1(IPRE)
C^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
IMPLICIT REAL(A-H,O-Y)
IMPLICIT COMPLEX(Z)
INCLUDE 'PACVPP'
KMAX=KNX+1
KMAY=KNY+1
KMAZ=KNZ+1
IF (IPRE.NE.1) THEN
KMAX=KNX-1
KMAY=KNY-1
KMAZ=KNZ-1
END IF
KMAX2=2*KMAX+1
KMAY2=2*KMAY+1
KMAZ2=2*KMAZ+1
C ## LARGEST WAVE VECTOR; CUT OFF WAVE NUMBER FOR WAVE FUNCTION ##
GMAX2=GMAX*2.0D0
C //////////////////////////////////////////////
C // GENERATION OF RECIPROCAL LATTICE VECTORS //
C // STEP 1 //
C //////////////////////////////////////////////
B1X = RLTV(1,1)
B1Y = RLTV(2,1)
B1Z = RLTV(3,1)
B2X = RLTV(1,2)
B2Y = RLTV(2,2)
B2Z = RLTV(3,2)
B3X = RLTV(1,3)
B3Y = RLTV(2,3)
B3Z = RLTV(3,3)
MM=0
DO 20 I1=1,KMAX2
F1=FLOAT(I1-KMAX-1)
DO 20 I2=1,KMAY2
F2=FLOAT(I2-KMAY-1)
DO 20 I3=1,KMAZ2
F3=FLOAT(I3-KMAZ-1)
FX= F1*B1X + F2*B2X + F3*B3X
FY= F1*B1Y + F2*B2Y + F3*B3Y
FZ= F1*B1Z + F2*B2Z + F3*B3Z
FR=SQRT(FX*FX+FY*FY+FZ*FZ)
IF(FR.LE.GMAX2) THEN
MM=MM+1
IG1(MM)=I1-KMAX-1
IG2(MM)=I2-KMAY-1
IG3(MM)=I3-KMAZ-1
GX(MM)=FX
GY(MM)=FY
GZ(MM)=FZ
GR(MM)=FR
END IF
20 CONTINUE
WRITE(6,*) 'NUMBER OF GENERATED VECTORS=',MM
IF(MM.NE.KG) WRITE(6,*) '**WARNING] KG MUST BE EQUAL TO ',MM
C-----------------------------------------------------------------------
KG=MM
IXMA=0
IYMA=0
IZMA=0
DO 643 I=1,KG
IXMA= MAX(IXMA,ABS(IG1(I)))
IYMA= MAX(IYMA,ABS(IG2(I)))
IZMA= MAX(IZMA,ABS(IG3(I)))
643 CONTINUE
IXMA = IXMA +1
IYMA = IYMA +1
IZMA = IZMA +1
WRITE(6,*) '**KX1 SHOULD BE =',IXMA
WRITE(6,*) '**KY1 SHOULD BE =',IYMA
WRITE(6,*) '**KZ1 SHOULD BE =',IZMA
C
KX1=IXMA
KY1=IYMA
KZ1=IZMA
RETURN
END