1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2 ! This subroutine calculates the strain distribution !
3 ! inside and around the quantum dot !
5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
7 SUBROUTINE STRAIN0(EXX
,EYY
,EZZ
,EXY
,EXZ
,EYZ
)
11 Use Auxiliar_Procedures
, ONLY
: AISO
16 !!!!! 'dummy' and local variables !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
18 REAL ZM
,THETA
,CTHETA
,STHETA
,CHI
, &
19 EESUM
,EEDIF
,EERR
,EE00
,EEZZ
,E2ZZ
,EERZ
,&
20 EEXX
,EEYY
,EEXY
,EEXZ
,EEYZ
,X
,Y
,Z
,ZMAUX
21 REAL,DIMENSION(:,:,:) :: EXX
,EYY
,EZZ
,EXY
,EXZ
,EYZ
22 INTEGER I_X
,I_Y
,I_Z
,I_N1
,I_N2
,I_N3
24 REAL, DIMENSION(3) :: R_SL
,X_VEC
,XI_VEC
28 COMMON /QAGON
/RHO
,ZETA
,ETA
30 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
32 EXX
=0.E0
;EYY
=0.E0
;EZZ
=0.E0
;EXY
=0.E0
;EXZ
=0.E0
;EYZ
=0.E0
35 WRITE(16,'(A,I3,A,I3)')"I_Z ",I_Z
," of ",ZDIM
36 Z
=Z_Min
+REAL(I_Z
-1)*Z_Inc
38 Y
=Y_Min
+REAL(I_Y
-1)*Y_Inc
40 X
=X_Min
+REAL(I_X
-1)*X_Inc
44 EEXX
=0.E0
;EEYY
=0.E0
;EEXY
=0.E0
;EEXZ
=0.E0
;EEYZ
=0.E0
;EEZZ
=0.E0
46 N3
: DO I_N3
=NMin_Z
,NMax_Z
47 N2
: DO I_N2
=NMin_Y
,NMax_Y
48 N1
: DO I_N1
=NMin_X
,NMax_X
50 R_SL
=REAL(I_N1
)*A1_S
+REAL(I_N2
)*A2_S
+REAL(I_N3
)*A3_S
54 RHO
=SQRT(XI_VEC(1)**2+XI_VEC(2)**2)/RC
55 IF(XI_VEC(1).EQ
.0.E0
.AND
.XI_VEC(2).EQ
.0.E0
) THEN
56 CTHETA
=1.E0
/SQRT(2.E0
); STHETA
=1.E0
/SQRT(2.E0
) ! It is not the Mathematical limit
58 THETA
=ATAN(XI_VEC(2)/XI_VEC(1))
59 CTHETA
=Cos(THETA
); STHETA
=Sin(THETA
)
64 CALL SHAPERTOZ(MIN(RHO
*RC
,Rqd_Base
),ZMAUX
)
71 IF (abs(zeta
) .EQ
. 0.E0
.OR
. ZETA
.EQ
. ZM
) THEN
76 IF (RHO
.LE
.RD
.AND
.ZETA
.GE
.0.E0
.AND
.ZETA
.LE
.ZM
) THEN
78 if(I_N1
.NE
.0.OR
.I_N2
.NE
.0.OR
.I_N3
.NE
.0) THEN
79 WRITE(16,*)I_N1
,I_N2
,I_N3
80 WRITE(16,*)X_VEC(3),ZETA
*ZC
,ZM
*ZC
85 CALL STRISO(EESUM
,EEDIF
,E2ZZ
,EERZ
,CHI
)
87 CALL STRANISO(EESUM
,EEDIF
,E2ZZ
,EERZ
,CHI
)
90 IF (RHO
.EQ
. 0.E0
) EEDIF
= 0.E0
92 EERR
= (EESUM
+EEDIF
)/2.
93 EE00
= (EESUM
-EEDIF
)/2.
96 !!!!!!!!!!!!!!!!!! Wetting Layer !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
98 IF(I_N1
.EQ
.0.AND
.I_N2
.EQ
.0.AND
.I_N3
.EQ
.0) THEN
99 IF (ZETA
.LT
.0.E0
.AND
. ZETA
.GE
.-D
) THEN
101 EESUM
= EESUM
+ BISUM
102 EERR
= EERR
+ BISUM
/2.E0
103 EE00
= EE00
+ BISUM
/2.E0
107 E2ZZ
= E2ZZ
+ (-2.E0
*C13
/C33
*EPSA
) !BIZZ
113 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
115 EEXX
= EEXX
+ (CTHETA
**2*EERR
+ STHETA
**2*EE00
)
116 EEYY
= EEYY
+ (STHETA
**2*EERR
+ CTHETA
**2*EE00
)
118 EEXY
= EEXY
+ (CTHETA
*STHETA
*(EERR
-EE00
))
119 EEXZ
= EEXZ
+ (CTHETA
*EERZ
)
120 EEYZ
= EEYZ
+ (STHETA
*EERZ
)
126 EXX(I_X
,I_Y
,I_Z
)= EEXX
127 EYY(I_X
,I_Y
,I_Z
)= EEYY
128 EZZ(I_X
,I_Y
,I_Z
)= EEZZ
129 EXY(I_X
,I_Y
,I_Z
)= EEXY
130 EXZ(I_X
,I_Y
,I_Z
)= EEXZ
131 EYZ(I_X
,I_Y
,I_Z
)= EEYZ
133 ! WRITE(26,'(10(E15.8,1X))')Z,EEXX,EEYY,EEZZ,EEXY,EEXZ,EEYZ
142 END SUBROUTINE STRAIN0
144 DOUBLE PRECISION FUNCTION I_FA00(X
)
147 Use Input_Data
, ONLY
: RC
,ZC
150 DOUBLE PRECISION :: X
152 REAL :: RHO
,ZETA
,ETA
,ZM
153 COMMON /QAGON
/RHO
,ZETA
,ETA
155 CALL SHAPERTOZ(MIN(SNGL(X
)*RC
,Rqd_Base
),ZM
)
156 I_FA00
=X
*FA00(DBLE(RHO
),DBLE(ZETA
),X
,DBLE(ZM
/ZC
),DBLE(ETA
))
162 DOUBLE PRECISION FUNCTION I_FA10(X
)
165 Use Input_Data
, ONLY
: RC
,ZC
168 DOUBLE PRECISION :: X
170 REAL :: RHO
,ZETA
,ETA
,ZM
171 COMMON /QAGON
/RHO
,ZETA
,ETA
173 CALL SHAPERTOZ(MIN(SNGL(X
)*RC
,Rqd_Base
),ZM
)
174 I_FA10
=X
*FA10(DBLE(RHO
),DBLE(ZETA
),X
,DBLE(ZM
/ZC
),DBLE(ETA
))
180 DOUBLE PRECISION FUNCTION I_FA20(X
)
183 Use Input_Data
, ONLY
: RC
,ZC
186 DOUBLE PRECISION :: X
188 REAL :: RHO
,ZETA
,ETA
,ZM
189 COMMON /QAGON
/RHO
,ZETA
,ETA
191 CALL SHAPERTOZ(MIN(SNGL(X
)*RC
,Rqd_Base
),ZM
)
192 I_FA20
=X
*FA20(DBLE(RHO
),DBLE(ZETA
),X
,DBLE(ZM
/ZC
),DBLE(ETA
))