This is the source of constructing separable non-local pseudopotential parts(L. Kleinman and D. M. Bylander, Phys. Rev. Lett., 48, 1425(1982)) from input data for s,p and d(f) pseudopotentials.

This program outputs the final data of NCPS95.



C     TO CONSTRUCT THE K-B TYPE PSEUDOPOTENTIAL
C
C     NEW VERSION (1990 1/8)  THIS PROGRAM MAKES ONLY S AND P.
C
      IMPLICIT REAL*8 (A-H,O-Z)
      PARAMETER(NESH=421)
C
C     ATTN!  GROUND-STATE (S,P) , EXITED-STATE (D)
C            GROUND-STATE (S)   , EXITED-STATE (P,D)
C
      DIMENSION RAD(NESH),VS(NESH),VP(NESH),VD(NESH)
      DIMENSION WFS(NESH),WFP(NESH),WFD(NESH)
      DIMENSION VSKB(NESH),VPKB(NESH),VDKB(NESH),VCOR(NESH)
      DIMENSION OMO(NESH),VDNL(NESH),VDUM(NESH)
C
C     READING THE DATA(POTENTIAL AND WAVE-FUNCTION)
C
      OPEN(UNIT=10,FILE='fort.10')
      OPEN(UNIT=11,FILE='fort.11')
      OPEN(UNIT=12,FILE='SISICKBHS.DAT')
      OPEN(UNIT=14,FILE='SISICD.DAT') 
C
      REWIND 10
      REWIND 11
      REWIND 14
      READ (10,*) MESH,NMES,DX,RAD,VS,VP,WFS,WFP
      READ (11,*) MESH,NMES,DX,RAD,VD,WFD,VDUM 
      WRITE (6,*) 'INPUT AA1,AA2,ACC! 2.16,0.86,1.6054'
      READ (5,*) AA1 
      READ (5,*) AA2
      READ (5,*) ACC
C        SI
C      AA1  = 2.16D0
C      AA2  = 0.86D0
C      ACC  = 1.6054D0
C
      ALP1 = AA1
      ALP2 = AA2
      ACOEF= ACC
      ZVAL = 4.0D0
C
      DO 3000 N=1,MESH
      X1   = DSQRT(ALP1)*RAD(N)
      X2   = DSQRT(ALP2)*RAD(N)
      ERF1 = DERF(X1)
      ERF2 = DERF(X2)
C     WRITE (6,*) ERF1,ERF2
      IF (RAD(N).EQ.0.0D0) THEN
          VCOR(N)=-ZVAL*(ACOEF*(DSQRT(ALP1)-DSQRT(ALP2))+DSQRT(ALP2))
      ELSE
          VCOR(N)=-ZVAL*(ACOEF*(ERF1-ERF2)+ERF2)/RAD(N)
      END IF
 3000 CONTINUE
C
C     K-B TYPE SEPARATION FORM
C
      DO 1000 I=1,MESH
      VSKB(I)=(VS(I)-VCOR(I))*WFS(I)
      VPKB(I)=(VP(I)-VCOR(I))*WFP(I)
      VDKB(I)=(VD(I)-VCOR(I))*WFD(I)
 1000 CONTINUE
C
C     INTEGRATION OF WEIGHT (WS,WP)
C
      OMO(1)     = 1.0D0
      DO 1101 N  = 2,MESH-1,2
      OMO(N)     = 4.0D0
      OMO(N+1)   = 2.0D0
 1101 CONTINUE
      OMO(MESH)  = 1.0D0
C     THIS ROUTINE ASSUMES LOG-MESH INTEGRATION.
      WS=0.0D0
      WP=0.0D0
      WD=0.0D0
      W1=0.0D0
      W2=0.0D0
      W3=0.0D0
      DO 1100 I=1,MESH
      WS=WS+OMO(I)*DX*WFS(I)*VSKB(I)*RAD(I)
      WP=WP+OMO(I)*DX*WFP(I)*VPKB(I)*RAD(I)
      WD=WD+OMO(I)*DX*WFD(I)*VDKB(I)*RAD(I)
      W1=W1+OMO(I)*DX*VSKB(I)**2*RAD(I)
      W2=W2+OMO(I)*DX*VPKB(I)**2*RAD(I)
      W3=W3+OMO(I)*DX*VDKB(I)**2*RAD(I)
 1100 CONTINUE
      WA=WS/SQRT(W1)
      WB=WP/SQRT(W2)
      WC=WD/SQRT(W3)      
      EA=W1/WS*27.2
      EB=W2/WP*27.2
      EC=W3/WD*27.2
      WRITE (6,*) 'WS,P,D = ',WS,WP,WD
      WRITE (6,*) 'WA,B,C = ',WA,WB,WC
      WRITE (6,*) 'W1,2,3 = ',EA/27.2,EB/27.2,EC/27.2
      WRITE (6,*) 'EA,B,C = ',EA,EB,EC
C
      DO 1200 I=1,MESH
      WRITE (20,888) RAD(I),VS(I)
      WRITE (21,888) RAD(I),VP(I)
      WRITE (22,888) RAD(I),VD(I)
      WRITE (23,888) RAD(I),VCOR(I)
 888  FORMAT(1H ,2F12.6)
 1200 CONTINUE
C
      REWIND 12
      WRITE (12,*) MESH,NMES,DX,WS,WP,WD,RAD,VSKB,VPKB,VDKB 
C     WRITE (14,*) MESH,NMES,DX,RAD,VD,VDNL
C
      CLOSE(10)
      CLOSE(11)
      CLOSE(12)
      CLOSE(14)
C
      STOP
      END

[ Return to author's home page ]