2 SUBROUTINE POTENTIAL_WZ(EEL
,EHHUP
,EHHDW
,ELHUP
,ELHDW
,&
3 ESOUP
,ESODW
,ELAST
,EXX
,EYY
,&
9 Use Auxiliar_Procedures
, ONLY
: AISO
13 !!!!! 'dummy' and local variables !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
15 REAL,DIMENSION(:,:,:),OPTIONAL
:: EXX
,EYY
,EZZ
,EXY
,EXZ
,EYZ
,POT
17 REAL,DIMENSION(:,:,:) :: EEL
,EHHUP
,EHHDW
,ELHUP
,ELHDW
,&
20 REAL ZM
,THETA
,CTHETA
,STHETA
, &
23 INTEGER I_X
,I_Y
,I_Z
,I_N1
,I_N2
,I_N3
,CHI
25 REAL, DIMENSION(3) :: R_SL
,X_VEC
,XI_VEC
27 REAL :: POTBE
,POTBHH
,POTBLH
,POTBSO
,POTBLS
,&
28 POTWE
,POTWHH
,POTWLH
,POTWSO
,POTWLS
,&
29 VBIEL
,VBIHH
,VBILH
,VBISO
,VBILS
31 REAL,DIMENSION(0:1) :: POTE
, POTHH
, POTLH
, POTSO
, POTLS
, &
32 PC1
, PC2
, PD1
, PD2
, PD3
, PD4
, PD5
, PD6
34 REAL, DIMENSION(1:8) :: ENERGY
36 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
38 CALL ENER_CONSTANTS_WZ( )
41 ! WRITE(16,'(A,I3,A,I3)')"I_Z ",I_Z," of ",ZDIM
42 Z
=Z_Min
+REAL(I_Z
-1)*Z_Inc
44 Y
=Y_Min
+REAL(I_Y
-1)*Y_Inc
46 X
=X_Min
+REAL(I_X
-1)*X_Inc
50 N3
: DO I_N3
=NMin_Z
,NMax_Z
51 N2
: DO I_N2
=NMin_Y
,NMax_Y
52 N1
: DO I_N1
=NMin_X
,NMax_X
54 R_SL
=REAL(I_N1
)*A1_S
+REAL(I_N2
)*A2_S
+REAL(I_N3
)*A3_S
58 RHO
=SQRT(XI_VEC(1)**2+XI_VEC(2)**2)/RC
59 IF(XI_VEC(1).EQ
.0.E0
.AND
.XI_VEC(2).EQ
.0.E0
) THEN
60 CTHETA
=1.E0
/SQRT(2.E0
); STHETA
=1.E0
/SQRT(2.E0
) ! It is not the Mathematical limit
62 THETA
=ATAN(XI_VEC(2)/XI_VEC(1))
63 CTHETA
=Cos(THETA
); STHETA
=Sin(THETA
)
68 CALL SHAPERTOZ(MIN(RHO
*RC
,Rqd_Base
),ZMAUX
)
74 IF (abs(zeta
) .EQ
. 0.E0
.OR
. ZETA
.EQ
. ZM
) THEN
79 IF (ZETA
.GE
.-D
.AND
.ZETA
.LE
.ZM
) THEN
81 IF(I_N1
.NE
.0.OR
.I_N2
.NE
.0.OR
.I_N3
.NE
.0) THEN
82 WRITE(16,*)I_N1
,I_N2
,I_N3
83 WRITE(16,*)X_VEC(3),ZETA
*ZC
,ZM
*ZC
88 CALL POT_CALC_CAR_WZ(CHI
,ENERGY
)
90 CALL POT_CALC_CYL_WZ(CHI
,ENERGY
)
97 EEL(I_X
,I_Y
,I_Z
) = ENERGY(1)
98 EHHUP(I_X
,I_Y
,I_Z
) = ENERGY(2)
99 EHHDW(I_X
,I_Y
,I_Z
) = ENERGY(3)
100 ELHUP(I_X
,I_Y
,I_Z
) = ENERGY(4)
101 ELHDW(I_X
,I_Y
,I_Z
) = ENERGY(5)
102 ESOUP(I_X
,I_Y
,I_Z
) = ENERGY(6)
103 ESODW(I_X
,I_Y
,I_Z
) = ENERGY(7)
104 ELAST(I_X
,I_Y
,I_Z
) = ENERGY(8)
106 ! WRITE(26,'(10(E15.8,1X))')Z,ENERGY(1:8)
118 SUBROUTINE ENER_CONSTANTS_WZ( )
121 ! Definition of parameters for Barrier and Well
127 POTWHH
= (VWH
+DW1
+DW2
)
128 POTWLH
= (VWH
+(DW1
-DW2
+4.E0
*DW3
)/3.E0
)
129 POTWSO
= (VWH
+2.E0
*(DW1
-DW2
-2.E0
*DW3
)/3.E0
)
130 POTWLS
= (DW1
-DW2
+DW3
)
132 POTBHH
= (VBH
+DB1
+DB2
)
133 POTBLH
= (VBH
+(DB1
-DB2
+4.E0
*DB3
)/3.E0
)
134 POTBSO
= (VBH
+2.E0
*(DB1
-DB2
-2.E0
*DB3
)/3.E0
)
135 POTBLS
= (DB1
-DB2
+DB3
)
137 IF(STR_Action
.EQ
.0) THEN
138 VBIEL
= ( C2
*BISUM
+ C1
*BIZZ
)
139 VBIHH
= ( (D2
+D4
)*BISUM
+ (D1
+D3
)*BIZZ
)
140 VBILH
= ( (D2
+D4
/3.)*BISUM
+ (D1
+D3
/3.)*BIZZ
)
141 VBISO
=( (D2
+2.*D4
/3.)*BISUM
+ (D1
+2.*D3
/3.)*BIZZ
)
142 VBILS
= ( D4
*BISUM
+ D3
*BIZZ
)
144 ! Potential edges including strain effect
146 POTWHH
= (POTWHH
+VBIHH
)
147 POTWLH
= (POTWLH
+VBILH
)
148 POTWSO
= (POTWSO
+VBISO
)
149 POTWLS
= (POTWLS
+VBILS
)
152 POTE(0) = POTBE
; POTE(1) = POTWE
153 POTHH(0) = POTBHH
; POTHH(1) = POTWHH
154 POTLH(0) = POTBLH
; POTLH(1) = POTWLH
155 POTLS(0) = POTBLS
; POTLS(1) = POTWLS
156 POTSO(0) = POTBSO
; POTSO(1) = POTWSO
158 !!!! Deformation potentials for barrier and well are equal
160 PC1(0) = C1
; PC1(1) = C1
161 PC2(0) = C2
; PC2(1) = C2
162 PD1(0) = D1
; PD1(1) = D1
163 PD2(0) = D2
; PD2(1) = D2
164 PD3(0) = D3
; PD3(1) = D3
165 PD4(0) = D4
; PD4(1) = D4
166 PD5(0) = D5
; PD5(1) = D5
167 PD6(0) = D6
; PD6(1) = D6
171 END SUBROUTINE ENER_CONSTANTS_WZ
173 SUBROUTINE POT_CALC_CAR_WZ(CHI
,ENERGY
)
176 REAL, DIMENSION(:) :: ENERGY
177 INTEGER, PARAMETER :: DIMM
=6
178 COMPLEX, DIMENSION(1:DIMM
,1:DIMM
) :: HKANE
179 REAL :: SXX
,SYY
,SZZ
,SXY
,SXZ
,SYZ
,PZO
181 !! DIAGONALIZATION VARIABLES
183 COMPLEX, DIMENSION(1:(2*DIMM
-1)) :: WORK
184 REAL, DIMENSION(1:(3*DIMM
-2)) :: RWORK
185 REAL W(1:DIMM
), ROOT(DIMM
), CARAC(DIMM
)
190 IF(STR_Action
.EQ
.0) THEN
191 SXX
=0.E0
; SYY
=0.E0
; SZZ
=0.E0
192 SXY
=0.E0
; SXZ
=0.E0
; SYZ
=0.E0
201 IF(PZO_Action
.EQ
.0.E0
) THEN
207 HKANE(1,1)=POTHH(CHI
)-PZO
+ &
208 (PD1(CHI
)+PD3(CHI
))*SZZ
+(PD2(CHI
)+PD4(CHI
))*(SXX
+SYY
)
210 HKANE(2,2)=POTLH(CHI
)-PZO
+(PD1(CHI
)+PD3(CHI
)/3.E0
)*SZZ
+ &
211 (PD2(CHI
)+PD4(CHI
)/3.E0
)*(SXX
+SYY
)
212 HKANE(3,3)=HKANE(2,2)
213 HKANE(4,4)=HKANE(1,1)
214 HKANE(5,5)=POTSO(CHI
)-PZO
+(PD1(CHI
)+2.E0
*PD3(CHI
)/3.E0
)*SZZ
+ &
215 (PD2(CHI
)+2.E0
*PD4(CHI
)/3.E0
)*(SXX
+SYY
)
216 HKANE(6,6)=HKANE(5,5)
218 IF(DIAG_Action
.NE
.0.AND
.STR_Action
.NE
.0) THEN
220 HKANE(1,2)=-SQRT(2.E0
/3.E0
)*PD6(CHI
)*CMPLX(SXZ
,-SYZ
)
221 HKANE(1,3)=-1.E0
/SQRT(3.E0
)*PD5(CHI
)*CMPLX(SXX
-SYY
,-2.E0
*SXY
)
223 HKANE(1,5)=1.E0
/SQRT(3.E0
)*PD6(CHI
)*CMPLX(SXZ
,-SYZ
)
224 HKANE(1,6)=SQRT(2./3.)*PD5(CHI
)*CMPLX(SXX
-SYY
,-2.E0
*SXY
)
227 HKANE(2,4)=HKANE(1,3)
228 HKANE(2,5)=SQRT(2.E0
)/3.E0
*( POTLS(CHI
)+&
229 (PD3(CHI
)*SZZ
+PD4(CHI
)*(SXX
+SYY
)) )
230 HKANE(2,6)=-PD6(CHI
)*CMPLX(SXZ
,-SYZ
)
232 HKANE(3,4)=-HKANE(1,2)
233 HKANE(3,5)=-PD6(CHI
)*CMPLX(SXZ
,SYZ
)
234 HKANE(3,6)=-HKANE(2,5)
236 HKANE(4,5)=-SQRT(2./3.)*PD5(CHI
)*CMPLX(SXX
-SYY
,+2.E0
*SXY
)
237 HKANE(4,6)=PD6(CHI
)*CMPLX(SXZ
,SYZ
)/SQRT(3.E0
)
245 HKANE(J
,I
)=CONJG(HKANE(I
,J
))
249 CALL CHEEV('V','U',DIMM
,HKANE
,DIMM
,W
,WORK
,LWORK
,RWORK
,INFO
)
252 write(6,*)"Not Succesful Exit. Stopping. INFO=",INFO
253 write(6,'(2(A,F6.3,1X))')"RHO=",RC
*RHO
,"ZETA=",ZETA
*ZC
257 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
258 !! Ordering Eigenvalues according to the Bloch func. caracter
259 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
264 ! Calculo de la componentes dependientes del spin
266 CARAC(J
)=HKANE(J
,I
)*HKANE(J
,I
)
268 ! Suma de componentes independientemente del spin (hh_up + hh_dw, lh_up + lh_dw)
269 CARAC(1)=CARAC(1)+CARAC(4)
271 CARAC(2)=CARAC(2)+CARAC(3)
273 CARAC(5)=CARAC(5)+CARAC(6)
276 ! Peso de las componentes de las que se extraeran los autovalores.
278 IF (CARAC(1).GE
.CARAC_MAX
) THEN ! HH
281 IF (CARAC(2).GE
.CARAC_MAX
) THEN ! LH
284 IF (CARAC(5).GE
.CARAC_MAX
) THEN ! SO
290 ELSE ! Only the diagonal elements were calculated
295 ROOT(2)=HKANE(6,6) !Redundant
300 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
302 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
304 ENERGY(1) = POTE(CHI
)-PZO
+(PC1(CHI
)*SZZ
+PC2(CHI
)*(SXX
+SYY
))
313 ! ENERGY(7) = CHI ! To save the Structure-profile
315 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
316 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
317 !!!!! Calculation of the Elastic Energy. Since EEL contains no information
318 !!!!! we will use this array to pack the Elastic Energy.
320 !!!!! U=1/2*XLAMB*Tr(e)**2+XMU*(err**2+e00**2+ezz**2+erz**2)
322 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
323 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
325 ENERGY(8) = C11
*(SXX
**2 + SYY
**2)+C33
*SZZ
**2+ &
326 2.E0
*(XLAMB
*(SXX
*SYY
)+C13
*(SXX
+SYY
)*SZZ
+ &
327 (C11
-XLAMB
)*SXY
**2+2.E0
*XMU
*(SXZ
**2+SYZ
**2))
329 ENERGY(8) = ENERGY(8)/2.E0
333 END SUBROUTINE POT_CALC_CAR_WZ
335 SUBROUTINE POT_CALC_CYL_WZ(CHI
,ENERGY
)
338 REAL, DIMENSION(:) :: ENERGY
339 INTEGER, PARAMETER :: DIMM
=6
340 REAL, DIMENSION(1:DIMM
,1:DIMM
) :: HKANE
342 REAL :: SSUM
,SDIF
,SZZ
,SRZ
,SRR
,S00
344 !! DIAGONALIZATION VARIABLES
346 REAL :: W(1:DIMM
), WORK(1:10*DIMM
), AW(1:DIMM
,1:DIMM
), &
347 ROOT(DIMM
), CARAC(DIMM
), SLAMCH
348 INTEGER :: IWORK(DIMM
*5), IFAIL(DIMM
), INFO
, NUM
350 IF(STR_Action
.EQ
.0) THEN
351 SSUM
=0.E0
; SDIF
=0.E0
; SZZ
=0.E0
;
352 SRZ
=0.E0
; SRR
=0.E0
; S00
=0.E0
355 !!! FOR CYLINDRICAL COORDINATES WE CALCULATE ONLY THE X-Z PLANE,
356 !!! THAT MEANS: THETA=0
360 SSUM
=EXX(I_X
,I_Y
,I_Z
)+EYY(I_X
,I_Y
,I_Z
)
361 SDIF
=EXX(I_X
,I_Y
,I_Z
)-EYY(I_X
,I_Y
,I_Z
)
365 IF(PZO_Action
.EQ
.0.E0
) THEN
371 HKANE(1,1)=POTHH(CHI
)-PZO
+ &
372 (PD1(CHI
)+PD3(CHI
))*SZZ
+(PD2(CHI
)+PD4(CHI
))*SSUM
374 HKANE(2,2)=POTLH(CHI
)-PZO
+(PD1(CHI
)+PD3(CHI
)/3.E0
)*SZZ
+ &
375 (PD2(CHI
)+PD4(CHI
)/3.E0
)*SSUM
376 HKANE(3,3)=HKANE(2,2)
377 HKANE(4,4)=HKANE(1,1)
378 HKANE(5,5)=POTSO(CHI
)-PZO
+(PD1(CHI
)+2.E0
*PD3(CHI
)/3.E0
)*SZZ
+ &
379 (PD2(CHI
)+2.E0
*PD4(CHI
)/3.E0
)*SSUM
380 HKANE(6,6)=HKANE(5,5)
382 IF(DIAG_Action
.NE
.0.AND
.STR_Action
.NE
.0) THEN
384 HKANE(1,2)=-SQRT(2.E0
/3.E0
)*PD6(CHI
)*SRZ
385 HKANE(1,3)=-1.E0
/SQRT(3.E0
)*PD5(CHI
)*SDIF
387 HKANE(1,5)=1.E0
/SQRT(3.E0
)*PD6(CHI
)*SRZ
388 HKANE(1,6)=SQRT(2./3.)*PD5(CHI
)*SDIF
391 HKANE(2,4)=HKANE(1,3)
392 HKANE(2,5)=SQRT(2.E0
)/3.E0
*(POTLS(CHI
)+(PD3(CHI
)*SZZ
+PD4(CHI
)*SSUM
))
393 HKANE(2,6)=-PD6(CHI
)*SRZ
395 HKANE(3,4)=-HKANE(1,2)
396 HKANE(3,5)=HKANE(2,6)
397 HKANE(3,6)=-HKANE(2,5)
399 HKANE(4,5)=-HKANE(1,6)
400 HKANE(4,6)=HKANE(1,5)
408 HKANE(J
,I
)=HKANE(I
,J
)
412 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
413 !! Analytic solutions for Rho = 0.
414 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
416 ! ZETA = ZMIN+ZINC*IZ ! XZ normalized to ZC
418 ! W(1)=(HKANE(2,2)+HKANE(5,5))+
419 ! & SQRT( (HKANE(2,2)-HKANE(5,5))**2+4.*HKANE(3,6)**2 )
420 ! W(2)=(HKANE(2,2)+HKANE(5,5))-
421 ! & SQRT( (HKANE(2,2)-HKANE(5,5))**2+4.*HKANE(3,6)**2 )
422 ! write(24,'(4(f18.8,1x))')ZETA,HKANE(1,1),W(1)/2.,W(2)/2.
424 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
427 CALL DSYEVX('V','A','U',DIMM
,HKANE
,DIMM
,0.,0.,2,2, &
428 2*SLAMCH('S'),NUM
,W
,AW
,DIMM
,WORK
,10*DIMM
,IWORK
,IFAIL
,INFO
)
431 write(6,*)"Not Succesful Exit. Stopping. INFO=",INFO
432 write(6,'(A,10(I2,1X))')"IFAIL=",IFAIL(1:DIMM
)
433 write(6,'(2(A,F6.3,1X))')"RHO=",RC
*RHO
,"ZETA=",ZETA
*ZC
437 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
438 !! Ordering Eigenvalues according to the Bloch func. caracter
439 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
444 ! Calculo de la componentes dependientes del spin
446 CARAC(J
)=AW(J
,I
)*AW(J
,I
)
448 ! Suma de componentes independientemente del spin (hh_up + hh_dw, lh_up + lh_dw)
449 CARAC(1)=CARAC(1)+CARAC(4)
451 CARAC(2)=CARAC(2)+CARAC(3)
453 CARAC(5)=CARAC(5)+CARAC(6)
456 ! Peso de las componentes de las que se extraeran los autovalores.
458 IF (CARAC(1).GE
.CARAC_MAX
) THEN ! HH
461 IF (CARAC(2).GE
.CARAC_MAX
) THEN ! LH
464 IF (CARAC(5).GE
.CARAC_MAX
) THEN ! SO
470 ELSE ! Only the diagonal elements were calculated
475 ROOT(2)=HKANE(6,6) !Redundant
480 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
482 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
484 ENERGY(1) = POTE(CHI
)-PZO
+(PC1(CHI
)*SZZ
+PC2(CHI
)*SSUM
)
493 ! ESODW(IR,IZ,IGEO) = CHI ! To save the Structure-profile
495 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
496 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
497 !!!!! Calculation of the Elastic Energy. Since EEL contains no information
498 !!!!! we will use this array to pack the Elastic Energy.
500 !!!!! U=1/2*XLAMB*Tr(e)**2+XMU*(err**2+e00**2+ezz**2+erz**2)
502 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
503 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
506 ENERGY(8) = C11
*(SRR
**2 + S00
**2)+C33
*SZZ
**2+ &
507 2.E0
*(XLAMB
*(SRR
*S00
)+C13
*(SRR
+S00
)*SZZ
+ &
510 ENERGY(8) = ENERGY(8)/2.E0
514 END SUBROUTINE POT_CALC_CYL_WZ
516 END SUBROUTINE POTENTIAL_WZ
518 SUBROUTINE POTENTIAL_ZB(EEL
,EHHUP
,EHHDW
,ELHUP
,ELHDW
,&
519 ESOUP
,ESODW
,ELAST
,EXX
,EYY
,&
525 Use Auxiliar_Procedures
, ONLY
: AISO
529 !!!!! 'dummy' and local variables !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
531 REAL,DIMENSION(:,:,:),OPTIONAL
:: EXX
,EYY
,EZZ
,EXY
,EXZ
,EYZ
533 REAL,DIMENSION(:,:,:) :: EEL
,EHHUP
,EHHDW
,ELHUP
,ELHDW
,&
536 REAL ZM
,THETA
,CTHETA
,STHETA
, &
539 INTEGER I_X
,I_Y
,I_Z
,I_N1
,I_N2
,I_N3
,CHI
541 REAL, DIMENSION(3) :: R_SL
,X_VEC
,XI_VEC
543 REAL :: POTWE
,POTWHH
,POTWLH
,POTWSO
,&
544 VBIEL
,VBIHH
,VBILH
,VBISO
546 REAL,DIMENSION(0:1) :: POTE
, POTHH
, POTLH
, POTSO
, &
547 DVD
,DSD
,DVU
,DVSU
,D2VU
,D2VSU
,DSO
,ZBC1
549 REAL, DIMENSION(1:8) :: ENERGY
551 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
553 CALL ENER_CONSTANTS_ZB( )
556 ! WRITE(16,'(A,I3,A,I3)')"I_Z ",I_Z," of ",ZDIM
557 Z
=Z_Min
+REAL(I_Z
-1)*Z_Inc
559 Y
=Y_Min
+REAL(I_Y
-1)*Y_Inc
561 X
=X_Min
+REAL(I_X
-1)*X_Inc
565 N3
: DO I_N3
=NMin_Z
,NMax_Z
566 N2
: DO I_N2
=NMin_Y
,NMax_Y
567 N1
: DO I_N1
=NMin_X
,NMax_X
569 R_SL
=REAL(I_N1
)*A1_S
+REAL(I_N2
)*A2_S
+REAL(I_N3
)*A3_S
573 RHO
=SQRT(XI_VEC(1)**2+XI_VEC(2)**2)/RC
574 IF(XI_VEC(1).EQ
.0.E0
.AND
.XI_VEC(2).EQ
.0.E0
) THEN
575 CTHETA
=1.E0
/SQRT(2.E0
); STHETA
=1.E0
/SQRT(2.E0
) ! It is not the Mathematical limit
577 THETA
=ATAN(XI_VEC(2)/XI_VEC(1))
578 CTHETA
=Cos(THETA
); STHETA
=Sin(THETA
)
583 CALL SHAPERTOZ(MIN(RHO
*RC
,Rqd_Base
),ZMAUX
)
589 IF (abs(zeta
) .EQ
. 0.E0
.OR
. ZETA
.EQ
. ZM
) THEN
594 IF (RHO
.LE
.RD
.AND
.ZETA
.GE
.-D
.AND
.ZETA
.LE
.ZM
) THEN
596 IF(I_N1
.NE
.0.OR
.I_N2
.NE
.0.OR
.I_N3
.NE
.0) THEN
597 WRITE(16,*)I_N1
,I_N2
,I_N3
598 WRITE(16,*)X_VEC(3),ZETA
*ZC
,ZM
*ZC
603 CALL POT_CALC_CAR_ZB(CHI
,ENERGY
)
605 CALL POT_CALC_CYL_ZB(CHI
,ENERGY
)
612 EEL(I_X
,I_Y
,I_Z
) = ENERGY(1)
613 EHHUP(I_X
,I_Y
,I_Z
) = ENERGY(2)
614 ELHUP(I_X
,I_Y
,I_Z
) = ENERGY(3)
615 ELHDW(I_X
,I_Y
,I_Z
) = ENERGY(4)
616 EHHDW(I_X
,I_Y
,I_Z
) = ENERGY(5)
617 ESOUP(I_X
,I_Y
,I_Z
) = ENERGY(6)
618 ESODW(I_X
,I_Y
,I_Z
) = ENERGY(7)
619 ELAST(I_X
,I_Y
,I_Z
) = ENERGY(8)
621 ! WRITE(26,'(10(E15.8,1X))')Z,ENERGY(1:8)
633 SUBROUTINE ENER_CONSTANTS_ZB( )
636 ! Definition of parameters for Barrier and Well
638 ! If we set both terms equal to zero the spin-interaction in the
639 ! deformation potentials is removed. The values of AVB,BB,DB are
640 ! taken from C. Pryor, PRB, 57, 7190 (1998)
642 ! DSO(0) = VBH - VBSO ; DSO(1) = VWH - VWSO
643 DSO(0) = 0.0; DSO(1) = 0.0
645 ZBC1(0) = -9.3 ; ZBC1(1) = ACW
647 DVD(0) = 0.7E0
- 2./9. * DSO(0)
648 DVD(1) = AVW
- 2./9. * DSO(1)
649 DSD(0) = 0.7E0
+ 4./9. * DSO(0)
650 DSD(1) = AVW
+ 4./9. * DSO(1)
651 DVU(0) = -3./2. * (-2.0) + 1./3. * DSO(0)
652 DVU(1) = -3./2. * BW
+ 1./3. * DSO(1)
653 DVSU(0) = -3./2. * (-2.0) - 1./6. * DSO(0)
654 DVSU(1) = -3./2. * BW
- 1./6. * DSO(1)
655 D2VU(0) = -SQRT(3.)/2. * (-5.4) + 1./3. * DSO(0)
656 D2VU(1) = -SQRT(3.)/2. * DW
+ 1./3. * DSO(1)
657 D2VSU(0) = -SQRT(3.)/2. * (-5.4) - 1./6. * DSO(0)
658 D2VSU(1) = -SQRT(3.)/2. * DW
- 1./6. * DSO(1)
660 !!! In the calculation the deformation potentials are equal across the structure
661 DVD(0)=DVD(1); DSD(0)=DSD(1); DVU(0)=DVU(1)
662 DVSU(0)=DVSU(1); D2VU(0)=D2VU(1); D2VSU(0)=D2VSU(1)
664 DSO(0) = VBH
- VBSO
; DSO(1) = VWH
- VWSO
670 IF(STR_Action
.EQ
.0) THEN
671 VBIEL
= ACW
*(BISUM
+BIZZ
)
672 VBIHH
= AVW
*(BISUM
+BIZZ
)-(-3.E0
*BW
/2.E0
)/3.E0
*(BISUM
-2.E0
*BIZZ
)
673 VBILH
= AVW
*(BISUM
+BIZZ
)+(-3.E0
*BW
/2.E0
)/3.E0
*(BISUM
-2.E0
*BIZZ
)
674 VBISO
= AVW
*(BISUM
+BIZZ
)
676 ! Potential edges including strain effect
683 POTE(0) = VBE
; POTE(1) = POTWE
684 POTHH(0) = VBH
; POTHH(1) = POTWHH
685 POTLH(0) = VBH
; POTLH(1) = POTWLH
686 POTSO(0) = VBSO
; POTSO(1) = POTWSO
690 END SUBROUTINE ENER_CONSTANTS_ZB
692 SUBROUTINE POT_CALC_CAR_ZB(CHI
,ENERGY
)
695 REAL, DIMENSION(:) :: ENERGY
696 INTEGER, PARAMETER :: DIMM
=6
697 COMPLEX, DIMENSION(1:DIMM
,1:DIMM
) :: HKANE
698 REAL :: SXX
,SYY
,SZZ
,SXY
,SXZ
,SYZ
,SHID
,SDIF
,STIL
700 !! DIAGONALIZATION VARIABLES
702 COMPLEX, DIMENSION(1:(2*DIMM
-1)) :: WORK
703 REAL, DIMENSION(1:(3*DIMM
-2)) :: RWORK
704 REAL W(1:DIMM
), ROOT(DIMM
), CARAC(DIMM
)
708 IF(STR_Action
.EQ
.0) THEN
709 SXX
=0.E0
; SYY
=0.E0
; SZZ
=0.E0
710 SXY
=0.E0
; SXZ
=0.E0
; SYZ
=0.E0
720 STIL
=SXX
+SYY
-2.E0
*SZZ
723 HKANE(1,1)=POTHH(CHI
)+DVD(CHI
)*SHID
&
725 HKANE(2,2)=POTLH(CHI
)+DVD(CHI
)*SHID
&
727 HKANE(3,3)=HKANE(2,2)
728 HKANE(4,4)=HKANE(1,1)
729 HKANE(5,5)=POTSO(CHI
)+DSD(CHI
)*SHID
731 HKANE(6,6)=HKANE(5,5)
733 IF(DIAG_Action
.NE
.0.AND
.STR_Action
.NE
.0) THEN
735 HKANE(1,2)=2./SQRT(3.)*D2VU(CHI
)*CMPLX(SXZ
,-SYZ
)
736 HKANE(1,3)=1./SQRT(3.)*CMPLX(DVU(CHI
)*SDIF
,-2.E0
*D2VU(CHI
)*SXY
)
738 HKANE(1,5)=-SQRT(2./3.)*D2VSU(CHI
)*CMPLX(SXZ
,-SYZ
)
739 HKANE(1,6)=-SQRT(2./3.)*CMPLX(DVU(CHI
)*SDIF
,-2.E0
*D2VSU(CHI
)*SXY
)
742 HKANE(2,4)=HKANE(1,3)
743 HKANE(2,5)=-SQRT(2.)/3.*DVSU(CHI
)*STIL
744 HKANE(2,6)=SQRT(2.)*D2VSU(CHI
)*CMPLX(SXZ
,-SYZ
)
746 HKANE(3,4)=-HKANE(1,2)
747 HKANE(3,5)=SQRT(2.)*D2VSU(CHI
)*CMPLX(SXZ
,SYZ
)
748 HKANE(3,6)=-HKANE(2,5)
750 HKANE(4,5)=SQRT(2./3.)*CMPLX(DVU(CHI
)*SDIF
,2.E0
*D2VSU(CHI
)*SXY
)
751 HKANE(4,6)=-HKANE(3,5)/SQRT(3.E0
)
757 HKANE(J
,I
)=CONJG(HKANE(I
,J
))
761 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
762 !! Analytic solutions for Rho = 0.
763 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
765 ! ZETA = ZMIN+ZINC*IZ ! XZ normalized to ZC
767 ! W(1)=(HKANE(2,2)+HKANE(5,5))+
768 ! & SQRT( (HKANE(2,2)-HKANE(5,5))**2+4.*HKANE(3,6)**2 )
769 ! W(2)=(HKANE(2,2)+HKANE(5,5))-
770 ! & SQRT( (HKANE(2,2)-HKANE(5,5))**2+4.*HKANE(3,6)**2 )
771 ! write(24,'(4(f18.8,1x))')ZETA,HKANE(1,1),W(1)/2.,W(2)/2.
773 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
775 CALL CHEEV('V','U',DIMM
,HKANE
,DIMM
,W
,WORK
,LWORK
,RWORK
,INFO
)
778 write(6,*)"Not Succesful Exit. Stopping. INFO=",INFO
779 write(6,'(2(A,F6.3,1X))')"RHO=",RC
*RHO
,"ZETA=",ZETA
*ZC
783 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
784 !! Ordering Eigenvalues according to the Bloch func. caracter
785 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
790 ! Calculo de la componentes dependientes del spin
792 CARAC(J
)=HKANE(J
,I
)*HKANE(J
,I
)
794 ! Suma de componentes independientemente del spin (hh_up + hh_dw, lh_up + lh_dw)
795 CARAC(1)=CARAC(1)+CARAC(4)
797 CARAC(2)=CARAC(2)+CARAC(3)
799 CARAC(5)=CARAC(5)+CARAC(6)
802 ! Peso de las componentes de las que se extraeran los autovalores.
804 IF (CARAC(1).GE
.CARAC_MAX
) THEN ! HH
807 IF (CARAC(2).GE
.CARAC_MAX
) THEN ! LH
810 IF (CARAC(5).GE
.CARAC_MAX
) THEN ! SO
816 ELSE ! Only the diagonal elements were calculated
821 ROOT(2)=HKANE(6,6) !Redundant
826 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
828 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
830 ENERGY(1) = POTE(CHI
)+ZBC1(CHI
)*SHID
839 ! ENERGY(7) = CHI ! To save the Structure-profile
841 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
842 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
843 !!!!! Calculation of the Elastic Energy. Since EEL contains no information
844 !!!!! we will use this array to pack the Elastic Energy.
846 !!!!! U=1/2*(XLAMB*Tr(e)**2+XMU/2*(err**2+e00**2+ezz**2+erz**2)
848 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
849 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
851 ENERGY(8) = XMU
*(SXX
**2 + SYY
**2 + SZZ
**2 + &
852 2.E0
*(SXY
**2+SXZ
**2+SYZ
**2) ) + &
853 XLAMB
/2.E0
*(SXX
+ SYY
+ SZZ
)**2
856 END SUBROUTINE POT_CALC_CAR_ZB
858 SUBROUTINE POT_CALC_CYL_ZB(CHI
,ENERGY
)
861 REAL, DIMENSION(:) :: ENERGY
862 INTEGER, PARAMETER :: DIMM
=6
863 REAL, DIMENSION(1:DIMM
,1:DIMM
) :: HKANE
864 REAL :: SSUM
,SDIF
,SZZ
,SRZ
,SRR
,S00
,SHID
,STIL
866 !! DIAGONALIZATION VARIABLES
868 REAL :: W(1:DIMM
), WORK(1:10*DIMM
), AW(1:DIMM
,1:DIMM
), &
869 ROOT(DIMM
), CARAC(DIMM
), SLAMCH
870 INTEGER :: IWORK(DIMM
*5), IFAIL(DIMM
), INFO
, NUM
873 IF(STR_Action
.EQ
.0) THEN
874 SSUM
=0.E0
; SDIF
=0.E0
; SZZ
=0.E0
;
875 SRZ
=0.E0
; SRR
=0.E0
; S00
=0.E0
879 SSUM
=EXX(I_X
,I_Y
,I_Z
)+EYY(I_X
,I_Y
,I_Z
)
880 SDIF
=EXX(I_X
,I_Y
,I_Z
)-EYY(I_X
,I_Y
,I_Z
)
887 HKANE(1,1)=POTHH(CHI
)+DVD(CHI
)*SHID
&
889 HKANE(2,2)=POTLH(CHI
)+DVD(CHI
)*SHID
&
892 HKANE(3,3)=HKANE(2,2)
893 HKANE(4,4)=HKANE(1,1)
894 HKANE(5,5)=POTSO(CHI
)+DSD(CHI
)*SHID
895 HKANE(6,6)=HKANE(5,5)
897 IF(DIAG_Action
.NE
.0.AND
.STR_Action
.NE
.0) THEN
898 HKANE(1,2)=2./SQRT(3.)*D2VU(CHI
)*SRZ
899 HKANE(1,3)=1./SQRT(3.)*(DVU(CHI
)+D2VU(CHI
))/2.*SDIF
901 HKANE(1,5)=-SQRT(2./3.)*D2VSU(CHI
)*SRZ
902 HKANE(1,6)=-SQRT(2./3.)*(DVU(CHI
)+D2VSU(CHI
))/2.*SDIF
905 HKANE(2,4)=HKANE(1,3)
906 HKANE(2,5)=-SQRT(2.)/3.*DVSU(CHI
)*STIL
907 HKANE(2,6)=SQRT(2.)*D2VSU(CHI
)*SRZ
909 HKANE(3,4)=-HKANE(1,2)
910 HKANE(3,5)=HKANE(2,6)
911 HKANE(3,6)=-HKANE(2,5)
913 HKANE(4,5)=-HKANE(1,6)
914 HKANE(4,6)=HKANE(1,5)
920 HKANE(J
,I
)=HKANE(I
,J
)
924 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
925 !! Analytic solutions for Rho = 0.
926 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
928 ! ZETA = ZMIN+ZINC*IZ ! XZ normalized to ZC
930 ! W(1)=(HKANE(2,2)+HKANE(5,5))+
931 ! & SQRT( (HKANE(2,2)-HKANE(5,5))**2+4.*HKANE(3,6)**2 )
932 ! W(2)=(HKANE(2,2)+HKANE(5,5))-
933 ! & SQRT( (HKANE(2,2)-HKANE(5,5))**2+4.*HKANE(3,6)**2 )
934 ! write(24,'(4(f18.8,1x))')ZETA,HKANE(1,1),W(1)/2.,W(2)/2.
936 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
939 CALL DSYEVX('V','A','U',DIMM
,HKANE
,DIMM
,0.,0.,2,2, &
940 2*SLAMCH('S'),NUM
,W
,AW
,DIMM
,WORK
,10*DIMM
,IWORK
,IFAIL
,INFO
)
943 write(6,*)"Not Succesful Exit. Stopping. INFO=",INFO
944 write(6,'(A,10(I2,1X))')"IFAIL=",IFAIL(1:DIMM
)
945 write(6,'(2(A,F6.3,1X))')"RHO=",RC
*RHO
,"ZETA=",ZETA
*ZC
949 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
950 !! Ordering Eigenvalues according to the Bloch func. caracter
951 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
956 ! Calculo de la componentes dependientes del spin
958 CARAC(J
)=AW(J
,I
)*AW(J
,I
)
960 ! Suma de componentes independientemente del spin (hh_up + hh_dw, lh_up + lh_dw)
961 CARAC(1)=CARAC(1)+CARAC(4)
963 CARAC(2)=CARAC(2)+CARAC(3)
965 CARAC(5)=CARAC(5)+CARAC(6)
968 ! Peso de las componentes de las que se extraeran los autovalores.
970 IF (CARAC(1).GE
.CARAC_MAX
) THEN ! HH
973 IF (CARAC(2).GE
.CARAC_MAX
) THEN ! LH
976 IF (CARAC(5).GE
.CARAC_MAX
) THEN ! SO
982 ELSE ! Only the diagonal elements were calculated
987 ROOT(2)=HKANE(6,6) !Redundant
992 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
994 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
996 ENERGY(1) = POTE(CHI
)+ZBC1(CHI
)*SHID
1005 ! ESODW(IR,IZ,IGEO) = CHI ! To save the Structure-profile
1007 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1008 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1009 !!!!! Calculation of the Elastic Energy. Since EEL contains no information
1010 !!!!! we will use this array to pack the Elastic Energy.
1012 !!!!! U=1/2*XLAMB*Tr(e)**2+XMU*(err**2+e00**2+ezz**2+erz**2)
1014 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1015 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1017 ENERGY(8) = XMU
*(SRR
**2 + S00
**2 + SZZ
**2 + SRZ
**2) + &
1018 XLAMB
/2.E0
*(SSUM
+ SZZ
)**2
1022 END SUBROUTINE POT_CALC_CYL_ZB
1024 END SUBROUTINE POTENTIAL_ZB