1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2 ! This subroutine calculates the strain distribution !
3 ! inside and around the quantum dot !
5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
7 SUBROUTINE PIEZO(P_SPONT
,P_PIEZO
)
11 Use Auxiliar_Procedures
, ONLY
: AISO
16 !!!!! 'dummy' and local variables !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
18 REAL ZM
,THETA
,CTHETA
,STHETA
,CHI
, &
19 PZ_1
,PZ_ETA1
,PZ_ETA2
,&
20 P_SP
, P_PZ
, X
,Y
,Z
,ZMAUX
,&
21 WL_AUX
,BR_AUX
,POTSP
,POTPZ
23 REAL,DIMENSION(:,:,:) :: P_SPONT
,P_PIEZO
24 INTEGER I_X
,I_Y
,I_Z
,I_N1
,I_N2
,I_N3
26 REAL, DIMENSION(3) :: R_SL
,X_VEC
,XI_VEC
30 COMMON /QAGON
/RHO
,ZETA
,ETA
32 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
34 P_SPONT
=0.E0
;P_PIEZO
=0.E0
37 ! WRITE(16,'(A,I3,A,I3)')"I_Z ",I_Z," of ",ZDIM
38 Z
=Z_Min
+REAL(I_Z
-1)*Z_Inc
40 Y
=Y_Min
+REAL(I_Y
-1)*Y_Inc
42 X
=X_Min
+REAL(I_X
-1)*X_Inc
48 N3
: DO I_N3
=NMin_Z
,NMax_Z
49 N2
: DO I_N2
=NMin_Y
,NMax_Y
50 N1
: DO I_N1
=NMin_X
,NMax_X
52 R_SL
=REAL(I_N1
)*A1_S
+REAL(I_N2
)*A2_S
+REAL(I_N3
)*A3_S
56 RHO
=SQRT(XI_VEC(1)**2+XI_VEC(2)**2)/RC
57 IF(XI_VEC(1).EQ
.0.E0
.AND
.XI_VEC(2).EQ
.0.E0
) THEN
58 CTHETA
=1.E0
/SQRT(2.E0
); STHETA
=1.E0
/SQRT(2.E0
) ! It is not the Mathematical limit
60 THETA
=ATAN(XI_VEC(2)/XI_VEC(1))
61 CTHETA
=Cos(THETA
); STHETA
=Sin(THETA
)
66 CALL SHAPERTOZ(MIN(RHO
*RC
,Rqd_Base
),ZMAUX
)
73 IF (abs(zeta
) .EQ
. 0.E0
.OR
. ZETA
.EQ
. ZM
) THEN
78 IF (RHO
.LE
.RD
.AND
.ZETA
.GE
.0.E0
.AND
.ZETA
.LE
.ZM
) THEN
80 IF(I_N1
.NE
.0.OR
.I_N2
.NE
.0.OR
.I_N3
.NE
.0) THEN
81 WRITE(16,*)I_N1
,I_N2
,I_N3
82 WRITE(16,*)X_VEC(3),ZETA
*ZC
,ZM
*ZC
88 CALL PZOISO(POTSP
,POTPZ
)
90 CALL PZOANISO(POTSP
,POTPZ
)
93 POTSP
=0.E0
; POTPZ
=0.E0
99 !!!!!!!!!!!!!!!!!! Wetting Layer !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
101 IF(I_N1
.EQ
.0.AND
.I_N2
.EQ
.0.AND
.I_N3
.EQ
.0) THEN
103 WL_aux
= ( abs(ZETA
-(-D
)) - abs(ZETA
) )*ZC
/RC
104 BR_aux
= ( abs(ZETA
-(-C_S
/ZC
)) - abs(ZETA
-(-D
)) )*ZC
/RC
+&
105 ( abs(ZETA
) - abs(ZETA
-(C_S
/ZC
-D
)) )*ZC
/RC
107 P_SP
=P_SP
+CPZ
/2.E0
*RC
*(CSPWL
*WL_aux
+CSPBR
*BR_Aux
)
108 P_PZ
=P_PZ
+CPZ
/2.E0
*RC
*CPZWL
*WL_AUX
112 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
119 P_SPONT(I_X
,I_Y
,I_Z
)= P_SP
120 P_PIEZO(I_X
,I_Y
,I_Z
)= P_PZ
122 ! WRITE(26,'(10(E15.8,1X))')Z,P_SP,P_PZ,P_SP+P_PZ
133 DOUBLE PRECISION FUNCTION I_FI00(X
)
136 Use Input_Data
, ONLY
: RC
,ZC
139 DOUBLE PRECISION :: X
141 REAL :: RHO
,ZETA
,ETA
,ZM
142 COMMON /QAGON
/RHO
,ZETA
,ETA
144 CALL SHAPERTOZ(MIN(SNGL(X
)*RC
,Rqd_Base
),ZM
)
145 I_FI00
=X
*FI00(DBLE(RHO
),DBLE(ZETA
),X
,DBLE(ZM
/ZC
),DBLE(ETA
))
151 DOUBLE PRECISION FUNCTION I_FDA00(X
)
154 Use Input_Data
, ONLY
: RC
,ZC
157 DOUBLE PRECISION :: X
159 REAL :: RHO
,ZETA
,ETA
,ZM
160 COMMON /QAGON
/RHO
,ZETA
,ETA
162 CALL SHAPERTOZ(MIN(SNGL(X
)*RC
,Rqd_Base
),ZM
)
163 I_FDA00
=X
*FDA00(DBLE(RHO
),DBLE(ZETA
),X
,DBLE(ZM
/ZC
),DBLE(ETA
))