C SUBROUTINE XNEFIN(X,WNXT,NUP,NTOTAL) IMPLICIT DOUBLE PRECISION (A-H,O-Z) PARAMETER(MAXPTS=65) DIMENSION X(3,NTOTAL) COMMON /PTS/ SPTS(MAXPTS),SVAL(MAXPTS),SINT(MAXPTS),SDER(MAXPTS) COMMON /MISC/ PI DATA PELE/.9D0/ C C CHOOSE A RANDOM 3D CARTESIAN POINT X C RADIAL PART PICKED FROM THE DISTRIBUTION SINT OF ORBITAL #IORB C ANGULAR PARTS CHOSEN RANDOMLY C WNXT=1 CPELE=PELE/NUP DO I=NUP+1,NTOTAL DEC=RNDMF(0.0) IF(DEC.GE.PELE)THEN TEMP=RNDMF(0.0)*SINT(MAXPTS) CALL LOCATE(SINT,MAXPTS,TEMP,INEW) EP=2*(TEMP-SINT(INEW)) R=SPTS(INEW)+EP/(SVAL(INEW)+SQRT(SVAL(INEW)* 1 SVAL(INEW)+SDER(INEW)*EP)) PHI=2.0*PI*RNDMF(0.0) AMU=2.0*RNDMF(0.0)-1.0 AMSU=SQRT(1.0-AMU*AMU) C NOW CONVERT TO CARTEASIAN COORDINATES X(1,I)=R*AMSU*SIN(PHI) X(2,I)=R*AMSU*COS(PHI) X(3,I)=R*AMU WX=SVAL(INEW)+(R-SPTS(INEW))*SDER(INEW) WX=WX/(4*PI*R*R*SINT(MAXPTS)) ELSE C *** NOW PICK AN ELECTRON DISTANCE USING G=-(R-.5)+ Y=RNDMF(0.0) RELE=.5D0*(1-SQRT(Y)) PHI=2.0*PI*RNDMF(0.0) AMU=2.0*RNDMF(0.0)-1.0 AMSU=SQRT(1.0-AMU*AMU) C NOW CONVERT TO CARTESIAN COORDINATES X(1,I)=RELE*AMSU*SIN(PHI) X(2,I)=RELE*AMSU*COS(PHI) X(3,I)=RELE*AMU C PICK AN UPSPIN ELECTRON IELEX=1+RNDMF(0.0)*NUP X(1,I)=X(1,I)+X(1,IELEX) X(2,I)=X(2,I)+X(2,IELEX) X(3,I)=X(3,I)+X(3,IELEX) C NOW FIND THE DISTANCE TO THE NUCLEUS RSUM2=0 DO J=1,3 RSUM2=RSUM2+X(J,I)*X(J,I) ENDDO R=SQRT(RSUM2) WX=0 IF(R.LT.SPTS(MAXPTS)) THEN CALL LOCATE(SPTS,MAXPTS,R,INEW) WX=SVAL(INEW)+(R-SPTS(INEW))*SDER(INEW) WX=WX/(4*PI*R*R*SINT(MAXPTS)) ENDIF ENDIF C NOW FIND THE DISTANCES TO THE NUP ELECTRONS WXE=0 DO JELEC=1,NUP RSUM2=0 DO J=1,3 R2=X(J,I)-X(J,JELEC) RSUM2=RSUM2+R2*R2 ENDDO IF(RSUM2.LT..25D0)THEN R=SQRT(RSUM2) WXE=WXE+(1-2*R)/(PI*R*R) ENDIF ENDDO WNXT=WNXT*((1-PELE)*WX+CPELE*WXE) ENDDO RETURN END