PROGRAM ABCDE
IMPLICIT REAL (8) (A-B,D-H,O-Z) !Define numeros reais e imaginarios
IMPLICIT COMPLEX (8)(C)
PARAMETER(NZ=501,L=2) !Define parametros
!
REAL, DIMENSION(L,L) :: D1
REAL, DIMENSION(L,L) :: P
REAL, DIMENSION(L,L) :: D
REAL, DIMENSION(L,L) :: Q
REAL, DIMENSION(NZ) :: X
REAL, DIMENSION(NZ) :: Y
REAL, DIMENSION(NZ) :: V
COMPLEX, DIMENSION(NZ) :: CW
COMPLEX, DIMENSION(L,L) :: CKP
COMPLEX, DIMENSION(L,L) :: CTRANSM
COMPLEX, DIMENSION(L,L) :: CT
COMPLEX, DIMENSION(2,2) :: CKJ
COMPLEX, DIMENSION(2,2) :: CKT
!OPEN(UNIT=12,FILE='ENERGY.DAT',FORM='FORMATTED')
!OPEN(UNIT=13,FILE='PSI0.DAT',FORM='FORMATTED')
!OPEN(UNIT=14,FILE='PSI.DAT',FORM='FORMATTED')
!
!
!307 FORMAT(86(2X,E14.7))
!308 FORMAT(I5,86(2X,E14.7))
AM = 0.067D0 !Massa efetiva do e- (GaAs)
EPS = 12.5D0 !Constante dielétrica (GaAs)
RY = 13.6058D3 * AM / EPS / EPS
A0 = 0.5292D0 * EPS / AM
PI = 4.D0 * DATAN(1.D0)
CZ = (0.D0,1.D0)
WRITE(*,*)'INSIRA ENERGIA DA PARTICULA INCIDENTE (meV)=' !Insere variável
READ(*,*) E1
E = E1/RY
! WRITE(*,*)'INSIRA A MASSA DA PARTICULA INCIDENTE=' !Insere variável
! READ(*,*) MASSA
WRITE(*,*)'INSIRA O COMPRIMENTO=' !Insere variável
READ(*,*) ALF
AL = ALF/A0
CALL MESH (DZ,Z)
CALL POTE(A0,RY,AL,Z,V)
KB = DSQRT(E-V(2)) !COMEÇA NO 3 OU NO 2?
DO M=3,NZ
K2 = DSQRT(E-V(M))
DM = K2/KB
C = CDEXP(CZ*K2*DZ)
CW(M) = C
X(M) = (1 + DM)/2
Y(M) = (1 - DM)/2
KB = K2
ENDDO
D1 (1,1) = X(1)
D1 (2,1) = Y(1)
D1 (1,2) = Y(1)
D1 (2,2) = X(1)
CALL CALCM(X,Y,CW,CKJ)
CKT(1,1)= D(1,1)*CKJ(1,1)+D(1,2)*CKJ(2,1)
!CKT(1,2)
CKT(2,1) = D(2,1)*CKJ(1,1)+D(2,2)*CKJ(2,1)
!CKT(2,2)
!CKY(1,1,M) = D(1,1)*CP(1,1)+D(1,2)*P(2,1)
!KY(1,2,M) = D(1,1)*P(1,2)+D(1,2)*P(2,2)
!KY(2,1,M) = D(2,1)*P(1,1)+D(2,2)*P(2,1)
!KY(2,2,M) = D(2,1)*P(1,2)+D(2,2)*P(2,2)
!CKT(2,1) = CT1
!CKT(1,1) = CT2
!ESCREVER DESSE JEITO DA CERTO?
CEFICIENCIA = 1 - (DABS(CKT(2,1))**2)/DABS(CKT(1,1))**2
WRITE(*,*) CEFICIENCIA
END PROGRAM ABCDE
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
SUBROUTINE CALCM(X,Y,CW,CKJ)
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
IMPLICIT REAL (8) (A-B,D-H,O-Z) !Define numeros reais e imaginarios
IMPLICIT COMPLEX (8)(C)
PARAMETER(NZ=501)
!DIMENSION
!COMPLEX (8) CKY(2,2), CKW(L,L,NZ), CKJ (L,L,NZ)
COMPLEX, DIMENSION(2,2,NZ) :: CKY
COMPLEX, DIMENSION(2,2) :: CKW
COMPLEX, DIMENSION(2,2) :: CKJ
!faz o D*P para todos as barreiras D2*P2, D3*P3..
DO M = 2,NZ
CKY(1,1,M) = X(M)*CW(M)
CKY(1,2,M) = Y(M)*DCONJG(CW(M))
CKY(2,1,M) = Y(M)*CW(M)
CKY(2,2,M) = X(M)*DCONJG(CW(M))
ENDDO
!faz a primeira multiplicação de trás pra frente (D500*P500)*(D501*P501)
CKW(1,1) = CKY(1,1,2)*CKY(1,1,3) + CKY(1,2,2)*CKY(2,1,3)
CKW(1,2) = CKY(1,1,2)*CKY(1,2,3) + CKY(1,2,2)*CKY(2,2,3)
CKW(2,1) = CKY(2,1,2)*CKY(1,1,3) + CKY(2,2,2)*CKY(2,1,3)
CKW(2,2) = CKY(2,1,2)*CKY(1,2,3) + CKY(2,2,2)*CKY(2,2,3)
DO M = 4,NZ
!CKJ = CKY(M)*CKW
CKJ(1,1) = CKW(1,1)*CKY(1,1,M) + CKW(1,2)*CKY(2,1,M)
CKJ(1,2) = CKW(1,1)*CKY(1,2,M) + CKW(1,2)*CKY(2,2,M)
CKJ(2,1) = CKW(2,1)*CKY(1,1,M) + CKW(2,2)*CKY(2,1,M)
CKJ(2,2) = CKW(2,1)*CKY(1,2,M) + CKW(2,2)*CKY(2,2,M)
!CKW = CKJ
CKW(1,1) = CKJ(1,1)
CKW(1,2) = CKJ(1,2)
CKW(2,1) = CKJ(2,1)
CKW(2,2) = CKJ(2,2)
!D(1,1) = X(M)
!D(2,1) = Y(M)
!D(1,2) = Y(M)
!D(2,2) = X(M)
!CP(1,1) = CW(M)
!CP(2,1) = (0.D0,0.D0)
!CP(1,2) = (0.D0,0.D0)
!CP(2,2) = DCONJG(CW(M))
!CKY(1,1,M) = D(1,1)*CP(1,1)+D(1,2)*P(2,1)
!KY(1,2,M) = D(1,1)*P(1,2)+D(1,2)*P(2,2)
!KY(2,1,M) = D(2,1)*P(1,1)+D(2,2)*P(2,1)
!KY(2,2,M) = D(2,1)*P(1,2)+D(2,2)*P(2,2)
ENDDO
RETURN
END SUBROUTINE CALCM
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
SUBROUTINE MESH(AL,Z)
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
IMPLICIT REAL(8) (A-H,O-Z)
PARAMETER (NZ=501)
DIMENSION Z(NZ)
!
DZ = AL/(NZ-1)
DO I=1,NZ
Z(I) = DFLOAT(I-1) * DZ
ENDDO
!
RETURN
END SUBROUTINE MESH
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
SUBROUTINE POTE(A0,RY,AL,Z,POTF) !**********
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IMPLICIT REAL(8) (A-H,O-Z)
PARAMETER (NZ=501)
DIMENSION Z(NZ), POTF(NZ)
ALH = 0.5D0 * AL !MEIO DO SISTEMA
DQW = 20.D0 / A0 ! DISTANCIA ENTRE POCOS
DQWH = 0.5D0 * DQW
QW = 100.D0 / A0 ! LARGURA DOS POCOS
QWH = 0.5D0 * QW
AT = DQWH + QW
DO IZ=1,NZ
ZW = Z(IZ) - ALH
POTF(IZ) = 0.D0
IF(DABS(ZW).GT.DQWH.AND.DABS(ZW).LT.AT) POTF(IZ) = 400.D0/RY
ENDDO
!
RETURN
END SUBROUTINE POTE