4 REAL, SAVE :: A_S
,B_S
,C_S
! -> Superlattice constants
5 REAL, DIMENSION(3), SAVE :: A1_S
,A2_S
,A3_S
! -> Superlattice vectors
6 INTEGER, SAVE :: NMin_X
,NMax_X
,NMin_Y
,NMax_Y
,NMin_Z
,NMax_Z
7 REAL, SAVE :: X_Min
,X_Max
,Y_Min
,Y_Max
,Z_Min
,Z_Max
8 REAL, SAVE :: X_Inc
,Y_Inc
,Z_Inc
9 INTEGER, SAVE :: XDim
,YDim
,ZDim
10 INTEGER, SAVE :: KCOOR
, KPBASIS
11 INTEGER,PRIVATE
:: NDots_X
,NDots_Y
,NDots_Z
13 !!! Material Parameters
14 REAL, SAVE :: XLAMB
,XMU
,C13
,C33
,C11
,EPSC
,EPSA
15 REAL, PRIVATE
:: PZE15
,PZE31
,PZE33
,PSPB
,PSPW
,DIELEC
16 REAL, SAVE :: ACW
,AVW
,BW
,DW
17 REAL, SAVE :: EGW
,VWE
,VWH
,VWSO
,DW1
,DW2
,DW3
18 REAL, SAVE :: EGB
,VBE
,VBH
,VBSO
,DB1
,DB2
,DB3
20 REAL, SAVE :: C1
,C2
,D1
,D2
21 REAL, SAVE :: D3
,D4
,D5
,D6
23 !!! Calculation Constants
24 REAL, SAVE :: ETA1
,ETA2
,ETA_DIF
,CN02_1
,CN02_2
,CN42_1
, &
25 CN42_2
,CN31_1
,CN31_2
,CNP31_1
,CNP31_2
, &
26 CN1_2G
,BISUM
,BIZZ
,BIAUX
,CARAC_MAX
,&
28 REAL, SAVE :: CI1
,CI2
,CI3
29 REAL, SAVE :: CNE2_1
,CNE2_2
,CNE_1
,CNE_2
,CSP
,CPZ
30 REAL, SAVE :: CSPWL
,CSPBR
,CPZWL
,CPZ_Q1
,CPZ_Q2
32 !!! Normalized Dot Parameters
33 REAL, SAVE :: RC
,ZC
,D
,RD
,HD
35 INTEGER,SAVE :: STR_Action
,PZO_Action
,POT_Action
, &
36 DIAG_Action
,DPL_Action
37 CHARACTER (LEN
=120), SAVE :: STR_Filename
,PZO_Filename
,POT_Filename
,&
42 SUBROUTINE READ_INPUT()
45 Use Auxiliar_Procedures
, ONLY
: AISO
, MTYPE
51 REAL,DIMENSION(3) :: V_AUX
55 !!!!! read data from data file !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
61 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
63 READ (*,*) DWL
! Wetting layer thickness (A)
64 READ (*,*) ISHAPE
! Shape of the dot
65 READ (*,*) HQD
! Height of the quantum dot (A)
66 READ (*,*) Rqd_Base
! Base Radius (A)
67 READ (*,*) Rqd_Top
! Top Radius (A)
68 !!! Superlattice Begins !!!!
70 READ (*,*) A_S
,B_S
,C_S
71 READ (*,*) A1_S(1),A1_S(2),A1_S(3)
72 READ (*,*) A2_S(1),A2_S(2),A2_S(3)
73 READ (*,*) A3_S(1),A3_S(2),A3_S(3)
74 READ (*,*) NDots_X
,NDots_Y
,NDots_Z
79 IF(MOD(NDots_X
,2).EQ
.0) THEN
81 WRITE(6,'(A,1X,I3)')"Warning: NDots_X Even -> NDots_X=",NDots_X
83 IF(MOD(NDots_Y
,2).EQ
.0) THEN
85 WRITE(6,'(A,1X,I3)')"Warning: NDots_Y Even -> NDots_Y=",NDots_Y
87 IF(MOD(NDots_Z
,2).EQ
.0) THEN
89 WRITE(6,'(A,1X,I3)')"Warning: NDots_Z Even -> NDots_Z=",NDots_Z
94 NMin_X
=-(NDots_X
-1)/2; NMax_X
=-NMin_X
99 NMin_Y
=-(NDots_Y
-1)/2; NMax_Y
=-NMin_Y
101 IF(NDots_Z
.EQ
.1) THEN
104 NMin_Z
=-(NDots_Z
-1)/2; NMax_Z
=-NMin_Z
109 READ (*,*) X_Min
,X_Max
110 READ (*,*) Y_Min
,Y_Max
111 READ (*,*) Z_Min
,Z_Max
112 READ (*,*) XDim
,YDim
,ZDim
114 IF(G_Method
.EQ
.1) THEN
131 D_Z
=Z_Max
-(Hqd
+DWL
)/2.E0
140 X_Inc
=(X_Max
-X_Min
)/REAL(XDim
-1)
145 Y_Inc
=(Y_Max
-Y_Min
)/REAL(YDim
-1)
150 Z_Inc
=(Z_Max
-Z_Min
)/REAL(ZDim
-1)
153 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
156 READ (*,*) MTYPE
! MTYPE: 1-> ZBI, 2-> WZI, 3-> WZA
159 READ(*,*)VWE
,VWH
,VWSO
160 READ(*,*)VBE
,VBH
,VBSO
161 READ(*,*)ACW
,AVW
,BW
,DW
166 READ(*,*)EGW
,DW1
,DW2
,DW3
167 READ(*,*)EGB
,DB1
,DB2
,DB3
171 READ(*,*)C11
,C13
,C33
! Elastic modulus
172 READ(*,*)XLAMB
,XMU
! Lame constants
173 READ(*,*)EPSA
! Misfit strain: EPS0
174 READ(*,*)EPSC
! Misfit strain: EPSC
175 READ(*,*)PZE15
,PZE31
,PZE33
!Piezoelectric Constants
176 READ(*,*)PSPB
,PSPW
! Spontaneous Polarization
177 READ(*,*)DIELEC
! Barrier Dielectric Constant
182 READ(*,*)STR_Action
! 0-> Nothing 1-> Caculate 2-> Read
183 READ(*,*)DPL_Action
! 0-> Nothing 1-> Caculate 2-> Read
184 READ(*,*)PZO_Action
! 0-> Nothing 1-> Caculate 2-> Read
185 READ(*,*)POT_Action
! 0-> Nothing 1-> Caculate
186 READ(*,*)DIAG_Action
! 0-> Only Diagonal, 1->Full Hamiltonian
188 READ(*,*)KPBASIS
! 0-> Winkler 1-> Chuang
190 IF(PZO_Action
.GT
.0.AND
.MTYPE
.EQ
.1) THEN
191 WRITE(6,*)"Error: Electrostatic Potential for ZB not implemented"
195 AISO
=1 ! Isotropic Material
197 AISO
=0 ! Anisotropic Material
199 READ(*,*) STR_Filename
200 READ(*,*) DPL_Filename
201 READ(*,*) PZO_Filename
202 READ(*,*) POT_Filename
203 READ(*,*) KCOOR
! KCOOR=0 Cartesian Coordinates
204 ! KCOOR=1 Cylindrical Coordinates
205 IF(KCOOR
.EQ
.1.AND
.YDIM
.GT
.1) THEN
206 WRITE(6,*)"ERROR: Selected coordinates are cylindrical and YDIM.GT.1"
207 WRITE(6,*)" Exiting Program"
211 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
215 END SUBROUTINE READ_INPUT
217 SUBROUTINE CONSTANTS( )
218 Use Dot_Geometry
, ONLY
: DWL
219 Use Auxiliar_Procedures
, ONLY
: AISO
, MTYPE
222 REAL :: ALPHA
,BETA
,GAMA
223 REAL :: R
,S
,A1
,A2
,B1
,B2
224 REAL :: CN1_1
,CN1_2
,CN3_1
,CN3_2
,CN4_1
,CN4_2
230 !!!! Remember: XLAMB=C12, XMU=C44 !!!!!
233 BISUM
= 2.*EPSA
! Biaxial strain components
235 BIZZ
= -2.*EPSA
*XLAMB
/(XLAMB
+2.*XMU
)
237 IF(STR_Action
.EQ
.0) THEN
238 BIZZ
= -2.E0
*EPSA
*C13
/C33
244 IF(MTYPE
.EQ
.1) RETURN
246 R
=(C11
+XLAMB
+C13
)*EPSA
+C13
*(EPSC
-EPSA
)
247 S
=(C33
+C13
-XLAMB
-C11
)*EPSA
+(C33
-C13
)*(EPSC
-EPSA
)
253 A1
=R
*(C33
-XMU
-C13
)-S
*(C13
+XMU
)
256 B1
=S
*(C13
+2.E0
*XMU
)-R
*(C33
-C13
-2.E0
*XMU
)
257 B2
=S
*C11
-R
*(C13
+2.E0
*XMU
-C11
)
259 BETA
=( C13
*(C13
+2.E0
*XMU
)-C11
*C33
)/(-XMU
*C33
)
263 CN3_1
=A1
+B1
; CN3_2
=A2
+B2
264 CN4_1
=A1
+B1
/2.E0
; CN4_2
=A2
+B2
/2.E0
266 P1
=2.E0
*PZE15
; P2
=PZE31
; P3
=PZE33
268 CI1
=2.E0
*EPSA
*P2
+EPSC
*P3
272 CNE_1
=(P1
+P2
-P3
)*A1
+(P1
/2-P3
)*B1
273 CNE_2
=(P1
+P2
-P3
)*A2
+(P1
/2-P3
)*B2
275 ETA_AUX
=SQRT(BETA
**2 - 4.E0
*GAMA
)
276 ETA1
=(-BETA
+ETA_AUX
)/2.E0
277 ETA2
=(-BETA
-ETA_AUX
)/2.E0
278 IF(ETA1
.GT
.0.E0
.OR
.ETA2
.GT
.0.E0
) THEN
279 WRITE(6,*)"ERROR: ETA1 AND ETA2 ARE GREATHER THAN ZERO"
287 CN02_1
=(CN1_2
/ETA2
-CN1_1
)
288 CN02_2
=(CN1_2
/ETA1
-CN1_1
)
290 CN31_1
=(CN4_1
*SQRT(ETA2
)-CN4_2
/SQRT(ETA2
))
291 CN31_2
=(CN4_1
*SQRT(ETA1
)-CN4_2
/SQRT(ETA1
))
293 CNP31_1
=(CN3_2
/SQRT(ETA2
)-CN3_1
*SQRT(ETA2
))
294 CNP31_2
=(CN3_2
/SQRT(ETA1
)-CN3_1
*SQRT(ETA1
))
296 CN42_1
=(CN3_1
*ETA2
-CN3_2
)
297 CN42_2
=(CN3_1
*ETA1
-CN3_2
)
299 U1
=CN3_2
/SQRT(ETA2
)-CN3_1
*SQRT(ETA2
)
300 U2
=CN3_2
/SQRT(ETA1
)-CN3_1
*SQRT(ETA1
)
304 CNE2_1
=(1.E0
-ETA1
)*(CNE_2
/SQRT(ETA2
)-CNE_1
*SQRT(ETA2
))
305 CNE2_2
=(1.E0
-ETA2
)*(CNE_2
/SQRT(ETA1
)-CNE_1
*SQRT(ETA1
))
308 !!! V=q/(4*PI*E0)*PZ=0.9*PZ eV
309 CPZ
=0.9*(4.E0
*PI
/DIELEC
)
310 CPZ_Q1
=(BISUM
*PZE31
+BIZZ
*PZE33
)
311 CPZ_Q2
=(BIAUX
*(PZE33
-(PZE31
+2.E0
*PZE15
)))
313 !!! Wetting Layer Parameters
315 IF(NDots_z
.GT
.1) THEN
316 CSPWL
=CSP
*(C_S
-DWL
)/C_S
324 CPZWL
=(PZE31
-PZE33
*(C13
/C33
))*BISUM
326 CPZWL
=(BISUM
*PZE31
+BIZZ
*PZE33
)
331 END SUBROUTINE CONSTANTS
333 SUBROUTINE CONSTANTS_PZO( )
334 Use Dot_Geometry
, ONLY
: DWL
335 Use Auxiliar_Procedures
, ONLY
: AISO
, MTYPE
338 REAL :: ALPHA
,BETA
,GAMA
339 REAL :: R
,S
,A1
,A2
,B1
,B2
340 REAL :: CN3_1
,CN3_2
,P1
,P2
,P3
346 !!!! Remember: XLAMB=C12, XMU=C44 !!!!!
349 BISUM
= 2.*EPSA
! Biaxial strain components
350 BIZZ
= -2.*EPSA
*XLAMB
/(XLAMB
+2.*XMU
)
353 IF(STR_Action
.EQ
.0) THEN
354 BIZZ
= -2.E0
*EPSA
*C13
/C33
360 R
=(C11
+XLAMB
+C13
)*EPSA
+C13
*(EPSC
-EPSA
)
361 S
=(C33
+C13
-XLAMB
-C11
)*EPSA
+(C33
-C13
)*(EPSC
-EPSA
)
367 A1
=R
*(C33
-XMU
-C13
)-S
*(C13
+XMU
)
370 B1
=S
*(C13
+2.E0
*XMU
)-R
*(C33
-C13
-2.E0
*XMU
)
371 B2
=S
*C11
-R
*(C13
+2.E0
*XMU
-C11
)
373 BETA
=( C13
*(C13
+2.E0
*XMU
)-C11
*C33
)/(-XMU
*C33
)
376 CN3_1
=A1
+B1
; CN3_2
=A2
+B2
378 P1
=2.E0
*PZE15
; P2
=PZE31
; P3
=PZE33
380 CI1
=2.E0
*EPSA
*P2
+EPSC
*P3
384 CNE_1
=(P1
+P2
-P3
)*A1
+(P1
/2-P3
)*B1
385 CNE_2
=(P1
+P2
-P3
)*A2
+(P1
/2-P3
)*B2
387 ETA_AUX
=SQRT(BETA
**2 - 4.E0
*GAMA
)
388 ETA1
=(-BETA
+ETA_AUX
)/2.E0
389 ETA2
=(-BETA
-ETA_AUX
)/2.E0
390 IF(ETA1
.GT
.0.E0
.OR
.ETA2
.GT
.0.E0
) THEN
391 WRITE(6,*)"ERROR: ETA1 AND ETA2 ARE GREATHER THAN ZERO"
399 CNP31_1
=(CN3_2
/SQRT(ETA2
)-CN3_1
*SQRT(ETA2
))
400 CNP31_2
=(CN3_2
/SQRT(ETA1
)-CN3_1
*SQRT(ETA1
))
402 CNE2_1
=(1.E0
-ETA1
)*(CNE_2
/SQRT(ETA2
)-CNE_1
*SQRT(ETA2
))
403 CNE2_2
=(1.E0
-ETA2
)*(CNE_2
/SQRT(ETA1
)-CNE_1
*SQRT(ETA1
))
406 !!! V=q/(4*PI*E0)*PZ=0.9*PZ eV
407 CPZ
=0.9*(4.E0
*PI
/DIELEC
)
408 CPZ_Q1
=(BISUM
*PZE31
+BIZZ
*PZE33
)
409 CPZ_Q2
=(BIAUX
*(PZE33
-(PZE31
+2.E0
*PZE15
)))
411 !!! Wetting Layer Parameters
413 IF(NDots_z
.GT
.1) THEN
414 CSPWL
=CSP
*(C_S
-DWL
)/C_S
422 CPZWL
=(PZE31
-PZE33
*(C13
/C33
))*BISUM
424 CPZWL
=(BISUM
*PZE31
+BIZZ
*PZE33
)
429 END SUBROUTINE CONSTANTS_PZO
431 SUBROUTINE CONSTANTS_STR( )
433 Use Auxiliar_Procedures
, ONLY
: MTYPE
437 REAL :: ALPHA
,BETA
,GAMA
438 REAL :: R
,S
,A1
,A2
,B1
,B2
439 REAL :: CN1_1
,CN1_2
,CN3_1
,CN3_2
,CN4_1
,CN4_2
442 !!!! Remember: XLAMB=C12, XMU=C44 !!!!!
445 BISUM
= 2.*EPSA
! Biaxial strain components
446 BIZZ
= -2.*EPSA
*XLAMB
/(XLAMB
+2.*XMU
)
449 IF(STR_Action
.EQ
.0) THEN
450 BIZZ
= -2.E0
*EPSA
*C13
/C33
456 IF(MTYPE
.EQ
.1) RETURN
458 R
=(C11
+XLAMB
+C13
)*EPSA
+C13
*(EPSC
-EPSA
)
459 S
=(C33
+C13
-XLAMB
-C11
)*EPSA
+(C33
-C13
)*(EPSC
-EPSA
)
465 A1
=R
*(C33
-XMU
-C13
)-S
*(C13
+XMU
)
468 B1
=S
*(C13
+2.E0
*XMU
)-R
*(C33
-C13
-2.E0
*XMU
)
469 B2
=S
*C11
-R
*(C13
+2.E0
*XMU
-C11
)
471 BETA
=( C13
*(C13
+2.E0
*XMU
)-C11
*C33
)/(-XMU
*C33
)
475 CN3_1
=A1
+B1
; CN3_2
=A2
+B2
476 CN4_1
=A1
+B1
/2.E0
; CN4_2
=A2
+B2
/2.E0
478 ETA_AUX
=SQRT(BETA
**2 - 4.E0
*GAMA
)
479 ETA1
=(-BETA
+ETA_AUX
)/2.E0
480 ETA2
=(-BETA
-ETA_AUX
)/2.E0
481 IF(ETA1
.GT
.0.E0
.OR
.ETA2
.GT
.0.E0
) THEN
482 WRITE(6,*)"ERROR: ETA1 AND ETA2 ARE GREATHER THAN ZERO"
490 CN02_1
=(CN1_2
/ETA2
-CN1_1
)
491 CN02_2
=(CN1_2
/ETA1
-CN1_1
)
493 CN31_1
=(CN4_1
*SQRT(ETA2
)-CN4_2
/SQRT(ETA2
))
494 CN31_2
=(CN4_1
*SQRT(ETA1
)-CN4_2
/SQRT(ETA1
))
496 CN42_1
=(CN3_1
*ETA2
-CN3_2
)
497 CN42_2
=(CN3_1
*ETA1
-CN3_2
)
503 END SUBROUTINE CONSTANTS_STR
505 SUBROUTINE CONSTANTS_DSP( )
507 Use Auxiliar_Procedures
, ONLY
: MTYPE
511 REAL :: ALPHA
,BETA
,GAMA
512 REAL :: R
,S
,A1
,A2
,B1
,B2
513 REAL :: CN1_1
,CN1_2
,CN3_1
,CN3_2
516 !!!! Remember: XLAMB=C12, XMU=C44 !!!!!
519 BISUM
= 2.*EPSA
! Biaxial strain components
520 BIZZ
= -2.*EPSA
*XLAMB
/(XLAMB
+2.*XMU
)
523 IF(STR_Action
.EQ
.0) THEN
524 BIZZ
= -2.E0
*EPSA
*C13
/C33
530 IF(MTYPE
.EQ
.1) RETURN
532 R
=(C11
+XLAMB
+C13
)*EPSA
+C13
*(EPSC
-EPSA
)
533 S
=(C33
+C13
-XLAMB
-C11
)*EPSA
+(C33
-C13
)*(EPSC
-EPSA
)
539 A1
=R
*(C33
-XMU
-C13
)-S
*(C13
+XMU
)
542 B1
=S
*(C13
+2.E0
*XMU
)-R
*(C33
-C13
-2.E0
*XMU
)
543 B2
=S
*C11
-R
*(C13
+2.E0
*XMU
-C11
)
545 BETA
=( C13
*(C13
+2.E0
*XMU
)-C11
*C33
)/(-XMU
*C33
)
549 CN3_1
=A1
+B1
; CN3_2
=A2
+B2
551 ETA_AUX
=SQRT(BETA
**2 - 4.E0
*GAMA
)
552 ETA1
=(-BETA
+ETA_AUX
)/2.E0
553 ETA2
=(-BETA
-ETA_AUX
)/2.E0
554 IF(ETA1
.GT
.0.E0
.OR
.ETA2
.GT
.0.E0
) THEN
555 WRITE(6,*)"ERROR: ETA1 AND ETA2 ARE GREATHER THAN ZERO"
563 CN02_1
=(CN1_2
/ETA2
-CN1_1
)
564 CN02_2
=(CN1_2
/ETA1
-CN1_1
)
566 U1
=CN3_2
/SQRT(ETA2
)-CN3_1
*SQRT(ETA2
)
567 U2
=CN3_2
/SQRT(ETA1
)-CN3_1
*SQRT(ETA1
)
573 END SUBROUTINE CONSTANTS_DSP
575 END MODULE INPUT_DATA