C ******************** POTCUT2 ************************ C C EXPAND THE POTENTIAL PROFILE IN SEMICONDUCTOR AND VACUUM C SUBROUTINE POTCUT2(SEP,NV,PHI0,S,NS,NSDIM,BARR,NBARR1,BARR2, &NBARR2,NVDIM1,NVDIM2,PROF,PROF2,NSDIM2,S2,NS2,VACSTEP,SEMSTEP, &FRAC,JSEM,NEXSEM,NEXVAC,IWRIT,NSDIM1) C DIMENSION S(NSDIM),BARR(NVDIM1),BARR2(NVDIM2),PROF(NSDIM), &PROF2(NSDIM2),S2(NSDIM2),JSEM(NSDIM2),NEXSEM(NSDIM1) real kappa,lambda COMMON/SEMI/EGAP,ED,EA,ACB,AVB,CD,CA,EPSIL,TK,IDEG,IINV C C EXPAND VACUUM BARRIER C nexpan=MAX0(1,NINT((SEP/NV)/VACSTEP)) NEXVAC=NEXPAN IF (IWRIT.NE.0) THEN write(6,*) 'expansion factor for barrier =',nexpan write(16,*)'expansion factor for barrier =',nexpan END IF NBARR2=nexpan*(NBARR1-1)+1 BARR2(NBARR2)=BARR(NBARR1) DO 150 J=NBARR1-1,1,-1 B2=BARR(J+1) B1=BARR(J) DO 140 K=nexpan-1,0,-1 BARR2((J-1)*nexpan+K+1)= & (B2*FLOAT(K)+B1*FLOAT(nexpan-K))/nexpan 140 CONTINUE 150 CONTINUE IF (IWRIT.NE.0) THEN WRITE(6,*) 'number of expanded points in vacuum =',NBARR2 WRITE(16,*)'number of expanded points in vacuum =',NBARR2 END IF c lambda=3.80**2*0.1*alog(2.)/(2.*2.*sep) c do 200 j=2,NBARR2-1 c barr2(j)=barr2(j)-1.15*lambda*(NBARR2-1.)**2/ c & ((j-1.)*(float(NBARR2)-j)) c200 continue c c EXPAND THE POTENTIAL PROFILE IN SEMICONDUCTOR c DO 300 J=1,NS+1 NEXSEM(J)=0 300 CONTINUE NSP=NINT(FRAC*NS) NEXPAN=max0(1,NINT(S(1)/SEMSTEP)) IF (IWRIT.NE.0) THEN write(6,*) 'initial expansion factor for semiconductor =',nexpan write(16,*)'initial expansion factor for semiconductor =',nexpan END IF NS2=NSP*NEXPAN KK=0 c note: removed line below after program was developed (check!) c SEMSTEP=0.1 DO 570 J=1,NSP IF (J.EQ.1) THEN NEXPAN=MAX0(1,NINT(S(1)/SEMSTEP)) ELSE NEXPAN=MAX0(1,NINT((S(J)-S(J-1))/SEMSTEP)) END IF IF (MOD(NEXPAN,2).EQ.0) NEXPAN=NEXPAN+1 DO 560 K=1,NEXPAN KK=KK+1 IF (K.LE.(NEXPAN/2)) THEN JSEM(KK)=J-1 ELSE JSEM(KK)=J END IF NEXSEM(JSEM(KK)+1)=NEXSEM(JSEM(KK)+1)+1 IF (KK.GT.NSDIM2) THEN WRITE(6,*) '*** ERROR - NSDIM2 TOO SMALL ',KK,NSDIM2 WRITE(16,*)'*** ERROR - NSDIM2 TOO SMALL ',KK,NSDIM2 WRITE(6,*) 'PRESS THE ENTER KEY TO EXIT' WRITE(16,*)'PRESS THE ENTER KEY TO EXIT' READ(5,*) STOP END IF IF (J.EQ.1) THEN PROF2(KK)=((NEXPAN-K)*PHI0+(K)*PROF(J))/FLOAT(NEXPAN) ELSE PROF2(KK)=((NEXPAN-K)*PROF(J-1)+(K)*PROF(J)) & /FLOAT(NEXPAN) END IF IF (J.EQ.1) THEN S2(KK)=((NEXPAN-K)*0.+(K)*S(J))/FLOAT(NEXPAN) ELSE S2(KK)=((NEXPAN-K)*S(J-1)+(K)*S(J))/FLOAT(NEXPAN) END IF 560 CONTINUE 570 CONTINUE NS2=KK IF (IWRIT.NE.0) THEN WRITE(6,*) 'number of expanded points in semiconductor =',NS2 WRITE(16,*)'number of expanded points in semiconductor =',NS2 END IF RETURN END