Simulation of Organic Light-Emitting Diodes and Organic ...
Transcript of Simulation of Organic Light-Emitting Diodes and Organic ...
Simulation of Organic Light-Emitting Diodes
and Organic Photovoltaic Devices
by
Hui Wang
Submitted in Partial Fulfillment
of the
Requirements for the Degree
Doctor of Philosophy
Supervised by
Professor Ching W. Tang
and
Professor Lewis J. Rothberg
Department of Physics and Astronomy
Arts, Sciences and Engineering
School of Arts and Sciences
University of Rochester
Rochester, New York
2012
ii
Curriculum Vitae
Hui Wang was born in Shucheng, Anhui, China on October 5th, 1987. He
graduated with a Bachelor of Science degree in Physics from the University of
Science and Technology of China in 2006, where he attended the Special Class for
Gifted Youths. In fall 2006, he came to the University of Rochester to pursue the
Doctor of Philosophy degree in Physics under the supervision of Professor Ching W.
Tang. He received a Master of Arts degree in Physics in 2008 and was awarded the
Susumu Okubo Prize by the Department of Physics and Astronomy for excellent
performance in graduate course work and on the Preliminary Exam. His field of
research was in simulation of organic light-emitting diodes and organic photovoltaic
devices.
Publications
Hui Wang, Kevin P. Klubek, C. W. Tang, “Current Efficiency in Organic Light-
emitting Diodes with a Hole-injection Layer”, Applied Physics Letter, 93,
093306 (2008)
Minlu Zhang, Hui Wang, C. W. Tang, “Effect of the highest occupied molecular
orbital energy level offset on organic heterojunction photovoltaic cells”, Applied
Physics Letter, 97, 143503 (2010)
Minlu Zhang, Hui Wang, Hongkun Tian, Yanhou Geng, C. W. Tang, “Bulk
heterojunction photovoltaic cells with low donor concentration”, Advanced
Materials, 23, 4960 (2011)
iii
Minlu Zhang, Hui Wang, C. W. Tang, “Hole transport limited S-shape I-V curves
in organic photovoltaic cells”, Applied Physics Letter, 99, 213506 (2011)
Minlu Zhang, Hui Wang, C. W. Tang, “Enhanced efficiency in multi-junction
TAPC doped C60 photovoltaic cells”, Organic Electronics, 13, 249 (2011)
iv
Acknowledgments
First and foremost, I would like to express my gratitude to my advisors,
Professor Ching W. Tang and Professor Lewis J. Rothberg, for their invaluable
guidance and support in my PhD study and research. What I have learned from them
is not only the comprehensive knowledge-set they have in the subject, but also their
critical way of thinking, initiative of innovation, and keen insight into research. Their
generous and patient guidance to me has always made my research more efficient and
productive. It is a great honor for me to finish my PhD study under the supervision of
such wonderful mentors.
I would like to thank all my professors in the Department of Physics and
Astronomy for the knowledge and tools they taught me during the graduate
coursework. They have provided a solid foundation for my research work.
I am also very thankful to collaborators Dr. Minlu Zhang and Kevin P.
Klubek for their cooperation in providing experimental results for my simulation
analysis. I would like to acknowledge Joseph K. Madathil and Dr. Jason U.
Wallace for their help when I first joined the group. I greatly appreciate the insightful
discussions with Dr. David S. Weiss, Dr. Ralph H. Young, and Dr. Alfred P.
Marchetti, as well as their willingness to answer all my questions. I would also like
to thank all other members in our group, including Hao Lin, Dr. Sang Min Lee, Wei
Xia, Hsiang Ning Sunny Wu, Felipe Angel, Mohan Ahluwalia, Dr. Lichang Zeng,
Eric Glowacki, Matthew Smith, Jonathan A. Welt, Qing Du, Chieh Chang Mark
v
Hsu, William Finnie, Dr. Meng-Huan Kinneas Ho, Prashant Kumar Singh, Guy
Mongelli, Charles Chan, Laura Ciammaruchi, Yung-Hsin Thomas Lee, Chris
Favaro, who made my study and research a enjoyable experience. I learned a lot
from the regular group meeting and everyday discussions with them. It was a great
pleasure to work in such a great team.
Finally, I want to thank my girlfriend, Changxin Zhao, whom I met here at
the University of Rochester, for her love, understanding, and support. I also owe the
most special gratitude to my parents, Shengfeng Pan and Honggui Wang, for their
continuous and unconditional love and support.
vi
Abstract
This thesis focuses on the simulation of organic light-emitting diodes (OLEDs)
and organic photovoltaic devices (OPV). By building the model and choosing
appropriate parameters, I reproduced the experimental data collected by my
colleagues and interpreted the results qualitative and quantitatively.
We begin by simulating single layer devices to establish a good understanding of
the charge carrier injection, transport and recombination. Efficiency of single layer
OLEDs is sensitive to the mobilities of electrons and holes. Charge carrier traps can
be introduced to balance the transport. We then systematically investigate the effect
of the layer structure on the current efficiency in bilayer and trilayer OLEDs, and
conclude that inserting a hole injection layer can effectively reduce the quenching by
charge carriers near the recombination zone and hence improve the current efficiency.
Mixed host OLEDs with different device structures have been simulated and
compared.
We next investigate the effect of the highest occupied molecular orbital (HOMO)
energy level offset on planar heterojunction OPV devices, where dissociation at the
donor/acceptor (DA) interface controls the device performance. Bound charge-
transfer (CT) states are produced when excitons arrive at the DA interface. The
following dissociation of CT states is simulated using the Braun-Onsager model. Two
fitting parameters, the initial separation distance r0 and the CT state decay rate kf, are
used to explain the effect of the HOMO offset. The S-shape current-voltage
vii
characteristics and the donor layer thickness dependence of the device performance
are explained by the hole transport limitation in the donor layer.
For bulk heterojunction (BHJ) OPV devices that mix the donor and acceptor
materials in the BHJ layer, the device performance is sensitive to the donor
concentration. We explained this finding by considering the donor concentration
dependence of parameters in the BHJ layer, including the absorption coefficient,
dielectric constant, and hole/electron mobilies. A good match between the simulation
and experimental results has been achieved when all the parameters are set properly.
Finally, we simulate the two-stack tandem OPV devices and predict the optimal
combination of the BHJ layer thickness for both subcells, which is confirmed by
experiments.
viii
Table of Contents
Curriculum Vitae ii
Acknowledgements iv
Abstract vi
List of Tables xii
List of Figures xiii
List of Symbols and Abbreviations xxi
Foreword 1
Chapter 1 Introduction 3
1.1 Introduction to OLEDs and OPV devices 3
1.2 Introduction to the simulation of OLEDs and OPV devices 6
Chapter 2 Simulation of Single Layer Devices 8
2.1 Charge carrier injection, transport and recombination 8
2.1.1 Charge carrier injection at the metal/organic interface 8
2.1.2 Charge carrier transport and recombination 11
2.2 Single layer devices with unipolar transport materials 15
2.2.1 Space charge limited current 15
2.2.2 Injection barrier effect 20
2.2.3 Trap limited current 22
ix
2.3 Single layer OLED devices with bipolar transport materials 26
2.3.1 Recombination zone in single layer OLED devices 26
2.3.2 Recombination efficiency in single layer OLED devices 29
2.3.3 Single layer OLED devices with charge carrier traps 31
Chapter 3 Simulation of Multilayer Organic Light-Emitting Diodes 37
3.1 Interfaces between organic layers 37
3.1.1 Charge carrier transport across organic interfaces 37
3.1.2 Cross interface recombination 40
3.2 Exciton diffusion, decay and quenching 41
3.3 Quenching by charge carriers in OLEDs 42
3.3.1 Effect of the hole injection layer on the drive voltage of
OLEDs
42
3.3.2 Effect of the hole injection layer on the device efficiency
of OLEDs
48
3.4 Mixed host OLEDs 52
3.4.1 Parameter assumptions for the mixed host layer 52
3.4.2 Recombination zone in mixed host OLEDs 53
3.4.3 Quenching by charge carriers in mixed host OLEDs 60
3.5 Photon extraction 62
3.5.1 Cavity model for OLEDs 63
3.5.2 Mode decomposition of the dipole emission in OLEDs 72
3.5.3 Weak cavity versus strong cavity OLEDs 76
x
Chapter 4 Simulation of Organic Photovoltaic Devices 84
4.1 Photon absorption in OPV devices 84
4.2 Exciton diffusion and dissociation in OPV devices 87
4.3 Charge carriers transport in OPV devices 89
4.4 Effect of the HOMO offset on planar heterojunction OPV
devices
90
4.5 Effect of the donor layer thickness on planar heterojunction
OPV devices
97
4.6 Effect of the donor concentration on bulk heterojunction OPV
devices
102
4.7 Simulation of tandem OPV devices 110
Chapter 5 Summary and Future Work 114
References 119
Appendix A Program for the Simulation of OLEDs
(Electrical Part and Exciton Part)
142
A.1 Flow diagram 143
A.2 Codes 144
A.3 Sample input (input.txt) 170
Appendix B Program for the Simulation of OLEDs
(Optical Part)
173
B.1 Codes 174
xi
B.2 Sample input (input.txt) 269
B.3 Sample input (Al.txt) 270
B.4 Sample input (PL_red.txt) 272
Appendix C Program for the Power Consmption Model of OLED
Screens
274
C.1 Codes 275
Appendix D Program for the Simulation of OPV devices
(Optical Part, Exciton Part and Electrical Part)
280
D.1 Flow diagram 281
D.2 Codes 282
D.3 Sample input (input.txt) 310
xii
List of Tables
Table Title
Table 3.1 Input parameters used in the simulation of MTDATA/NPB/Alq
OLEDs.
44
Table 3.2 Input parameters used in the simulation of mixed host OLEDs. 54
Table 4.1 List of donors, HOMO levels and CAS names used in donor (3
nm)/C60 (40 nm) OPV devices.
92
Table 4.2 Experimental photovoltaic parameters (Jsc, Voc and FF) for
donor (3 nm) /C60 (40 nm) OPV devices. Vbi, r0 and kf are the
built-in potential, the initial separation distance and the decay
rate of the CT state used in the simulation.
93
Table 4.3 Experimental photovoltaic parameters (Jsc, Voc and FF) for
ITO/MoOx(2nm)/NPB(x nm)/C60(40 nm)/BPhen(8 nm)/LiF/Al
cells with NPB layer thickness varied from 3 nm to 100 nm.
Vbi, r0 and kf are the built-in potential, the initial separation
distance and the decay rate of the charge transfer state used in
the simulation.
98
Table 4.4 Experimental Photovoltaic parameters of TAPC:C60 cells
(AM1.5 @ 100mW/cm2) and calculated hole and electron
mobilities.
105
xiii
List of Figures
Figure Title
Figure 2.1 Simulation and analytical results of (a) the current density versus
voltage (J-V) characteristics and (b) the electric field distribution
under current density of 1000 mA/cm2. The layer thickness is
100 nm and the carrier mobility is 2.010-4
cm2V
-1s
-1.
17
Figure 2.2 (a) Simulation and analytical results (calculated from equation
2.18) of the J-V characteristics for the device with a field
dependent mobility (mobility parameters:
, ) and a layer
thickness of 100 nm. (b) Electric field distribution across the
devices with a field independent mobility (mobility parameters:
, ) and a field
dependent mobility (mobility parameters:
, ) under current
density of 1000 mA/cm2 and a layer thickness of 100 nm.
19
Figure 2.3 Simulated J-V curves for devices with injection barrier varied
from 0 eV to 0.4 eV and mobility parameters: (a)
and (b)
. The layer thickness is 100
nm for all devices.
21
xiv
Figure 2.4 (a) Simulated J-V curves for devices with hole trap
concentration varied from 0% to 2%. The hole trap energy is set
as the hole mobility parameters are
, . The layer
thickness is 100 nm for all devices. (b) The density of trapped
holes and free holes at 1000 mA/cm2 in the device with a hole
trap concentration of 1%.
25
Figure 2.5 Distribution of the charge carrier density, the electric field and
the recombination zone in single layer OLED devices. The layer
thickness for all devices is 100 nm and the results are simulated
under current density of 100 mA/cm2. Left figures are simulated
with . Right figure are
simulated with ,
. All mobilities are set as field independent and
the injection contacts for electrons and holes are set as Ohmic.
28
Figure 2.6 Recombination efficiency (J_Recombination/J_Injection) of
single layer OLED devices with balanced and unbalanced
mobilities. (1) , hole mobility
, electron mobility
and (2) , hole
mobility , electron mobility
. All mobilities are set as field
independent and injection contacts for holes and electrons are
set as Ohmic.
30
xv
Figure 2.7 Distribution of the hole trap concentration, the charge carrier
density, the electric field, the recombination between free holes
and free electrons, and the recombination between trapped holes
and free electrons in single layer OLED devices under current
density of 100 mA/cm2. Left panel has hole trap concentration
across the whole layer. Right panel has hole trap
concentration for the 20 nm in the middle of the
layer, and for the rest.
33
Figure 2.8 (a) Recombination efficiency and (b) normalized recombination
zone at100 mA/cm2 for single layer OLED devices with and
without hole traps.
35
Figure 2.9 Simulated J-V curves for single layer OLED devices with and
without hole traps.
36
Figure 3.1 Diagram of the hole transport across the HTL/ETL interface.
40
Figure 3.2 Structure of MTDATA/NPB/Alq OLEDs and materials used.
HOMO energy level: MTDATA (-5.1eV), NPB (-5.5eV), Alq (-
5.7eV). d is the variable thickness of the NPB layer.
44
Figure 3.3 Experimental (symbols) and simulated (solid curves) J-V curves
for MTDATA/NPB/Alq devices with variable NPB layer
thickness.
45
xvi
Figure 3.4 The energy level diagram and the distribution of the charge
carrier density, the electric field, and the recombination at 80
mA/cm2 in the bilayer (left side) and trilayer (right side)
devices.
47
Figure 3.5 Experimental (symbols) and simulated (solid curves) external
quantum efficiency versus current density for the series of
MTDATA/NPB/Alq devices with variable NPB layer thickness.
48
Figure 3.6 Simulated J-V curves for bilayer, trilayer, uniformly mixed host
and graded mixed host OLED devices.
56
Figure 3.7 The charge carrier density and recombination zone distribution
in various OLED devices: (a) Bilayer; (b) Trilayer; (c) UM-
H20; (d) UM-H50; (e) UM-H80 and (f) Graded.
59
Figure 3.8 Simulated quantum efficiency of bilayer, trilayer, uniformly
mixed host and graded mixed host OLED devices.
61
Figure 3.9 The schematic multilayer structure for the cavity model, where
dipole located in the ne layer with thickness de. The distance
between the dipole and the nearest interfaces on both sides are
z+ and z- respectively. The half-infinite media surrounding the
OLED structure has optical refractive indexes n+ and n-,
respectively. One or more intermediate layers stand between the
emissive layer and the outside media. Any light with specific
direction can be identified with the wave vector ke, which can
be decomposed into the in-plane projection κ and the z-axis
projection kz,e.
64
xvii
Figure 3.10 The illustration of the light out-coupling from the substrate into
the air. and are the power
transmission and reflection coefficient for light injection from
the substrate into the air. is the power
reflection coefficient for light injection from the substrate into
the OLED stack, which effectively considers the multi-layer
structure of the OLED already.
71
Figure 3.11 PL spectrum of the emitter to be used in the simulation. The PL
spectrum is generated from a Gaussian distribution with a peak
wavelength at 620nm and FWHM of 80nm. Inset: The device
structure of the OLED devices in the simulation, with glass
substrate/ITO (100 nm)/Organic Layer (20 nm to 600 nm)/Al
(100 nm), and the dipole emitter locates in the middle of the
organic layer.
74
Figure 3.12 (a) Optical refractive indexes of the glass, ITO, organic material
and Al used in the simulation. The optical refractive index of the
organic material is assumed to be 1.7 at all wavelengths. The
indexes of other materials are retrieved from literature. (b) The
contribution of each mode from the dipole emission in OLED
devices with organic layer thickness varying from 20 nm to 600
nm. Inset: the device structure of the OLED devices. Emitters
locate in the middle of the organic layer, with a PL spectrum
shown in Figure 3.11.
75
xviii
Figure 3.13 The device structure of the weak cavity and strong cavity
OLEDs used in the simulation. The HTL and ETL thickness of
the devices is tuned to improve the luminance at the normal
direction. Red emitters locate in the middle of the EML in both
devices with a PL spectrum shown in Figure 3.11. All organic
layers including the HTL, EML, ETL and capping layer are
assumed to have an optical refractive index of 1.7 at all
wavelengths.
78
Figure 3.14 The EL spectrum of the weak cavity and strong cavity OLEDs
(a) at normal direction and (b) over all angles.
80
Figure 3.15 EL spectrum at normal direction (0 degrees) and at high
viewing angles (60 degrees) for the (a) weak cavity and (b)
strong cavity OLEDs.
81
Figure 3.16 The luminance at normal direction from the (a) weak cavity and
(b) strong cavity OLEDs with HTL thickness and ETL thickness
varied from 0 nm to 400 nm, respectively.
83
Figure 4.1 Diagram of the photon absorption in OPV devices. The device
structure is glass substrate/ITO anode/Donor layer/Acceptor
layer/LiF/Al cathode. and
are the components of the
optical electric field propagating in the positive and negative
directions in the jth monolayer, and
are the
corresponding parameters for the adjacent kth monolayer.
85
xix
Figure 4.2 Diagram of the exciton dissociation process at the DA interface.
kd(r0,E) is the dissociation rate depending on the initial
separation distance r0 and the electric field E. kf is the decay rate
of the charge transfer state.
88
Figure 4.3 Experimental (symbols) and simulation results (solid curves) of
the current-voltage characteristics of ITO/MoOx(2 nm)/donor(3
nm)/C60(40 nm)/ BPhen(8 nm)/LiF(1 nm)/Al OPV cells.
92
Figure 4.4 Experimental (solid squares) and simulated (open squares)
results of Jsc, FF and Voc vs ∆EHOMO for donor (3 nm)/C60 (40
nm) OPV devices.
94
Figure 4.5 The initial separation distance r0 and the charge transfer state
decay rate kf used in the simulation of donor (3 nm)/C60 (40 nm)
OPV devices.
96
Figure 4.6 (a) Experimental (symbols) and simulated (solid curves) J-V
curves of ITO/MoOx(2 nm)/NPB(x nm)/C60(40 nm)/BPhen(8
nm)/LiF/Al OPV devices with the NPB layer thickness varied
from 3 nm to 100 nm. (b) Experimental (solid square) and
simulated (open circle) values of Jsc, FF and Voc for NPB/C60
OPV devices.
101
Figure 4.7 (a) Experimental and (b) simulated current-voltage
characteristics of ITO/MoOx/TAPC:C60/BPhen/Al OPV devices
with various TAPC concentration from 1.2% to 50%.
104
xx
Figure 4.8 Photovoltaic characteristics of TAPC:C60 cells under AM1.5 at
100 mW/cm2 illumination: (a) Experimental data of Voc versus
TAPC concentration; (b) Experimental and simulated data of
Jsc versus TAPC concentration; (c) Experimental and simulated
data of FF versus TAPC concentration.
106
Figure 4.9 (a) Schematic structure of the 2-stack tandem OPV devices. (b)
Contour plot of simulated current density of 2-stack tandem
cells with various BHJ layer thickness in top and bottom
subcells. Star points are the experimental results with the
current density indicated accordingly.
111
xxi
List of Symbols and Abbreviations
A Richardson constant 9
ADN 9,10-di(2-naphthyl) anthracene 92
Al Aluminum 3
Alq tris(8-quinolinolato)aluminum 42
( )TAPCc absorption coefficient of the mixed material 107
60( )C absorption coefficient of C60 107
BHJ bulk heterojunction 5
BPhen 4,7-diphenyl-1,10-phenanthroline 90
c speed of light in the vacuum 87
CBP 4,4'-bis(carbazol-9-yl)-biphenyl 92
const constant given by meeting the condition G(0)=1 39
hole trap concentration 23
CT charge transfer 88
TAPCc TAPC concentration in volume percentage 107
non-radiative decay rate in infinite media 69
Γp (Γn) electronic wave function overlap factors 108
xxii
radiative decay rate in infinite media 69
Poole-Frenkel field dependence factor 11
Poole-Frenkel factor for electrons 13
Poole-Frenkel factor for holes 44
d NPB layer thickness 44
d distance between the monolayer and the exciton 50
DA donor-acceptor 5
de thickness of the layer where dipole locates 63
jd
thickness of the jth
monolayer 86
dm molecular diameter 23
diffusion constant of electrons 13
diffusion constant of excitons 42
E effective energy barrier blocking holes 38
∆EHOMO HOMO offset 90
∆ELUMO LUMO offset 90
E electric field 9
e elementary charge 9
xxiii
optical electric fields of the positive and negative
propagation light in of the 0th
monolayer
86
work function of the anode 12
EBL exciton blocking layer 4
work functions of the cathode 12
,HOMO HTLE HOMO level of the HTL 38
,HOMO ETLE HOMO level of the ETL 38
EIL electron injection layer 4
intE electric field at the HTL/ETL interface 38
,
optical electric fields of the positive and negative
propagation light in the jth
monolayer
85
,
optical electric fields of the positive and negative
propagation light in the kth
monolayer
85
EL electroluminescence 79
EML emissive layer 3
optical electric fields of the positive and negative
propagation light in the N+1th
monolayer
86
hole trap energy. 23
ETL electron transport layer 3
xxiv
ETM electron transport material 53
electric field distribution 15
vacuum dielectric constant 9
relative dielectric constant 9
r TAPCc
dielectric constant of the mixed material 108
εr(C60) dielectric constant of C60 108
εr(TAPC)
dielectric constants of TAPC 108
FF fill factor 93
spinF factor for spin statistics 42
FWHM full width at half maximum 73
( )G E the pre-factor considering the energy barrier for holes 38
h Plank constant 9
HAT-CN
1,4,5,8,9,11-hexaazatriphenylene hexacarbonitrile 110
HIL hole injection layer 4
HIM hole injection material 54
HOMO highest occupied molecular orbital 37
HTL hole transport layer 3
xxv
HTM hole transport material 53
θ angle between the light direction and the z-axis in the n+
media
68
, angle between the light direction and the z-axis in the air
and in the substrate
70
ICL inter-connecting layer 110
ITO indium tin oxide 3
electron current 13
,p crossJ crossing interface drift current of holes 38
Jsc short circuit current 93
space charge limited current density 15
thermionic injection current 8
J-V current density versus voltage 16
k Boltzmann constant 9
kd dissociation rate of the charge transfer state 88
ke wave vector 64
decay rate of the excitons 49
kf decay rate of the charge transfer state 88
xxvi
quenchingk quenching rate of excitons 42
Forster energy transfer rate 49
kze z-axis projection of the wave vector 64
z,ik, z,i+1k z-axis projection of wave vectors in the i
th layer and the
i+1th
layer
65
TAPCc
imaginary part of the optical refractive index of the
mixed material
107
imaginary part of the optical refractive index of C60 107
absolute value of the wave vector in the n+ media 68
TM
RNDK ,TE
RNDK power density of the TM and TE waves emitted from
random oriented dipoles
68
TM
+,T,RNDK ,TE
+,T,RNDK power density of the out-coupling TM and TE waves in
the n+ media emitted from random oriented dipoles
68
TMK ,TEK power densities of the TM and TE waves emitted from
the dipole with a dipole moment perpendicular to the
OLED surface
66
TMK ,TEK power densities of the TM and TE waves emitted from
the dipole with a dipole moment parallel to the OLED
surface
67
xxvii
TM
, ,K T ,TE
,T,K power density of the out-coupling TM and TE waves in
the n+ media emitted from the dipole with a dipole
moment perpendicular to the OLED plane
67
TM
,T,K ,TE
,T,K power density of the out-coupling TM and TE waves in
the n+ media emitted from the dipole with a dipole
moment parallel to the OLED plane
68
κ in-plane projection of the wave vector 64
L total organic layer thickness 12
LiF lithium fluoride 3
LUMO lowest unoccupied molecular orbital 37
wavelength 72
m effective mass of charge carriers 9
MTDATA 4,4',4''-tris[N-(3-methylphenyl)-N-
phenylamino]triphenylamine
42
mobility of organic material 10
mobility under electric field E 11
mobility under zero electric field 11
hole (electron) mobility of the electron transport material 53
hole (electron) mobility of the hole transport material 53
xxviii
hole (electron) mobility of the mixed host 53
electron mobility 13
electron mobility under electric field E 12
electron mobility under zero electric field 12
,n ETL electron mobility of the ETL 41
hole mobility 13
hole mobility under zero electric field 44
µp0 (µn0) hole (electron) mobility at zero electric field in pure
TAPC and C60
108
,p HTL hole mobility on the HTL side 38
,p ETL hole mobility on the ETL side 38
electron density 12
, optical refractive indexes of the air and the substrate 70
ETLn electron density on the ETL side of the interface 41
density of states in the HOMO level 23
jn , kn complex refractive index in the jth
monolayer and the kth
monolayer
86
optical refractive index of organic materials 72
xxix
density of chargeable states 10
n+ , n- optical refractive index of the infinite media outside
OLEDs
63
NDP 6,13-dihydro-6,13-di-2-naphthalenyl-
Dibenzo[b,i]phenazine
92
ne optical refractive index of the layer where dipole locates 63
NPB 4,4'-bis[N-(1-naphthyl)-N-phenylamino]biphenyl 42
OLEDs organic light-emitting diodes 3
OPV organic photovoltaic devices 3
hole density 12
angular distribution of light power density in the air 70
angular distribution of light power density in the
substrate
70
PHJ planar heterojunction 5
HTLp hole density on the HTL side 38
PL photoluminescence 73
density of trapped holes 22
P θ angular distribution of the light power density in the n+
media
68
xxx
charge carrier density 50
jQ absorption rate in the jth
monolayer 87
R recombination rate 13
r distance between the exciton and the quenching center 49
crossR cross interface recombination rate 40
R_free holes recombination between free holes and free electrons 32
TM
i i 1r ,TE
i i 1r the reflection coefficient at the interface between the ith
layer and the i+1th
layer for TM wave and TE wave
65
recombination rate between trapped holes and free
electrons
22
power reflection coefficient for light injection from the
substrate into the OLED stack
70
power reflection coefficient for light injection from the
substrate into the air
70
R_trapped holes recombination between trapped holes and free electrons 32
R0 Forster distance 49
initial separation distance 88
SCLC space charge limited current 15
ETL energy width of the ETL 38
xxxi
HTL energy width of the HTL 38
cross section of charge carrier trapping 23
T temperature 9
TM
i i 1t ,TE
i i 1t transmission coefficient at the interface between the ith
layer and the i+1th
layer for TM wave and TE wave
65
TAPC 1,1-bis-4-bis4-methyl-phenyl-amino-phenyl-cyclohexane 92
TCTA 4,4,4-trisN-carbazolyl-triphenyl amine 92
TE Transverse Electric 63
TM Transverse Magnetic 63
power transmission coefficient for light injection from
the substrate into the air
70
exciton lifetime 42
applied voltage across the device 12
Vbi built-in potential 93
Voc open circuit voltage 93
injection barrier 9
X exciton density 42
z+ , z- distance between the dipole and the nearest interfaces 64
1
Foreword
The following chapters of this thesis were jointly produced. My participation
and contribution to the research is as follows:
I am the primary author of section 3.3 in Chapter 3. I collaborated with
Professor Ching W. Tang and fellow graduate student Kevin P. Klubek. The devices
in section 3.3 were made and measured by Kevin P. Klubek in Eastman Kodak
Company. My contribution to this section was the analysis of the results, building the
model and providing simulation results. The section has been published in Applied
Physics Letter, 2008, 93, 090036.
Chapter 4 of my dissertation was in collaboration with Professor Ching W.
Tang, and fellow graduate student Dr. Minlu Zhang at the University of Rochester. Dr.
Minlu Zhang carried out all the experiments and measurements reported in this
chapter. Dr. Hongkun Tian, and Professor Yanhou Geng from the Changchun
Institute of Applied Chemistry provided NAT5 material for section 4.6. I built the
model and provided simulation results to quantitatively explain the device
performance.
Section 4.4 has been published in Applied Physics Letter, 2010, 97, 143503,
and was co-authored with Professor Ching W. Tang and Dr. Minlu Zhang.
Section 4.5 has been published in Applied Physics Letter, 2011, 99, 213506
and was co-authored with Professor Ching W. Tang and Dr. Minlu Zhang.
2
Section 4.6 has been published in Advanced Materials, 2011, 23, 4960, and
was co-authored with Professor Ching W. Tang, Dr. Minlu Zhang, Dr. Hongkun Tian,
and Professor Yanhou Geng.
Section 4.7 has been published in Organic Electronics, 2012, 13, 249, and was
co-authored with Professor Ching W. Tang and Dr. Minlu Zhang.
3
Chapter 1
Introduction
Energy has become a more and more important issue these years due to the fast
development of our society and the limited fossil-fuel resources on earth. There are
two approaches to solving the energy problem. One is to reduce the energy
consumption by improving the efficiency of energy utilization and the other is to
generate more energy, especially from long-term renewable sources. Organic light-
emitting diodes (OLEDs) and organic photovoltaic (OPV) devices can help ease the
energy scarcity issue by utilizing those two approaches, respectively.
1.1 Introduction to OLEDs and OPV devices
Ever since Tang et al. invented them in 1987 [1], organic light-emitting diodes
have received a lot of attention because of their potential use as full-color display
panels and lighting devices. Thanks to the tremendous development during the last
two decades, OLED technology has been widely used in cell phones and large screen
TV displays. Typical OLED device structure is: glass substrate/transparent
anode/hole transport layer (HTL)/emissive layer (EML)/electron transport layer (ETL)
/reflective cathode, where organic layers are sandwiched between the anode and
cathode. While ITO is the most popular transparent anode used to inject holes into the
HTL, LiF/Al is usually used as the cathode to inject electrons into the ETL [2]. After
4
the transport through the HTL and ETL, respectively, holes and electrons recombine
with each other in the emissive layer (EML) and emit light.
Over the last two decades, much research has been devoted to improving the
efficiency, reliability, and color quality of OLEDs, as well as to making them
commercially viable. By doping the EML with high quantum yield molecules, high
efficiency and color varieties can be achieved [3]. Other functional layers such as the
hole injection layer (HIL) [4-7], the electron injection layer (EIL) [2, 8] and the
exciton blocking layer (EBL) [9] were introduced to increase the device efficiency
and lifetime. The device lifetime can be further improved by constructing a uniformly
mixed [10] or graded mixed host layer [11]. When several EMLs were incorporated
together, a white OLED can be fabricated and become attractive for lighting
applications [12-14]. While the significant progress in materials and device structures
led to a higher efficiency and longer lifetime for OLEDs, the detailed mechanisms
underlying these improvements are not fully understood.
Organic photovoltaic devices [15], also known as organic solar cells, are devices
that use organic active layers to absorb sunlight and generate electricity. Due to the
low dielectric constant (2-4) of organic materials, strongly bound electron hole pairs,
also called excitons, are generated instead of free charge carriers by the absorption of
photons. Because the exciton binding energy is significantly higher than the thermal
energy (kT), another driving force (usually a strong electric field) is required to
dissociate the excitons into free charge carriers. In 1986, Tang et al. invented the
5
planar heterojunction (PHJ) OPV device with a structure of glass substrate/anode/
donor layer (HTL)/acceptor layer (ETL)/cathode [15]. A donor-acceptor (DA)
interface was introduced to dissociate the excitons. In this case, the device efficiency
is further limited by the exciton diffusion length of the organic material since only
those excitons arriving at the DA interface can dissociate efficiently. In the 1990s, a
bulk heterojunction (BHJ) structure was introduced, which mixed the donor and
acceptor material together in the active layer. Hence most excitons generated can
reach the nearby DA interface and dissociate [16]. However, the low mobility of the
organic materials will enhance the recombination loss during the extraction of the
charge carriers. Meanwhile, a high electric field is still favorable for the dissociation
of excitons at the DA interface which limits the device thickness and photon
absorption as well.
OLEDs and OPV devices have the similar device structure and completely
reversed working process--OLEDs generate photons from charge carriers, while OPV
devices do the reverse job. Such a correlation between the two types of devices
provides a perspective to study them together, especially through simulation.
6
1.2 Introduction to the simulation of OLEDs and OPV devices
With systematic study of the device performance of OLEDs and OPV devices,
people can explain some effects qualitatively. For example, the improved current
efficiency in OLEDs with a HIL can be explained by the reduction of the radical
cations quenching at the HTL/EML interface [17]. However, in order to explain the
effect quantitatively, we should simulate the device performance and obtain some
numerical results.
Since the working process of OLEDs and OPV devices is complicated and several
interfaces (singularities) are presented, it is difficult to get any analytical results
directly. This empirical drawback makes numerical simulation with computer
programming more viable. Simulation is a powerful method to investigate the
underlying mechanism of devices. More importantly, it can tell us to what amplitude
the mechanism can affect the device performance. Meanwhile, simulation can retrieve
detailed information, such as the charge carrier distribution, which is difficult to
directly measure through experiments. Furthermore, a good simulation program can
predict the performance of new devices without if being necessary to do the
experiment, which can save material, energy and time.
In the simulation of OLEDs and OPV devices, the first step is to divide the
organic layers into a stack of discrete monolayers, which are sandwiched between an
anode and a cathode. Because the cross section of the devices (around 1 mm) is
several orders of magnitude larger than the device thickness (around 1 um), it is
7
reasonable to assume that each monolayer has an infinite area. With this assumption,
we can treat the thin film devices as one-dimensional cells along the direction normal
to the electrode surfaces. The same treatment has been accepted for almost all
publications modeling OLEDs and OPV devices [18-38].
Simulation of OLEDs includes three parts: the electrical part, the exciton part and
the optical part. The electrical part describes the charge carrier injection, transport,
recombination, and the electric field distribution. The exciton part simulates the
exciton generation, diffusion, quenching, radiative decay and non-radiative decay.
The optical part models the cavity effect and the out-coupling process.
In contrast, simulation of OPV devices also includes the same three parts in a
reverse order: the optical part, the exciton part and the electrical part. The optical part
calculates the photon absorption in the active layer and the interference effect due to
the reflective cathode. The exciton part describes the exciton diffusion, decay, and
dissociation at the DA interface. After the exciton dissociation, free charge carriers
are generated. The electrical part models the charge carrier transport, recombination
and extraction.
8
Chapter 2
Simulation of Single Layer Devices
Single layer devices have only one organic layer sandwiched between electrodes.
They are basic devices we can simulate as a starting point. Despite their simple
structure, they still provide us meaningful information on how to optimize the
performance of devices with more complicated structures. In addition, the
mechanisms of the charge carrier injection, transport and recombination in single
layer devices are identical to those in multilayer devices. A solid understanding of
these mechanisms establishes a good foundation for research on multilayer devices.
2.1 Charge carrier injection, transport and recombination
2.1.1 Charge carrier injection at the metal/organic interface
Charge carrier injection from a metal electrode into an inorganic semiconductor
can be described by the thermionic emission model [39], which assumes that the
current flow across the barrier is solely dependent on the barrier height. The injection
current based on this model can be calculated by the following equations:
2 bth
B EJ AT exp
kT
(2.1)
9
2
3
4 emkA
h
(2.2)
3
0/ 4 rB e (2.3)
where
: thermionic injection current
A: Richardson constant
T: temperature
: injection barrier
E: electric field
k: Boltzmann constant, 8.61710−5
eV/K
e: elementary charge, 1.610−19
C
m: effective mass of charge carriers
h: Plank constant, 4.13610−15
eV*s, hc=1240 eV*nm
: vacuum dielectric constant, 8.85410−15
C/(V*cm)
: relative dielectric constant of the material
Equation (2.1) includes the term
that accounts for the lowering of
the barrier height by an image potential. Given mc2=0.511 MeV, T=300 K, =3,
=0.2eV, E=1 MV/cm, we can calculate the injection current density as
, which is obviously much higher than the working current range
10
(1 mA/cm2 to 1000 mA/cm
2) in organic semiconductor devices. Thus, the thermionic
emission model needs to be modified for organic semiconductor devices.
The problem of applying the original thermionic emission model in organic
semiconductor devices lies in the highly amorphous structure and low mobility of
organic materials. The injected holes (electrons) cannot transport away from the
anode (cathode) quickly enough. Therefore, part of them will diffuse back or
recombine with the charges at the electrode. Smith et al. [21, 40, 41] first proposed
the back diffusion current that will cancel most injection current and leave the net
contribution current as the true injection current. Later, Scott and Malliaras [42]
proposed a more unified model to calculate the charge carrier injection from a metal
electrode into an organic layer. The model has considered the balance between the
thermionic injection current and the surface recombination current. The electric field
and image potential at the interface lower the injection barrier and increase the
thermionic injection current. For surface recombination, the Coulomb capture
distance at the interface is defined at which the energy is kT below the maximum
energy barrier. The difference between the thermionic injection current and surface
recombination current--the net injection current--is calculated as:
2
04 * exp( )bthJ N e E exp f
kT
(2.4)
1 1 1 2 f
ff f
(2.5)
11
3
0/ 4 rf e E kT (2.6)
wherethJ is the injection current, is the elementary charge, is the mobility of the
organic material, is the density of chargeable states, is the injection barrier,
is the electric field at the metal/organic interface, and are the relative and
vacuum dielectric constant, is the Boltzmann constant, and is the temperature.
Equation 2.5 denotes an intermediate parameter when solving for the Coulomb
capture distance, and equation 2.6 represents the lowering of energy barrier due to the
electric field and image potential.
2.1.2 Charge carrier transport and recombination
Due to the amorphous structure of organic materials, charge carriers mainly
move by hopping between molecules. The energy and position disorder impedes the
transport and cause a low mobility for organic materials. Bässler [43] used the Monte-
Carlo method to analyze the transport behavior in disordered materials. As a result of
the disordered structure, most organic materials have electric field dependent mobility.
The electric field dependence of mobility can be described by the Poole-Frenkel
equation [43-45] as follows
0( ) *exp( * )E E (2.7)
where E is the electric field, is the charge carrier mobility under electric field
E, is the mobility under zero electric field, and is the Poole-Frenkel field
12
dependence factor. Since and are both constant, the mobility of the organic
material under any given electric field can be calculated through the above equation.
To correctly model the charge carrier transport in organic semiconductor
devices, we need to calculate the electric field and charge carrier density distributions
across the whole device. As we mentioned in the introduction, we treat the thin film
devices as one-dimensional cells along the direction normal to the electrode surfaces.
Therefore, the one-dimensional Poisson equation describes the electric field
distribution across the organic layer, and the applied voltage across the device
provides the necessary boundary condition [18, 19, 21, 22, 25, 26]. The electric field
in the device is calculated by the following equations
0r
e p nE
x
(2.8)
L
applied cathode anode
0
V E E E x *dx (2.9)
where is the electric field, and are the hole and electron densities, is the
applied voltage across the device, and are the work functions of the
cathode and the anode, which may not be the bulk work functions due to the possible
dipolar layers at the metal/organic interfaces [18], and L is the total organic layer
thickness. Equation 2.8 shows that the electric field distribution in the device is
determined by the charge carrier density at each position. Equation 2.9 presents a
boundary condition for the device.
13
Charge carriers (holes and electrons) transport through drift (electric field
driven) and diffusion (density gradient driven). The mobilities of organic materials
are calculated by the Poole-Frenkel equation as mentioned above, and the diffusion
constant is assumed to follow the Einstein relation [46, 47]. For instance, the electron
transport in devices is calculated by the equations below
0( ) *exp( * )n n nE E (2.10)
* /n nD u kT e (2.11)
* * * *n n n
nJ e u E n D
x
(2.12)
where is the electron mobility under electric field E, is the electron
mobility at zero electric field, is the Poole-Frenkel factor describing the field
dependence, is the diffusion constant of electrons, and denotes the electron
current considering both drift and diffusion. The hole transport can be described by
similar equations.
Electrons and holes recombine with each other if they are both present in the
device and are close to each other. The bulk recombination rate of free electrons and
holes is calculated in accordance with Langevin’s theory [48]
0
* * *n p
r
eR n p
(2.13)
14
where R is the recombination rate, and are electron and hole mobilities, and
are electron and hole densites. The recombination rate in organic material depends
on how fast the electrons and holes can find each other. Thus the mobilities of the
charge carriers play a significant role in the recombination process.
The drift and diffusion currents move the charge carriers in the device, while
the recombination reduces the charge carrier density. Combining all of them together,
we can calculate the change of charge carrier density over time through the
continuity equation [18] below
1
* nJnR
t e x
(2.14)
Equations 2.8 to 2.14 above are sufficient to simulate the current density versus
voltage characteristics and the recombination distribution in single layer organic
semiconductor devices. Charge carriers in the device determine the electric field
distribution, and the electric field will modify the charge carrier distribution. The
interplay between the charge carriers and the electric field is the key issue in organic
semiconductor devices, while the field dependent mobility further complicates the
problem. In the model, we will calculate the change of the electric field and charge
carrier density at each position over time. The model stops at the equilibrium state
where the electric field and charge carrier density at each position remain constant.
15
2.2 Single layer devices with unipolar transport materials
We first simulate single layer devices with unipolar transport materials. Unipolar
means that there is only one type of charge carriers (either holes or electrons, but not
both) in the device. Therefore, we can ignore the recombination for now and focus on
the injection and transport of charge carriers.
2.2.1 Space charge limited current
Space charge limited current (SCLC) takes place in single layer devices with a
unipolar transport material. With an Ohmic injection contact, the bulk transport of the
charge carriers determines the current density of the device. Since the injected charge
carriers (space charges) from the Ohmic contact also modify the electric field across
the layer, the charge carrier density, and therefore the current density, in the device is
limited. Mott-Gurney Law [49] [50] is an analytical theory describing the SCLC
current.
The SCLC current density and the electric field distribution in the devices can be
calculated through the Mott-Gurney Law as follows
2
0 0
3
9
8
rSCLC
VJ
L
(2.15)
0 0
2* *( ) SCLC
r
J xE x
(2.16)
16
where denotes the SCLC current density, is the charge carrier mobility, V is
the applied voltage across the layer, L is the layer thickness, and is the electric
field distribution across the device. Figure 2.1(a) compares the simulation and
analytical results of the current density versus voltage (J-V) characteristics. The
simulation results are obtained through the model discussed in the previous section,
while the analytical J-V curve are calculated by the SCLC theory (equation 2.15). The
thickness of the layer is 100 nm and the carrier mobility is 2.010-4
cm2V
-1s
-1. The
injection barrier is set to be 0 eV in the simulation to form an Ohmic contact. Figure
2.1(b) shows the simulation and analytical results of the electric field distribution in
the same device under the current density of 1000 mA/cm2. The good agreement
between the simulation and the analytical results indicates that the model works well
for single layer devices when SCLC conditions are met.
17
Equation 2.15 and 2.16 are derived with the assumption that the mobility is
constant across the whole layer. Since the electric field inside the layer varies at each
position, the mobility is not constant across the layer if it is field dependent. Thus
there is no analytical solution for the SCLC current with field dependent mobility.
However, the current can be estimated through the empirical equations [51] as
follows
Figure 2.1. Simulation and analytical results of (a) the current density versus
voltage (J-V) characteristics and (b) the electric field distribution under current
density of 1000 mA/cm2. The layer thickness is 100 nm and the carrier mobility
is 2.010-4
cm2V
-1s
-1.
0 20 40 60 80 100
0
1x105
2x105
3x105
4x105
5x105
6x105
7x105
(b)
2.0*10
-4 cm
2V
-1s
-1
=0 (V/cm)-1/2
SCLC theory
SimulationEle
ctr
ic f
ield
(V
/cm
)
Position (nm)
0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
10
100
1000
2.0*10
-4 cm
2V
-1s
-1
=0 (V/cm)-1/2
J (
mA
/cm
2)
Voltage (V)
SCLC theory
Simulation
(a)
18
0( ) *exp( * )E E (2.17)
2
0 0
3
9exp(0.89* * )
8
rSCLC
V VJ
L L
(2.18)
Figure 2.2 (a) shows the simulation and analytical results (calculated from
equation 2.18) of the SCLC current for a device with a 100 nm layer. The mobility
parameters are: , . The
good agreement between the simulation and the analytical results confirms that the
simulation model works well for a single-layer and unipolar device where the carrier
mobility is field dependent.
Figure 2.2(b) compares the simulated electric field distribution in devices with
a field independent mobility (mobility parameters
) and a field dependent mobility (mobility parameters
). The results are simulated under the
current density of 1000 mA/cm2 and the layer thickness for both devices is 100 nm.
Under non-zero electric field, the mobility in the device with a field dependent
mobility is higher than that in the device with a field independent mobility. Therefore
the electric field required to maintain the same current density is lower. The field
dependence of mobility plays a significant role in determining the device
performance, especially the J-V curves, of organic semiconductor devices.
19
Figure 2.2. (a) Simulation and analytical results (calculated from equation 2.18) of
the J-V characteristics for the device with a field dependent mobility (mobility
parameters: , ) and a layer
thickness of 100 nm. (b) Electric field distribution across the devices with a field
independent mobility (mobility parameters: ,
) and a field dependent mobility (mobility parameters:
, ) under current density of 1000
mA/cm2 and a layer thickness of 100 nm.
0 20 40 60 80 100
0
1x105
2x105
3x105
4x105
5x105
6x105
7x105
2.0*10
-4 cm
2V
-1s
-1
(b)
Ele
ctr
ic f
ield
(V
/cm
)
Position (nm)
0 (V/cm)-1/2
2.0*10-3 (V/cm)
-1/2
0.0 0.5 1.0 1.5 2.0 2.5 3.0
10
100
1000
2.0*10
-4 cm
2V
-1s
-1
=2.0*10-3 (V/cm)
-1/2
(a)
J (
mA
/cm
2)
Voltage (V)
SCLC theory
Simulation
20
2.2.2 Injection barrier effect
The previous section investigates the SCLC that requires an Ohmic injection
contact. When injection barrier is high enough, the current in organic semiconductor
devices will show very different voltage dependence. We have simulated devices with
various injection barriers to investigate the injection barrier effect. Figure 2.3(a)
compares the J-V curves for devices with injection barrier varied from 0 eV to 0.4 eV.
The mobility is , and the layer
thickness is 100 nm for all devices. The simulation results demonstrate that when
injection barrier is lower than 0.2 eV, the barrier is low enough and the contact can be
practically treated as Ohmic contact. The effect has also been reported by other
groups [19, 21]. However, when injection barrier is high enough, the current density
is limited by the injection barrier and higher drive voltage is required, as evident from
Figure 2.3(a).
Figure 2.3(b) shows similar simulation results for devices with lower charge
carrier mobility: , For devices with
low charge carrier mobility, the electric field that is required to drive the current
density is high. As a result, the high electric field near the injection interface
effectively lowers the injection barrier and hence helps the injection of charge carriers.
21
Figure 2.3. Simulated J-V curves for devices with injection barrier varied from 0 eV
to 0.4 eV and mobility parameters: (a)
and (b) . The layer
thickness is 100 nm for all devices.
0 20 40 60 80 100 120 140 1601
10
100
1000
2.0*10
-7 cm
2V
-1s
-1
=0 (V/cm)-1/2
J (
mA
/cm
2)
Voltage (V)
SCLC theory
Simulation, B=0 eV
Simulation, B=0.2 eV
Simulation, B=0.3 eV
Simulation, B=0.4 eV
(b)
0 5 10 151
10
100
1000
(a)
2.0*10
-4 cm
2V
-1s
-1
=0 (V/cm)-1/2
J (
mA
/cm
2)
Voltage (V)
SCLC theory
Simulation, B=0 eV
Simulation, B=0.2 eV
Simulation, B=0.3 eV
Simulation, B=0.4 eV
22
2.2.3 Trap limited current
After observing the effect of the injection barrier on J-V curves, we expand the
model to investigate the effect of charge carrier traps on single layer devices. The
contact of the device is set to be Ohmic with zero injection barriers in this section, so
that we can focus on the effect of the charge carrier traps and ignore the injection
barrier effect. Doping with luminophores [3] is widely used in OLEDs to obtain a
high quantum yield and good color purity. Some dopant molecules also act as hole
(electron) traps in the host material. These trap centers will severely alter the transport
behavior of organic semiconductor devices even with a small fraction. Staudigel et.al
[18] proposed a model to calculate the trapped charge carrier density in organic
materials. For devices with hole traps, the recombination between trapped holes and
free electrons is calculated through the modified Langevin recombination rate as
follows
0
* * *pt n t
r
eR n p
(2.19)
where is the recombination rate between trapped holes and free electrons, is
the density of the trapped holes, and n is the electron density. Only electron mobility
n is used in the equation, because the trapped holes are assumed to be still.
The transformation between free holes and trap holes are simulated by the
equations below
23
**
[ * * *( )*exp ]
free trap
t p
m
pt
HOMO pt t t HOMO
dp kTE
dt e d
Ep N C p p N p
kT
(2.20)
25 mt d (2.21)
where is the cross section of charge carrier trapping. Trapping is assumed to occur
on the trap center itself and its four neighbors in the same monolayer, thus is
estimated as 5 times the square of molecular diameter dm [18]. is the density
of states in the HOMO levels, which can be approximated as 1/3
md . denotes the
hole trap concentration and denotes the hole trap energy. The trapped hole has a
probability of
to pop out from the trapped state. Combining the equations
above, we can calculate the change of trapped holes density over time by the
following equation
free trapt
pt
dpdpR
dt dt
(2.22)
Figure 2.4(a) shows the J-V curves for devices with hole trap concentration
varied from 0% to 2%. The devices are set to only transport holes. The hole trap
energy is set as ; the hole mobility is ,
and the layer thickness is 100 nm. When trap concentration is 0%,
the current density in device is the same as the SCLC because we set the contact to be
Ohmic. Increasing the trap concentration will dramatically increase the drive voltage
24
of the device. The high drive voltage is caused by the space charge effect of the
trapped charge carriers.
Figure 2.4(b) shows the density of trapped holes and free holes in the device
with a hole trap concentration of 1%. The results are simulated under current density
of 1000 mA/cm2. The simulation indicates that the trapped holes become the majority
part of the space charges. Consequently, the accumulated trapped holes dramatically
increase the electric field and hence the drive voltage of the device.
25
Figure 2.4. (a) Simulated J-V curves for devices with hole trap concentration varied
from 0% to 2%. The hole trap energy is set as the hole mobility
parameters are , . The layer
thickness is 100 nm for all devices. (b) The density of trapped holes and free holes at
1000 mA/cm2 in the device with a hole trap concentration of 1%.
0 20 40 60 80 100
0.0
5.0x1017
1.0x1018
1.5x1018
2.0x1018
2.5x1018
3.0x1018
(b)
p2.0*10
-4 cm
2V
-1s
-1
p=0 (V/cm)
-1/2
Ept=0.2 eV
Cpt=1%
trapped holes
free holes
ch
arg
e c
arr
ier
de
nsity (
1/c
m3)
Position (nm)
0 5 10 15 20 25 301
10
100
1000
p2.0*10
-4 cm
2V
-1s
-1
p=0 (V/cm)
-1/2
Ept=0.2 eV
J (
mA
/cm
2)
Voltage (V)
Cpt=0%
Cpt=0.1%
Cpt=1%
Cpt=2%
(a)
26
2.3 Single layer OLED devices with bipolar transport materials
2.3.1 Recombination zone in single layer OLED devices
Bipolar materials can support the transport of both electrons and holes, and
recombination takes place in the device when electrons and holes meet with each
other. The recombination rate can be calculated by the Langevin recombination rate
[48] (equation 2.13).
Single layer bipolar transport devices are the original organic electroluminescent
(EL) devices [52]. Without a heterojunction structure, the charge carrier mobilities
control the location of the recombination zone in single layer OLED devices.
Figure 2.5 shows the distribution of the charge carrier density, the electric field
and the bulk recombination zone in single layer OLED devices with balanced (left
side of the figure,
) and unbalanced (right side of
the figure,
,
) electron and
hole mobilities. All mobilities are set as field independent and the injection contacts
for holes and electrons are set as Ohmic. The layer thickness for both devices is 100
nm and the results are simulated under current density of 100 mA/cm2. If the material
has perfect balanced bipolar transport properties (
), electrons and holes
distribute in the device symmetrically, and the recombination takes place across the
whole layer. Expanding the recombination zone away from the electrodes is favorable
for a high efficiency and long lifetime.
27
However, if the hole mobility is much higher than the electron mobility in the
device (right side of Figure 2.5), holes that moves faster than electrons will arrive at
the cathode/organic interface. As consequency, most of the recombination takes place
near the cathode/organic interface before electrons can move even further. It is well
known that recombination that takes place close to the cathode can be quenched by
the metal electrode [53-57]. Therefore, the efficiency of this type of EL devices is
very low. The electrode quenching was the limiting factor for organic EL devices [52]
before Tang et.al introduced the heterojunction structure [1] that effectively move the
recombination zone away from the electrodes.
28
µp: µn=100:1 µp: µn=1:1
Figure 2.5. Distribution of the charge carrier density, the electric field and the
recombination zone in single layer OLED devices. The layer thickness for all devices
is 100 nm and the results are simulated under current density of 100 mA/cm2. Left
figures are simulated with . Right figures are
simulated with , . All
mobilities are set as field independent and the injection contacts for electrons and
holes are set as Ohmic.
29
2.3.2 Recombination efficiency in single layer OLED devices
Recombination efficiency, defined by the ratio of recombined charge carriers
(J_Recombination) over total injected charge carriers (J_Injection), represents the
balance factor for OLED devices. The injected charge carrier can either recombine in
the device or pass through the device without recombination; the latter part of the
charge carriers forms the leakage current and is not contributing to the light emission.
The mobility mismatch can play a significant role in determining the balance factor of
single layer OLED devices.
Figure 2.6 compares the recombination efficiency (J_Recombination/J_Injection))
in single layer OLED devices with balanced and unbalanced mobilities. The mobilies
for the two devices are (1) µp: µn=1:1, ,
and (2) µp: µn=100:1, ,
, respectively. All mobilities are set as field independent and
injection contacts for holes and electrons are set as Ohmic.
For devices with the hole mobility equal to the electron mobility (µp: µn=1:1), at
high current density, the recombination efficiency is high since a majority of the
charge carriers will recombine in the bulk before reaching the other side of the device.
However, the recombination efficiency drops as current density decreases. This drop
is attributed to the reduced charge carrier density in the device. When current density
decreases, electrons see fewer holes on their way passing through the device.
Therefore, the probability of recombination reduces.
30
While for devices with unbalanced mobilities (µp: µn=100:1), the recombination
efficiency is always low even at high current density. Because of the mobility
mismatch, most recombination takes place near the cathode. The holes have a high
probability of passing through the narrow recombination zone without recombining
with electrons. As a result, the leakage current is high, and the recombination
efficiency is low. The efficiency of the device with unbalanced mobilities would be
even lower if we considered the electrode quenching mechanism [53].
Figure 2.6. Recombination efficiency (J_Recombination/J_Injection) of single
layer OLED devices with balanced and unbalanced mobilities. (1) ,
hole mobility , electron mobility
and (2) , hole mobility
, electron mobility . All mobilities
are set as field independent and injection contacts for holes and electrons are set
as Ohmic.
31
From the simulation results presented in section 2.3.1 and 2.3.2, we can tell that
for single layer OLED devices, a balanced mobility is necessary to achieve a
favorable recombination zone away from the electrodes and high recombination
efficiency as well. By setting the injection contacts as Ohmic, we can ignore injection
barrier effects. However, the injection contacts for holes and electrons can alter the
device performance as well. A high injection barrier for electrons would shift the
recombination zone towards the cathode and decrease the recombination efficiency.
2.3.3 Single layer OLED devices with charge carrier traps
In the previous section, we have shown that when the hole mobility is much
higher than the electron mobility in single layer OLED devices, recombination takes
place near the organic/cathode interface. In order to achieve high quantum efficiency,
we need to move the recombination zone away from the electrodes to reduce the
electrode quenching and leakage current. To balance the electron and hole transport
without introducing the heterojunction structure, we can add some hole traps [53, 58]
into the device to slow down the transport of holes.
Figure 2.7 shows the hole trap concentration, the charge carrier density, the
electric field and recombination distribution for devices with hole traps. Parameters
for the simulation include: the layer thickness is 100 nm, µp: µn=100:1, the hole
mobility is , the electron mobility is
, and the hole trap energy is . All mobilities are set as
electric field independent and the contacts for injections are set as Ohmic. The
32
recombination between free holes and free electrons (R_free holes) as well as the
recombination between trapped holes and free electrons (R_trapped holes) are plotted
separately.
The left side of Figure 2.7 are simulation results for the device with hole traps
that are uniformly distributed across the layer with a hole trap concentration of
. The recombination zone of free holes and electrons are wider than the case
without traps (right side of Figure 2.5), and the hole traps effectively slow down the
hole transport. Because the whole layer doped with hole traps, the recombination
between trapped holes and free electrons still take place near the cathode.
The right side of Figure 2.7 shows the device performance in a situation where
the 20 nm in the middle of the layer is heavily doped with hole traps ( ) and
the rest of the layer is doped with a hole trap concentration . Doping hole
traps heavily in the middle can effectively move the recombination zone between
trapped holes and free electrons away from the cathode. If the recombination between
the trapped holes and free electrons can emit photons efficiently, we can achieve a
high efficiency by reducing the electrode quenching. We can increase the amplitude
of recombination between trapped holes and free electrons by increasing the hole trap
concentration and/or hole trap energy. Furthermore, we can choose to heavily dope
the region where cavity effect can be magnified.
33
Figure 2.7. Distribution of the hole trap concentration, the charge carrier density, the
electric field, the recombination between free holes and free electrons, and the
recombination between trapped holes and free electrons in single layer OLED
devices under current density of 100 mA/cm2. Left panel has hole trap concentration
across the whole layer. Right panel has hole trap concentration
for the 20 nm in the middle of the layer, and for the rest.
34
Figure 2.8 (a) compares the recombination efficiency
(J_Recombination/J_Injection) of the three devices with unbalanced mobilities (µp:
µn=100:1) we have simulated so far:
Device No-Trap: single layer OLED device without hole traps.
Device Uniform-Trap: hole trap concentration across the whole layer
Device Middle-Heavy-Trap: hole trap concentration for the 20 nm in
the middle of the layer, and for the rest.
The recombination in devices with hole traps combining the recombination of free
holes and trapped hole together. Clearly, both devices with hole traps improve the
recombination efficiency by slowing down the hole transport and achieve a better
balance between the hole transport and electron transport [53, 58].
Figure 2.8 (b) compares the normalized recombination zone of the three devices.
Wider recombination zone is achieved through more balanced charge carrier transport
in devices with hole traps. By heavily doping the middle layer, we have observed a
slightly more recombination in the middle of the layer.
35
Figure 2.8.(a) Recombination efficiency and (b) normalized recombination zone
at100 mA/cm2 for single layer OLED devices with and without hole traps.
(b)
(a)
36
In conclusion, doping the bipolar transport material with hole (or electron) traps
provide an approach to control the recombination zone and improve the device
performance. However, the traps will severely increase the drive voltage of the device
which should be considered before applying the method. Figure 2.9 compares the J-V
curves of the three single layer OLED devices with and without hole traps. As shown
in the figure, doping the layer with hole traps dramatically increases the drive voltage.
Figure 2.9. Simulated J-V curves for single layer OLED devices with and without
hole traps.
0 1 2 3 4 5
1
10
100
J(m
A/c
m2)
Voltage (V)
No-Trap
Uniform-Trap
Middle-Heavty-Trap
37
Chapter 3
Simulation of Multilayer Organic Light-
Emitting Diodes
As we mentioned in the previous chapter, single layer OLED devices are usually
not efficient due to unbalanced charge carrier transport and electrode quenching of
the recombination. In 1987, Tang et al. [1] introduced the bilayer heterojunction
structure in OLEDs, which effectively increase the efficiency of organic EL devices.
Since then, the heterojunction structure has been widely used in OLED devices and
layers with more complicated function have been introduced [2, 4-9]. To study
OLEDs with such multilayer structures, we would need to extend the model that we
used in single layer devices
3.1 Interfaces between organic layers
3.1.1 Charge carrier transport across organic interfaces
The most important characteristic of OLED devices is the multilayer structure
where each layer has different HOMO (highest occupied molecular orbital)/LUMO
(lowest unoccupied molecular orbital) levels and hole/electron mobilities. When holes
(electrons) arrive at the interface between two adjacent organic layers, they may face
the energy barrier generated by the HOMO (LUMO) level difference between the
38
layers. In this case, a pre-factor of
is usually multiplied to the drift current
and diffusion current to represent the energy barrier effect. Some other factors have
been introduced for the crossing interface transport; the geometric average [25] of the
mobilities on both sides of the interface is used as the crossing interface mobility; the
energy disorder of organic materials should be considered which can effectively
lower the real energy barrier for charge carriers to jump over [18].
Figure 3.1 shows the diagram of the hole transport across the HTL/ETL
interface. The crossing interface drift current can be calculated through the following
equations
, int , ,* * * ( )p cross HTL p HTL p ETLJ e p E G E (3.1)
, , int *HOMO HTL HOMO ETL mE E E E d (3.2)
2 2
( ) * *exp( )*exp( )2 2
1, ( )
( )exp( ), ( )
HTL ETLHTL ETL
HTL ETL
ETL HTL
ETL HTLETL HTL
x xG E const dx dx
if x x E
E x xif x x E
kT
(3.3)
where
,p crossJ : crossing interface drift current of holes
e : elementary charge
HTLp : hole density on the HTL side
39
intE : electric field at the HTL/ETL interface
,p HTL : hole mobility on the HTL side
,p ETL : hole mobility on the ETL side
( )G E : the pre-factor considering the energy barrier for holes
E : effective energy barrier blocking holes
md : molecule diameter, which is also the monolayer thickness
,HOMO HTLE : HOMO level of the HTL
,HOMO ETLE : HOMO level of the ETL
const : constant given by meeting the condition G(0)=1
HTL : energy width of the HTL
ETL : energy width of the ETL
k : Boltzmann constant
T : temperature
The electron transport across the interface is calculated in a similar way except that
the LUMO level difference should be used to calculate the energy barrier.
40
3.1.2 Cross interface recombination
For OLEDs with multilayer structure, holes will accumulate at one side of the
interface while electrons will accumulate on the other side. The cross interface
recombination in this case needs to be treated correctly. The Langevin recombination
rate [48] is used for bulk recombination of holes and electrons. The intuitive way to
calculate the cross interface recombination is to use the sum of the hole mobility on
one side of the interface (e.g. HTL) and the electron mobility on the other side of the
interface (e.g. ETL). Cross interface recombination of holes on the HTL side and
electrons on the ETL side can be calculated as
, ,
0
*)( *n ETL p HTLcross E TL
r
HTL
en pR
(3.4)
Figure 3.1. Diagram of the hole transport across the HTL/ETL interface.
41
where crossR is the cross interface recombination rate, e is the elementary charge, r
and 0 are the relative and vacuum dielectric constant, ,n ETL is the electron mobility
of the ETL, ETLn is the electron density on the ETL side of the interface, ,p HTL is the
hole mobility of the HTL, and HTLp is the hole density on the HTL side of the
interface. However, Blom et al. proposed that the smaller value of the two
mobilities( ,n ETL and ,p HTL ) should be used to calculate the cross interface
recombination rate [59], the same treatment has been adopted in this thesis
, ,
0
*m , )in( * *n ETL p HTLcross H
r
TE LTL
en pR
(3.5)
Only part of the excitons generated through the cross interface recombination can
transform to bulk excitons and emit photons [18]. Since the interface excitons have
lower energy than bulk excitons, the probability of forming bulk excitons after cross
interface recombination is assumed to be
or
,
depending on which side the bulk excitons locate. However, exciplex formed at the
strong donor/acceptor interface can emit by themselves, which has been observed in
OLED devices [17, 60, 61].
3.2 Exciton diffusion, decay and quenching
Excitons are formed when electrons and holes recombine with each other. The
following equation describes the exciton diffusion, decay and quenching
42
2
2( )* * ( )*spin X quenching
X X XR x F D k x X
t x
(3.6)
where X is the exciton density, is the recombination rate, spinF is the factor for
spin statistics, which is assumed to be 25% for singlet and 75% for triplet, is the
exciton lifetime due to radiative decay and non-radiative decay, the ratio of radiative
decay rate over total decay rate is the quantum yield of the material, is the
diffusion constant for excitons, and ( )quenchingk x is the quenching rate of excitons.
3.3 Quenching by charge carriers in OLEDs
3.3.1 Effect of the hole injection layer on the drive voltage of OLEDs
The basic OLED device has a bi-layer organic thin-film structure such as
ITO/NPB/Alq/LiF/Al, where indium-tin-oxide (ITO) is the anode and LiF/Al is the
cathode, and NPB(4,4'-bis[N-(1-naphthyl)-N-phenylamino]biphenyl) and Alq (tris(8-
quinolinolato)aluminum) are the hole-transport layer (HTL) and electron-transport
layer (ETL), respectively. Meanwhile, Alq also acts as an EML in the device. It has
been shown that much improved OLED performance can be realized using a
HIL/HTL structure where HIL is the “hole-injection” layer inserted between the
anode and the HTL. For example, with CuPc [62] as the HIL as in CuPc/NPB/Alq
where Alq also functions as the emissive layer, long-lived OLEDs have been obtained.
Another common HIL material is MTDATA(4,4',4''-tris[N-(3-methylphenyl)-N-
phenylamino]triphenylamine) [63], with which enhanced current efficiency and
43
operational stability have been demonstrated. High-efficiency OLEDs have also been
reported in various HIL/HTL configurations [64-68].
To systematically study the effect of the HIL on OLED devices, we have made a
series of OLED devices. Figure 3.2 shows the multilayer OLED structure and the
molecular structures for the HIL (MTDATA), HTL (NPB) and ETL (Alq). The
OLED devices share a common structure of ITO/MTDATA(70-d nm)/NPB(d
nm)/Alq(70 nm)/LiF/Al where the NPB layer thickness (d) varies from 0 nm to 70 nm.
All devices were fabricated and measured in Eastman Kodak Company by my
colleague Kevin Klubek [17].
Figure 3.3 shows the experimental (symbols) and simulated (solid curves) current
density versus voltage (J-V) characteristics for the series of OLED devices. Bilayer
devices with NPB (d=70 nm) and MTDATA (d=0 nm) as the single HTL,
respectively, have a lower drive voltage compared to trilayer devices (d=5 nm, 25 nm,
45 nm and 65 nm). Furthermore, the drive voltage for trilayer devices increases as the
thickness of the NPB layer increases. The trend of the voltage shift was reproduced
very well in the simulation with the input parameters shown in Table 3.1 [18, 69-72].
However, at low current density, the simulated drive voltages are lower than the
experimental ones. The deviation may arise from the overestimation of the hole
mobility of the NPB layer, especially at the low electric field region.
44
Table 3.1. Input parameters used in the simulation of MTDATA/NPB/Alq OLEDs.
MTDATA NPB Alq
HOMO (eV) -5.1 -5.5 -5.7
LUMO (eV) -1.9 -2.4 -3.1
p0 (cm2/(Vs)) 7.0*10
-6 2.0*10
-4 1.5*10
-9
p (cm1/2
/V1/2
) 3.0*10-3
2.0*10-3
3.0*10-3
n0 (cm2/(Vs)) 7.0*10
-8 2.0*10
-6 1.5*10
-7
n (cm1/2
/V1/2
) 3.0*10-3
2.0*10-3
3.0*10-3
energy width (eV) 0.06 0.03 0.06
Figure 3.2. Structure of MTDATA/NPB/Alq OLEDs and materials used. HOMO
energy level: MTDATA (-5.1eV), NPB (-5.5eV), Alq (-5.7eV). d is the variable
thickness of the NPB layer.
45
Figure 3.4 shows the detailed information of the bilayer (left) and trilayer (right)
devices from the simulation including the charge carrier density, electric field and
recombination distribution. In bilayer devices, since the hole mobility in NPB is much
higher than the electron mobility in Alq, the voltage drop in NPB is negligible
comparing to the one in Alq. In trilayer devices, the HOMO level offset between
MTDATA and NPB presents an energy barrier for the hole transport. As a result, the
holes accumulated at the MTDATA/NPB interface will generate a strong electric
field in the NPB layer and increase the device drive voltage. Furthermore, increasing
the NPB layer thickness will increase the voltage drop across the NPB layer and the
Figure 3.3. Experimental (symbols) and simulated (solid curves) J-V curves for
MTDATA/NPB/Alq devices with variable NPB layer thickness.
NPB 70nm
MTDATA 70nm
MTDATA 65nm/ NPB 5nm
MTDATA 45nm/ NPB 25nm
MTDATA 25nm/ NPB 45nm
MTDATA 5nm / NPB 65nm
2 4 6 8 10 12 14 16 18
0.1
1
10
100
Voltage (V)
J (
mA
/cm
2)
46
device drive voltage as well. This explains the voltage shift that we have observed for
trilayer devices in Figure 3.3.
Figure 3.4 also shows the hole density at the NPB/Alq interface in bilayer and
trilayer devices. In trilayer devices, the HOMO offset at MTDATA/NPB interface
effectively block the holes. As a consequence, the hole density at the NPB/Alq
interface is less than that in bilayer devices. The reduced hole density, and hence the
reduced charge carrier quenching, increases the device efficiency as we will see in the
next section.
47
Figure 3.4. The energy level diagram and the distribution of the charge carrier
density, the electric field, and the recombination at 80 mA/cm2 in the bilayer (left
side) and trilayer (right side) devices.
48
3.3.2 Effect of the hole injection layer on the device efficiency of OLEDs
Figure 3.5 shows the experimental (symbols) and simulated (solid curves) device
efficiency of the series of MTDATA/NPB/Alq OLEDs. The low efficiency for
device MTDATA (70 nm)/ Alq(70 nm) has been attributed to the formation of
exciplexes [73, 74], at the MTDATA/Alq interface, where the EL emission quantum
yield is controlled by the exciplex emission with a lower quantum yield than Alq.
The NPB/Alq device has a higher efficiency than the MTDATA/Alq device. This can
be attributed to the lack of exciplex formation, which is consistent with NPB being a
weaker donor compared to MTDATA.
Figure 3.5. Experimental (symbols) and simulated (solid curves) external
quantum efficiency versus current density for the series of MTDATA/NPB/Alq
devices with variable NPB layer thickness.
0 20 40 60 80
J (mA/cm2)
NPB 70nm
MTDATA 70nm
MTDATA 65nm/ NPB 5nm
MTDATA 45nm/ NPB 25nm
MTDATA 25nm/ NPB 45nm
MTDATA 5nm / NPB 65nm
0.0
0.5
1.0
1.5
2.0
2.5
Exte
rnal Q
uantu
m E
ffic
iency (
%)
49
The device efficiency in the tri-layer devices is substantially improved over
NPB/Alq bi-layer device despite the fact that they have in common the NPB/Alq
interface. It has been reported that charge quenching can play a significant role in
determining the current efficiency of EL devices under various device configurations
and drive conditions [75-77]. It has been suggested that exciton quenching at the
NPB/Alq interface due to the accumulation of NPB+ radical cations [78, 79] at the
interface largely determines the current efficiency.
We used the NPB+ radical cation quenching to explain that all trilayer devices
have the same efficiency that is higher than that of bilayer devices. Recombination
taken place near the NPB/Alq interface can be quenched by the accumulated NPB+
radical cations. The simulation results in Figure 3.4 shows that the trilayer structure
can dramatically reduce the hole density at the NPB/Alq interface and hence improve
the efficiency of the device.
To quantitatively simulate the device efficiency, we need to come up with a
correct model to calculate the charge carrier quenching. Forster energy transfer [80-
82] is widely used to describe the charge carrier quenching in OLEDs, where the
exciton energy is transferred to the quenching centers (NPB+ radical cations in this
case). Forster energy transfer rate can be calculated by the following equation
6
0transfer f 6
Rk k
r (3.7)
50
where is the Forster energy transfer rate, is the decay rate of the exciton,
R0 is the Forster distance and r is the distance between the exciton and the quenching
center. Equation 3.7 only calculates the quenching rate due to a single quenching
center, whereas in OLED devices, lots of charge carriers (quenching centers) are
present. In the model, we have divided the organic layer into many mono-layers, each
of which has an infinite area. With the charge carrier density we have simulated for
each monolayer, we can calculate the effective quenching rate of the charge carriers
in the monolayer through surface integration. For example, given a monolayer with
thickness dm, the distance between the monolayer and exciton is d. The charge carrier
density in the monolayer is , and charge carriers are assumed to be uniformly
distributed in the monolayer. Then the effective quenching rate due to the charge
carriers in the monolayer is
6 6
0 f 0transfer f 42 2 60
R πρ k Rk k (ρ )2π
2d( d +r )( ) m
m
dd rdrd
(3.8)
Equation 3.8 demonstrates that the quenching effect of the charge carriers decreases
quickly as the distance between the charge carrier (mono-layer) and the exciton
increases. The total quenching rate is the sum of the quenching rates of all
monolayers.
In addition to the charge carrier quenching, we notice that the device efficiency
in our cells increases as the current density (drive voltage) increases. At first we
proposed that under high current density, the recombination zone shift further into the
51
ETL (Alq) layer and away from the NPB radical cations, which give a higher
efficiency to the device. However, the simulation shows that the recombination zone
doesn’t change much under different current densities. To capture this device
efficiency increasing phenomenon, we refer to the cross interface recombination.
When holes in the NPB layer recombine with electrons in the Alq layer across the
interface, interface excitons are formed. They transform to bulk excitons and emit
photons. The energy mismatch between interface excitons and bulk excitons presents
an energy barrier for the transformation, and hence reduces the efficiency. Under high
current density, the electric field across the NPB/Alq interface is high, which make
the cross interface transport of holes easier. Consequently, a big portion of the holes
transport across the interface and recombine with the electrons on the Alq side, and
form bulk excitons directly. Our simulation shows that, the ratio of bulk
recombination over total recombination increases as the current density increases,
which would result in a higher efficiency in devices at higher current density.
Meanwhile, the charge carrier densities ( e.g. NPB+ radical cations) increases as the
current density increases, which causes a more severe quenching effect and reduces
the efficiency at high current density. Figure 3.5 shows the simulated (solid curves)
quantum efficiency that include both the charge carrier quenching effect and the cross
interface recombination effect. The Forster distance R0=3 nm is used as input
parameter for all devices to control the quenching effect.
To scale the efficiency and fit the external quantum efficiency of the device, we
have assumed that the Alq quantum yield is 0.4. Only singlet excitons (25% of total
52
excitons generated) contribute to the radiative emission, and the light out coupling
efficiency is 25%. For MTDATA/Alq bilayer device, the large HOMO level
difference between MTDATA (-5.1 eV) and Alq (-5.7 eV) will effectively block the
holes at the interface. Cross interface recombination and exciplex emission dominate
even at higher current density. The exciplex emission is assumed to have a lower
quantum yield. The deviation between the simulated and experimental results is
probably due to the overestimation of the cross interface recombination rate,
especially at low current density region. A deeper understanding of the cross interface
recombination is an area of interest for future study.
3.4 Mixed host OLEDs
After investigating the bilayer and trilayer OLEDs, we are interested to expand
our model to investigate the mixed host OLEDs. Mixed host OLEDs are devices that
have hole transport material and electron transport material mixed together in the
EML. They provide a new approach to improving device lifetime [10, 83-86].
3.4.1 Parameter assumptions for the mixed host layer
To model the mixed host OLEDs, the first problem that arises is how to set the
parameters for the mixed host layer. The parameters that need to be defined for the
materials are energy levels and mobilities. Usually mixed host contains two type of
materials, hole transport and electron transport materials. The design is very similar to
the bulk heterojunction structure in organic photovoltaic devices (OPVs) where donor
and acceptor materials are mixed together. Therefore, we apply the energy level
53
treatment for bulk heterojunction OPV [87] to the mixed host OLEDs. The HOMO of
the mixed host is assumed to be the HOMO of the hole transport material, while the
LUMO of the mixed host is assumed to be the LUMO of the electron transport
material. For the bipolar mobilities in the mixed host, there is no unified model to
describe. However, it is reasonable to assume that the mobilities should lie between
the mobilities of each material. Some experimental results [88] of the mixed host
mobilities show a power dependence on the concentration of the components.
Therefore, we use the following equations to calculate the mobilities for the mixed
host layer
HTM HTMC 1 C
mix,p HTM,p ETM,pμ μ μ (3.9)
HTM HTMC 1 C
mix,n HTM,n ETM,nμ μ μ (3.10)
where is the hole (electron) mobility of the mixed host layer, is
the hole (electron) mobility of the hole transport material and is the hole
(electron) mobility of the electron transport material. After defining the energy level
and mobilities of the mixed host layer, we can simulate the device performance and
analyze the numerical results.
3.4.2 Recombination zone in mixed host OLEDs
To investigate the performance of the mixed host OLEDs, we use two
hypothetical materials in the simulation. Table 3.2 lists the energy level and
mobilities of the hole transport material (HTM) and the electron transport material
54
(ETM) that we used for simulation. We set the hole transport property of the HTM at
a same level as the electron transport property of the ETM. The HOMO offset is the
same as the LUMO offset between the two materials.
Table 3.2. Input parameters used in the simulation of mixed host OLEDs.
By changing the percentage of the HTM in the mixed host from 20% to 80%,
we can generate mixed host material with different transport property as shown in
Table 3.2. All mixed OLEDs in the simulation shares the same structure of
ITO/HTM(20 nm)/Mixed host(100 nm)/ ETM(20 nm)/LiF/Al. Three uniformly
mixed host OLEDs are simulated with various hole concentration in the mixed layer
(20%, 50% and 80%). In additional to the uniformly mixed host OLEDs, we also
simulated a mixed host device with graded concentration [11, 84, 89, 90]. The HTM
concentration decrease from 80% (near the HTM/Mixed host interface) to 20% (near
HIM HTM ETM Mixed host
CHTM=20%
Mixed host
CHTM=50%
Mixed host
CHTM=80%
HOMO (eV) -5.2 -5.5 -5.7 -5.5 -5.5 -5.5
LUMO (eV) -1.9 -2.9 -3.1 -3.1 -3.1 -3.1
p0 (cm2/(Vs) 2.0*10
-4 2.0*10
-4 2.0*10
-6 5.023*10
-6 2.0*10
-5 7.962 *10
-5
p0 (cm1/2
/V1/2
) 2.0*10-3
2.0*10-3
2.0*10-3
2.0*10-3
2.0*10-3 2.0*10
-3
n0 (cm2/(Vs) 2.0*10
-6 2.0*10
-6 2.0*10
-4 7.962*10
-5 2.0*10
-5 5.023*10
-6
n0 (cm1/2
/V1/2
) 2.0*10-3
2.0*10-3
2.0*10-3
2.0*10-3
2.0*10-3
2.0*10-3
energy width (eV) 0 0 0 0 0 0
55
the Mixed host/ETM interface). For comparison, we also simulate the bilayer and
trilayer devices with the same material. A hole injection material (HIM) that has
higher HOMO level than the HTM is used. The mobility of the HIM is set to be the
same as the mobility of the HTM as shown in Table 3.2. Detailed device structures
are listed below,
Device Bilayer: ITO/ HTM (70 nm)/ ETM (70 nm)/LiF/Al
Device Trilayer: ITO/HIM (20 nm)/HTM (50 nm)/ ETM (70 nm)/LiF/Al
Device UM-H20: ITO/HTM (20 nm)/Mixed host (20% HTM, 100nm)/ETM (20 nm)/
LiF/Al
Device UM-H50: ITO/HTM (20 nm)/Mixed host (50% HTM, 100nm)/ETM (20 nm)/
LiF/Al
Device UM-H80: ITO/HTM (20 nm)/Mixed host (80% HTM, 100nm)/ETM (20 nm)/
LiF/Al
Device Graded: ITO/HTM (20 nm)/Mixed host (80% HTM, 30 nm)/Mixed host (50%
HTM, 40 nm)/Mixed host (20% HTM, 30 nm)/ETM (20 nm)/ LiF/Al
56
Figure 3.6 shows the simulated J-V curve of the OLED devices, and the drive
voltage can be summarized as, Device Bilayer < Device Graded < Device UM-20 =
Device UM-H80 < Device UM-50 < Device Trilayer.
Device Bilayer has the lowest drive voltage because the HTM and the ETM have
good transport property for holes and electrons, respectively. However, at low current
density, the drive voltage of Device Bilayer is higher than the mixed host OLEDs due
to the sharp energy barrier at the HTM/ETM interface. All mixed host OLEDs blur
the interface barriers with the mixed material.
By breaking the EML into three different zones with different HTM
concentration, Device Graded can utilize the transport advantage of holes on the
Figure 3.6. Simulated J-V curves for bilayer, trilayer, uniformly mixed host
and graded mixed host OLED devices.
2 3 4 5 6 7 8
0.1
1
10
100
J(m
A/c
m2)
Voltage (V)
Bilayer
Trilayer
UM-H20
UM-H50
UM-H80
Graded
57
HTM side and electron transport on the ETM side. Therefore, the drive voltage is still
low.
Device UM-H20 has higher drive voltage, since the mixed host with 20% HTM
(which means 80% ETM) favors the electron transport. However, the electron
mobility in the mixed host is lower than the pure ETM, which causes a higher voltage
drop in the EML. Device UM-H80 and Device UM-H20 have exactly the same J-V
curve since they are symmetric devices. Device UM-H80 has good hole transport
property, while Device UM-20 has good electron transport property.
Device UM-H50 has balanced hole and electron mobilities, but both of them are
relatively low. Thus, Device UM-H50 requires a higher drive voltage than Device
UM-H20 and Device UM-H80. Device Trilayer has the highest drive voltage due to
the same HIL effect that we discussed in previous sections. The holes accumulate at
the HIM/HTM interface cause a strong electric field in the HTM and increase the
overall drive voltage.
Figure 3.7 shows the charge carrier density and recombination distribution of all
devices. Bilayer and trilayer devices have similar characteristics as we saw in the
previous section. Device UM-20 has better electron transport property, which pushes
the electrons to the HTM/Mixed host interface, where most recombination takes place.
On contrast, Device UM-H80, with a good hole transport property, pushes the holes
and recombination zone to the Mixed host/ETM interface. The recombination zone in
Device UM-20 and Device UM-H80 is wider than in Device Bilayer, but most of the
58
recombination still takes place near the interface, which might be quenched by the
accumulated charge carriers. Device UM-50 has a balanced hole and electron
mobility in the mixed layer, which effectively balances the hole and electron transport.
Both type of charge carriers are widely distributed in the mixed layer. A well
expanded recombination zone is also obtained.
Device Graded also generate a relative balanced charge carrier distribution and
recombination zone with the help of graded structure. Device Graded has multiple
interfaces. Each of them can block certain amount of charge carriers and effectively
distribute the charge carriers across the whole graded mixed layer. We can introduce
more steps/interfaces to magnify the effect and further expand the recombination
zone.
59
Figure 3.7. The charge carrier density and recombination zone distribution in
various OLED devices: (a) Bilayer; (b) Trilayer; (c) UM-H20; (d) UM-H50; (e)
UM-H80 and (f) Graded.
(a)
(b)
(c)
(d)
(e)
(f)
60
3.4.3 Quenching by charge carriers in mixed host OLEDs
It is worthwhile to apply the charge carrier quenching effect in our previous
discussion to the mixed host OLEDs to see which device structure provides the best
quantum efficiency. Here I ignore the cross interface recombination effect and focus
only on the charge carrier quenching.
Figure 3.8 shows the efficiency curve for all devices assuming only the radical
cations can quench the emission. Device Bilayer has the lowest quantum efficiency
since the narrow recombination zone is close to the hole accumulation region, as
evident from Figure 3.7. Devices UM-20, UM-50 and UM-80 improve the efficiency
by expanding the recombination zone. Device UM-80 has the highest efficiency
among the three uniformly mixed host devices, because the recombination takes place
near the electron accumulation zone and we have assumed that only radical cations
can quench the emission, not anions. The quantum efficiency of Device Graded is
very close the Device UM-50 due to the similar distribution of charge carriers and
recombination zone. It is interesting to see that Device Trilayer still has the highest
quantum efficiency due to the effectively separation of recombination zone and the
hole accumulation region. All efficiency curves decreases as the current density
increases because of the increased charge carrier density under higher current
densities, and hence the increased charge carrier quenching.
After comparing the performance of all different devices, we can conclude that
high efficiency can only be achieved when quenching effect is deminished. If we can
61
identify the quenching mechanism or quenching species, we should design the device
structure to effectively move the recombination zone away from the quenching
centers. Consequently, we can obtain a high device efficiency. The ratio between the
hole transport material and the electron transport material in the mixed host layer
plays a significant role in determining the device performance.
It has been said that expanded recombination zone can improve the lifetime [10,
83, 84] of OLED devices. A uniform mixed host with balanced hole and electron
mobilities can do the best job based on our simulation. However, in the real world,
the mobilities of the hole transport material and the electron transport material vary a
lot. Thus, finding the best mixed ratio that provides the balanced hole and electron
mobilities could be difficult, the simulation also proves that a graded junction
Figure 3.8. Simulated quantum efficiency of bilayer, trilayer, uniformly mixed host
and graded mixed host OLED devices.
62
structure can effectively expand the recombination zone, which could be a good
solution to apply in the device especially when mobilities of the materials are
unknown.
3.5 Photon extraction
In OLEDs, photons are generated through the radiative decay of excitons.
However, the photon extraction from the devices is complicated due to the cavity
effect. Most OLED devices have multilayer structures. The thickness of organic
layers and electrodes (10 nm-200 nm) is less than the wavelength of visible light (380
nm-780 nm). Meanwhile, one electrode is usually designed to be reflective to
improve the light collection on the other side. Thus, multiple reflections and
transmissions that take place in the device will modulate the light emission of OLED
devices. Meanwhile, the cavity structure also alters the radiative decay rate of the
excitons [91-94].
The cavity effect in OLED causes the angular dependence of the emission
characteristics. The luminance drop and color shift at high viewing angles are
important especially when applying the OLED technology in display panels. By
tuning the device structure, people can improve the color quality and increase the out-
coupling efficiency. Neyts et al. [92, 93] have proposed the cavity model for OLED
devices, where they quantitatively calculated the dipole emission in cavity structure.
We have rebuilt the model and improved the simulation efficiency with the help of
Gaussian quadrature technique [95]. The model will be first briefly introduced.
63
Several common cavity effects in OLEDs are tested including the light mode
decomposition in OLEDs, comparison between weak cavity and strong cavity OLEDs,
and the layer thickness dependence in OLEDs.
3.5.1 Cavity model for OLEDs
OLED emission comes from the random oriented dipoles in a multilayer cavity
structure. Since any specific oriented dipole can be decomposed into the vertically
oriented dipole (dipole moment perpendicular to the OLED surface) and horizontally
oriented dipole (dipole moment parallel to the OLED surface), we first investigate the
emission characteristics from these two special oriented dipoles. The emission light
with different polarizations, Transverse Electric (TE) wave and Transverse Magnetic
(TM) wave, need to be calculated separately since the transmission and reflection
coefficient depends on the light polarization.
The typical multilayer cavity structure of OLED devices is shown in Figure 3.9,
assuming the direction perpendicular to the OLED surface is the z-axis. The dipole
(exciton) locates in the emissive layer, with optical refractive index ne and thickness
de. The half-infinite media surrounding the OLED structure has optical refractive
indexes of n+ and n-, respectively. Several intermediate layers stand between the
emissive layer and outside media and introduce multiple interfaces. The reflection
and transmission of light at the internal interfaces are the main reason of the cavity
effect in OLED. As we will see later, the cavity effect of OLED depends on the exact
64
location of the dipole in the emissive layer, which is defined by the distance between
the dipole and the nearest interfaces z+ and z-, respectively, where z++z-=de.
Dipoles can emit light into all directions, and the direction of the light can be
identified with the wave vector ke, as shown in Figure 3.9, or more conveniently, with
the in-plane projection value κ. The advantages of using κ to represent the light
Figure 3.9. The schematic multilayer structure for the cavity model, where dipole
located in the ne layer with thickness de. The distance between the dipole and the
nearest interfaces on both sides are z+ and z- respectively. The half-infinite media
surrounding the OLED structure has optical refractive indexes n+ and n-, respectively.
One or more intermediate layers stand between the emissive layer and the outside
media. Any light with specific direction can be identified with the wave vector ke,
which can be decomposed into the in-plane projection κ and the z-axis projection kz,e.
65
direction includes (1) κ remains constant at all layers, and (2) κ can be used to
identify the modes of the light as we will see in the next section. The z-axis projection
of the wave vector kze is calculated as
2 2
z,e ek k κ (3.11)
With the optical refractive index of each layer, we can calculate the reflection and
transmission coefficient at each interface for the TM wave and TE wave, assuming
light inject from the ith
layer with the refractive index ni to the i+1th
layer with the
refractive index ni+1, the reflection and transmission coefficient is calculated as
z,i z,i 1
2 2TM i i 1i i 1
z,i z,i 1
2 2
i i 1
k k
n nr
k k
n n
(3.12)
z,i
2TM ii i 1
z,i z,i 1
2 2
i i 1
k2
nt
k k
n n
(3.13)
z,i z,i 1TE
i i 1
z,i z,i 1
k kr
k k
(3.14)
z,iTE
i i 1
z,i z,i 1
2 kt
k k
(3.15)
66
where TM
i i 1r and TE
i i 1r are the reflection coefficient for the TM wave and TE wave,
respectively, TM
i i 1t and TE
i i 1t are the transmission coefficient at the interface, z,ik and
z,i+1k are the z-axis projection of wave vectors in the ith
layer and the i+1th
layer,
respectively. Having the thickness of each layer, we can calculate the effective
reflection and transmission coefficient, from the ith
layer to the i+2th
layer, assuming
that the i+1th
layer stands between them with the thickness di+1,
i i 1 i 1 i 2 z,i 1 i 1
i i 2
i i 1 i 1 i 2 z,i 1 i 1
r r exp(2*j*k *d )r
1 r *r exp(2*j*k *d )
(3.16)
i i 1 i 1 i 2 z,i 1 i 1
i i 2
i i 1 i 1 i 2 z,i 1 i 1
t *t *exp( j*k *d )t
1 r *r *exp(2*j*k *d )
(3.17)
where j is the imaginary unit. By applying the equation above iteratively, we can
calculate the effective reflection and transmission coefficient from the emissive layer
to the outside media: , . Then, we can calculate the light
emission (both TM wave and TE wave) of the two basic dipoles, vertically oriented
and horizontally oriented. Neyes et al. [92, 93] has calculated the power density K of
the light emission from the basic dipoles as below
TM TM2
TM
3 TM
e z,e
1 α (1 α )3 κK *Re[ * ]
4 k *k 1 α
(3.18)
TEK 0 (3.19)
67
TM TM
z,eTM
3 TM
e
1 α (1 α )k3K *Re[ * ]
8 k 1 α
(3.20)
TE TE
TE
TE
e z,e
1 α (1 α )3 1K *Re[ * ]
8 k *k 1 α
(3.21)
where
TM,TE TM,TE
e z,eα r *exp(2*j*k *z ) (3.22)
TM,TE TM,TE
e z,eα r *exp(2*j*k *z ) (3.23)
TM,TE TM,TE TM,TEα α *α (3.24)
TMK and TEK are the power densities of the TM wave and TE wave emitted from the
dipole with a dipole moment perpendicular to the OLED plane, TMK and
TEK are the
power densities of the TM wave and the TE wave emitted from the dipole with a
dipole moment parallel to the OLED plane. The power density of out-coupling light
into the n+ media is calculated as,
2TM 22
2 z,TM TM e, , e3 2TM2
e z,e z,e
1 α kn3 κ 1K * * * * t * *
4 k *k 2 n k1 αT
(3.25)
TE
,T,K 0 (3.26)
68
2TM 2
2z,e z,TM TM e,T, e3 2TM2
e z,e
1 αk kn3 1K * * * * t * *
8 k 2 n k1 α
(3.27)
2TE
2 z,TE TE
,T, eTE2e z,e z,e
1 α k3 1K * * * t *
8 k *k k1 α
(3.28)
The angular distribution of the light power density in the n+ media can be
calculated as
2
,T
k *cos(θ)P θ *K (κ k *sin(θ))
π
(3.29)
where θ is the angle between the light direction and the z-axis in the n+ media, and k+
is the absolute value of the wave vector in the n+ media.
All the above equations are used to calculate the light for the two basic
oriented dipoles, considering the contribution of a set of random oriented incoherent
dipoles, the power density of light emitted is calculated as
TM TM TM
RND
1 2K K K
3 3 (3.30)
TE TE TE
RND
1 2K K K
3 3 (3.31)
The out-coupling light into the n+ media from random oriented dipoles follows
similar equations
69
TM TM TM
+,T,RND , , , ,
1 2K K K
3 3T T (3.32)
TE TE TE
+,T,RND , , , ,
1 2K K K
3 3T T (3.33)
Exciton can decay radiatively or non-radiatively in the device. Assuming that
the radiative decay rate and non-radiative decay rate in infinite media are and ,
respectively, the radiative efficiency in infinite media is . When dipole is
located in a micro cavity structure, the cavity can affect the radiative decay rate of the
exciton but not the non-radiative one [91-94]. The new radiative efficiency in the
cavity is calculated as
rrad
r nr
F*Γη
F*Γ Γ
(3.34)
2
0
F K κ dκ
(3.35)
where K(κ) is the power density we calculated from equation 3.25 -3.31. The out-
coupling efficiency into the n+ media is calculated as
k2
,T0
2
0
K κ dκ
K κ dκoutcoupling efficiency
(3.36)
where k+ is the absolute value of the wave vector in the n+ media. Notice that we only
integrate the out-coupling light from κ=0 to κ=k+, since any light with κ> k+ is not
able to escape into the outside media due to the total internal reflection. Using
70
Gaussian quadrature technique and consider the integration in the complex plane can
effectively reduce the simulation time [95].
For most bottom emission OLED devices, light emitted from the organic layer
enters into the glass substrate first, then into the air. The thickness of substrate is
around 1 mm, which is several orders larger than the wavelength of visible light (380
nm-780 nm). Thus, the substrate should not be considered as part of the micro cavity.
Therefore, in a cavity model, we treat the substrate as an infinite medium and
calculate the power density of light into the substrate first. To calculate the light out-
coupling from the substrate into the air, we consider the multiple reflections of light
at the substrate/air interface and at the substrate/OLED interface as shown in Figure
3.10. Meanwhile, the direction of light in substrate and air is different due to the
different optical refractive indexes. Thus, the angular distribution of the light output
in air is calculated as
2
air air substrate airair substrate 2
substrate substrate substrate air substrate OLED
n cos(θ ) TP θ P θ * * *
n cos(θ ) 1 R *R
(3.37)
air air substrate substraten *sin θ n *sin θ (3.38)
where and is the angle between the light and the z-axis (normal to
OLED plane) in the air and substrate, respectively, and are the
angular distribution of light power density in the air and substrate, and
are the optical refractive indexes of the air and substrate, and
are the power reflection and transmission coefficient for light injection
71
from the substrate into the air, is the power reflection coefficient for
light injection from the substrate into the OLED stack, which effectively considers
the multi-layer structure of the OLED already.
Both the reflection and transmission coefficient are wavelength dependent.
Thus to calculate the OLED electroluminescence spectrum, we need to calculate the
cavity effect for each wavelength, and multiply the results with the
photoluminescence spectrum of the emitters. Furthermore, the light emission from the
excitons located in the cavity depends on the exciton location. Excitons at different
Figure 3.10. The illustration of the light out-coupling from the substrate into the
air. and are the power transmission and reflection
coefficient for light injection from the substrate into the air. is
the power reflection coefficient for light injection from the substrate into the OLED
stack, which effectively considers the multi-layer structure of the OLED already.
72
locations are assumed to be incoherently correlated with each other. Thus in the
model, we calculate the light output from all emitters/excitons separately and sum the
light output from all emitters together.
3.5.2 Mode decomposition of the dipole emission in OLEDs
The out-coupling efficiency of typical OLED is still low (around 20% to 30%
without any out-coupling technique) due to the high optical refractive index of
organic material (around 1.7 to 1.9). Only part of the light emitted from OLEDs can
come into the air, and most light is trapped in the device due to the total internal
reflection at the organic/glass interface or glass/air interface. As we mentioned earlier,
it is convenient to use the in-plane projection κ of the wave vector to identify the
modes. Light emitted from the dipole in OLED devices can be decomposed into
different modes as below [91, 96, 97], where is the wavelength, and ,
and are the optical refractive indexes of the air, substrate and
organic materials.
(1)
, air mode, the light can be extracted into air if not absorbed by
any layer.
(2)
, substrate mode, the light can reach the substrate
but not the air.
(3)
, waveguide mode, the light is trapped in the
organic layers.
73
(4)
, surface plasmon mode, the light is coupled into the
surface plasmon on electrodes.
To calculate the contribution of each mode in the cavity model, we integrate the
power density of light emission over the specific range for the mode, and divide it by
the total contribution of all modes. For example, the weight of the air mode can be
calculated as
air 2
2π*n
0
2
λ
0
( )mode
( )
K dweight of air
K d
(3.39)
To investigate the mode decomposition, we have simulated a series of OLED
devices and calculated the mode contributions. The inset in Figure 3.11 shows the
structure of a typical bottom emission OLED device: glass substrate/ITO (100
nm)/organic layer (x nm)/ Al (100 nm), with organic layer thickness varying from 20
nm to 600 nm. One emitter is located at the center of the organic layer with a
photoluminescence (PL) spectrum shown in Figure 3.11. The PL spectrum is
generated from a Gaussian distribution with a peak wavelength at 620 nm and full
width at half maximum (FWHM) of 80 nm. The optical refractive index of the
organic material is assumed to be 1.7 at all wavelengths, while the refractive indexes
of the glass, ITO and Al are taken from literature [98, 99]. We have monitored the
contribution of each mode in devices where the organic layer thickness ranges from
74
20 nm to 600 nm. Non-radiatve rate of the devices is assumed to be 0 for all devices
discussed in this thesis.
Figure 3.11. PL spectrum of the emitter to be used in the simulation. The PL
spectrum is generated from a Gaussian distribution with a peak wavelength at
620nm and FWHM of 80nm. Inset: The device structure of the OLED devices in
the simulation, with glass substrate/ITO (100 nm)/Organic Layer (20 nm to 600
nm)/Al (100 nm), and the dipole emitter locates in the middle of the organic layer.
75
Figure 3.12. (a) Optical refractive indexes of the glass, ITO, organic material and Al
used in the simulation. The optical refractive index of the organic material is assumed
to be 1.7 at all wavelengths. The indexes of other materials are retrieved from
literature. (b) The contribution of each mode from the dipole emission in OLED
devices with organic layer thickness varying from 20 nm to 600 nm. Inset: the device
structure of the OLED devices. Emitters locate in the middle of the organic layer,
with a PL spectrum shown in Figure 3.11.
(a)
(b)
76
Clearly, the contribution of each mode changes as the organic layer thickness
increases. The plasmon mode drops as the organic layer thickness increases, the main
reason is that the dipole is located in the middle of organic layer, increasing the
organic layer thickness can effectively move the dipole away from the electrodes,
which suppressing the plasmon mode. However, the reduction of plasmon mode is
compensated by the increase of waveguide mode instead of the air mode [91].
The air mode contribution, which determines the out-coupling efficiency,
increases and decreases as the organic layer thickness increases. Therefore, the cavity
structure of OLED devices should be tuned carefully to improve the out-coupling
efficiency. However, the maximum air mode contribution obtained by varying the
organic layer thickness is only about 30%. The majority of the light is still trapped in
the device, about 20% in substrate mode and 50% in the waveguide and surface
plasmon mode. Tuning the cavity structure cannot extract the trapped modes in the
substrate or organic layers. Techniques that can effectively change the light injection
angle at the substrate/air interface or at the OLED/substrate interface have been
introduced to extract the trapped modes [100-107].
3.5.3 Weak cavity versus strong cavity OLEDs
OLED devices can be categorized by the cavity structure they use. Weak cavity
(also called non-cavity) OLED devices have one reflective electrode and one
transparent electrode. While strong cavity (also called micro-cavity) OLED devices
has one reflective electrode and one semi-transparent electrode. The semi-transparent
77
electrode can be a thin film metal or a set of quarter wavelength stacks (Distributed
Bragg Reflectors) in contact with a transparent electrode [108-111]. The semi-
transparent electrode increases the reflection of light back into the OLEDs and hence
increases the interference effect. The strong cavity structure is typically used in top
emission OLEDs. Because of the high luminance and good color purity at normal
direction, strong cavity OLEDs are widely used in hand-held display panels such as
cell phones. However, the strong cavity OLEDs usually have a strong luminance drop
and large color shift at high viewing angles, which impedes their application in large
screen displays, such as TVs.
78
OLED emission has angular dependence due to the cavity effect, thus to compare
the emission characteristics between weak cavity OLEDs and strong cavity OLEDs,
we either compare the light from the same viewing angle or compare the total light
output over all angles. Figure 3.13 shows the device structure of weak cavity and
strong cavity OLEDs we have simulated. Thin film Ag is used as the semi-transparent
electrode in the strong cavity device. A capping layer is included to reduce the index
Figure 3.13. The device structure of the weak cavity and strong cavity OLEDs
used in the simulation. The HTL and ETL thickness of the devices is tuned to
improve the luminance at the normal direction. Red emitters locate in the
middle of the EML in both devices with a PL spectrum shown in Figure 3.11.
All organic layers including the HTL, EML, ETL and capping layer are
assumed to have an optical refractive index of 1.7 at all wavelengths.
79
mismatch between the Ag and the air and hence improve the out-coupling efficiency
[112-115].
Figure 3.14(a) compares the electroluminescence (EL) spectrum at normal
direction between the weak cavity and strong cavity OLEDs. At normal direction, the
strong cavity device has higher luminance and narrower spectrum (which means
higher color purity) than the weak cavity device. An improved light output at the
normal direction make strong cavity OLEDs attractive for hand-held displays.
Figure 3.14(b) compares the total light output from the two devices. The
simulation shows that the total light output from the strong cavity device is close to
that from the weak cavity device, and the total light output spectrum is blue shifted
relative to the weak cavity device. The behavior can be explained by the strong
luminance drop and color shift at high viewing angles, as evident from Figure 3.15.
80
Figure 3.14. The EL spectrum of the weak cavity and strong cavity OLEDs
(a) at normal direction and (b) over all angles.
(b)
(a)
81
Figure 3.15 shows the simulated EL spectrum at normal direction (0 degrees) and
at high viewing angles (60 degrees) for the weak cavity and strong cavity OLEDs. A
strong luminance drop and spectrum shift (color shift) has been observed in the strong
cavity device.
Figure 3.15. EL spectrum at normal direction (0 degrees) and at high viewing
angles (60 degrees) for the (a) weak cavity and (b) strong cavity OLEDs.
(a)
(b)
82
So far we have investigated the emission characteristics in the weak cavity and
strong cavity OLEDs with fixed layer thickness. The thickness of organic layers is the
key parameter for the cavity structure, and the OLED emission characteristics heavily
depend on the layer thickness. To investigate the thickness dependence effect, we use
the same device structure shown in Figure 3.13 and vary the thickness of the HTL and
ETL from 0 nm to 400 nm respectively. Figure 3.16 shows the thickness dependence
of the normal direction luminance for (a) the weak cavity and (b) the strong cavity
devices. The luminance varies a lot as the layer thickness changes. In weak cavity
devices, the ETL thickness, which controls the distance between emitter and
reflective electrode, has more effect on the light output. On contrast, for strong cavity
devices, both HTL and ETL thickness have strong effect on the light output. The
diagonal shape of the plot means that the total thickness of organic layers controls the
emission of strong cavity OLEDs.
83
Figure 3.16. The luminance at normal direction from the (a) weak cavity and (b)
strong cavity OLEDs with HTL thickness and ETL thickness varied from 0 nm to
400 nm, respectively.
(a)
(b)
84
Chapter 4
Simulation of Organic Photovoltaic Devices
While OLED devices transform electricity into light, organic photovoltaic
devices (also called organic solar cells) convert the power of sunlight into electricity.
As we mentioned earlier, the device structure and the mechanisms of these two types
of devices are closely related to each other. The experience and knowledge we have
learned from the simulation of OLED devices establish a solid foundation for
building a model for organic photovoltaic devices.
4.1 Photon absorption in OPV devices
The optical part in OPV devices is easier to model than the cavity effect in OLED
devices because we are only interested in the absorption of the device. Most of the
time, we only focus on the light injection at normal angle. The injection light is
assumed to be plane waves which is much easier to handle than dipole emission.
Because of the low mobility of the organic materials and the strong electric field
requirement for the exciton dissociation, OPV devices are usually very thin (50nm to
1um). This nature brings an interference effect in the device and hence affects the
absorption.
Since excitons generated in OPV devices can diffuse to the donor/acceptor (DA)
interface and dissociate, the location of the exciton generation has impact on the
85
device performance. Therefore, to correctly model the OPV devices, we need to
calculate the photon absorption at each position. In other words, we need to calculate
the photon absorption at each monolayer after dividing the device into discrete
monolayers.
The absorption in OPV devices is modeled by the transfer matrix theory [36, 37].
Figure 4.1 shows the diagram of the photon absorption in OPV devices. Because of
the reflectance of the back cathode, the optical electric field at any position can be
decomposed into two components; one component propagating in the positive
direction and the other in the negative position. Given that and
are the
components of the optical electric field propagating in the positive and negative
directions in the jth
monolayer, and
are the corresponding parameters for the
Figure 4.1. Diagram of the photon absorption in OPV devices. The device structure is
glass substrate/ITO anode/Donor layer/Acceptor layer/LiF/Al cathode. and
are
the components of the optical electric field propagating in the positive and negative
directions in the jth
monolayer, and
are the corresponding parameters for the
adjacent kth
monolayer.
86
adjacent kth
monolayer. The optical electric fields in these two adjacent layers are
connected by the following matrix equation
2exp( * ) 0
/ 2 / 2
/ 2 / 2 20 exp( * )
j j
j k j j k jj k
j k j j k jj j j k
n di
n n n n n nE E
n n n n n nE n d Ei
(4.1)
where jn and kn are the complex refractive index in the j
th monolayer and the k
th
monolayer, respectively, the imaginary part of jn controls the absorption strength,
is the wavelength, and jd is the thickness of the jth
monolayer . After calculating all
the transfer matrixes in the devices and multiplying them together, we can achieve a
final matrix. The final matrix connects the optical electric fields of the 0th
monolayer
(layer in front of the OPV device) and the N+1th
monolayer (layer at the back of the
OPV device).
0 1
0 1
N
N
E ES
E E
(4.2)
Given that is related to the incident light, and that
because no light
come back after it get out of the device, we can figure out the other two variables ( 0E
and 1NE
) by solving the matrix equation. With the optical electric fields in the 0th
layer, we can calculate the optical electric fields for each monolayer by applying the
transfer matrix iteratively. The average absorbed light power for each monolayer is
calculated as
87
204
2
j j
j j j
c k nQ E E
(4.3)
where jQ is the absorption rate in jth
monolayer, c is the speed of light in the vacuum,
0 is the vacuum dielectric constant,
jn and jk re the real part and imaginary part of
the optical refractive index in the jth
monolayer, and
are the optical electric
fields of the positive and negative propagation light in the jth
monolayer. Similar to
the cavity model for OLEDs, the absorption in OPV devices is also wavelength
dependent. To calculate the total absorbed photons in OPV devices, we need the
injection light power density (usually AM 1.5G with integrated intensity 100
mW/cm2 [116]) and the refractive indexes of materials at all wavelengths.
4.2 Exciton diffusion and dissociation in OPV devices
Excitons, rather than free charge carriers, are formed after the photon absorption
in OPV devices because of the low dielectric constant and strong exciton binding
energy. Excitons can diffuse to the donor acceptor (DA) interface and dissociate
efficiently. The exciton diffusion in OPV devices is the same as the exciton diffusion
in the OLED simulation. For planar hetero-junction OPV devices, the dissociation of
excitons in bulk is negligible compared to the exciton dissociation at the DA interface.
We can solve the diffusion equation first and calculate the exciton flux arriving at the
DA interface. This flux is the upper limit of the current density we can achieve for
planar heterojunction OPV devices, since only excitons that could arrive at the DA
88
interface can dissociate efficiently. Thus for planar heterojunction OPV devices, the
exciton diffusion and dissociation can be treated as two consecutive steps.
Figure 4.2 demonstrates the exciton dissociation process at the DA interface. To
calculate the exciton dissociation, we assume that the charge transfer (CT) process
takes place immediately after excitons arrive at the DA interface [87, 117, 118]. The
new CT state can either dissociate into free charge carriers with a field dependent rate
kd or decay to the ground state with a constant rate kf. The dissociation rate kd of CT
state is calculated through the Braun-Onsager model [ 87, 119-121]
2 3
p n
d 3
0 r 0 r 0 0
e*(μ μ )3 e b bk * *exp (1 b )
4πr ε ε 4πε ε r kT 3 18
(4.4)
Figure 4.2. Diagram of the exciton dissociation process at the DA interface. kd(r0,E)
is the dissociation rate depending on the initial separation distance r0 and the electric
field E. kf is the decay rate of the charge transfer state.
89
where , E is the electric field,
and
are the hole and
electron mobilities, respectively, is the charge carrier initial separation distance in
the CT state, and are the relative and vacuum dielectric constant, e is the
elementary charge, is the Boltzmann constant, and T is the temperature. The model
was originated by Onsager for analysis of geminate recombination of an ion pair in
an isotropic medium [118, 119]. Braun later refined the model by introducinga charge
transfer state with a finite lifetime [121]. The model has been used by Blom et al. [87]
for calculating the photogeneration of charges in bulk hetorojunction OPV cells. The
two key parameters that control the dissociation efficiency are and kf: a large
can help to dissociate the CT state while a large kf can make the CT state more likely
to decay rather than dissociate.
4.3 Charge carriers transport in OPV devices
The charge carrier transport in OPV devices is similar to its counterpart in
OLEDs. The only difference is that, OPV devices run at an applied voltage lower than
the built-in potential. The injection of charge carriers in the OLEDs part cannot be
used here. One way to treat the Metal/Organic interface is to assume an Ohmic
boundary condition at the interface [87]. Thus the contacts are in thermodynamic
equilibrium and we can set the hole (electron) density at the hole (electron) contact
constant.
90
4.4 Effect of the HOMO offset on planar heterojunction OPV
devices
After integrating all the parts discussed above, we are able to simulate OPV
devices and compare simulation results with experimental results. The energy offset
[122-124] (∆EHOMO or ∆ELUMO) between donor and acceptor material at the DA
interface has always been considered as the driving force that dissociates the excitons
in OPV devices. To systematically investigate the effect of energy offset on OPV
devices, my colleague Dr. Minlu Zhang at the University of Rochester has made a
series of devices [125]. The device structure is ITO(90 nm)/MoOx(2 nm)/donor(3
nm)/C60(40 nm)/BPhen (4,7-diphenyl-1,10-phenanthroline )(8 nm)/LiF/Al where a set
of donor materials with variable HOMO levels [60, 126-130] are used as shown in
Table 4.1. The HOMO level of C60 is -6.2eV according to the literature [131].
In the donor/C60 OPV devices, photons are absorbed in the C60 layer where
excitons are generated. Generated excitons can diffuse to the donor/C60 interface and
dissociate. C60 is the acceptor [131] where electrons prefer to stay, while the donor
material provides a lower energy level to attract holes at the DA interface. Therefore,
excitons that arrive at the interface can transform to charge transfer complex with
bound holes in the donor side and bound electrons in the C60 side. Another way to
look at the charge transfer process is that, the bound holes step up from the HOMO of
C60 to the HOMO of the donor. Therefore, the HOMO offset between the donor and
91
C60, rather than the LUMO offset, is the driving force for the charge transfer process
in these devices.
Since the C60 layer thickness is constant, the photon absorption in C60 and the
exciton flux reaching the DA interface is the same for all devices. The good electron
transport property of C60 [132] and the extremely small thickness of the donor layer
guarantee that the transport of charge carriers is not a limiting factor in these devices.
Thus the device performance is solely controlled by the dissociation process at the
DA interface, which ultimately depends on the HOMO offset.
Figure 4.3 shows the experimental and simulated current density versus voltage
(J-V) characteristics of the series of OPV devices with different donor material. The
HOMO level of the donor material varies from -5.9 eV (CBP) to -5.1 eV (MTDATA).
Clearly, varying the HOMO level of the donor will change the ∆EHOMO and the device
performance. A good fit between experimental and simulated J-V curves has been
achieved. The input parameters we choose for different devices in the simulation will
be discussed in details below.
92
Table 4.1. List of donors, HOMO levels and CAS names used in donor (3 nm)/C60
(40 nm) OPV devices.
Donor HOMO
(eV)
CAS Names
MTDATA -5.1 4,4',4" -Tris(N-3-methylphenyl-N-phenyl-amino)triphenylamine
NDP -5.3 6,13-dihydro-6,13-di-2-naphthalenyl-Dibenzo[b,i]phenazine
NPB -5.4 N’ ,N’-Di-[(1-naphthyl)-N’,N’-diphenyl]-1,1’-biphenyl)-4,4’-diamine
TAPC -5.5 1,1-bis-4-bis4-methyl-phenyl-amino-phenyl-cyclohexane
TCTA -5.7 4,4,4-trisN-carbazolyl-triphenyl amine
ADN -5.8 9,10-di(2-naphthyl) anthracene
CBP -5.9 4,4'-bis(carbazol-9-yl)-biphenyl
Figure 4.3. Experimental (symbols) and simulation results (solid curves) of the
current-voltage characteristics of ITO/MoOx(2 nm)/donor(3 nm)/C60(40 nm)/
BPhen(8 nm)/LiF(1 nm)/Al OPV cells.
CBP
ADN
TCTA
TAPC
NPB
NDP
MTDATA
-1.0 -0.5 0.0 0.5 1.0
-5
-4
-3
-2
-1
0
1
2
3
4
5
J (
mA
/cm
2)
Voltage(V)
93
Table 4.2 Experimental photovoltaic parameters (Jsc, Voc and FF) for donor (3 nm)
/C60 (40 nm) OPV devices. Vbi, r0 and kf are the built-in potential, the initial
separation distance and the decay rate of the CT state used in the simulation.
Donor Jsc
(mA/cm2)
Voc
(V)
FF
(%)
Vbi
(V)
r0
(nm)
kf
(1/s)
MTDATA 2.39 0.26 51.59 0.6 1.34 5.50×107
NDP 3.42 0.44 59.74 0.8 1.22 1.60×107
NPB 3.53 0.60 62.00 0.9 1.16 1.00×107
TAPC 3.85 0.65 61.25 1.0 1.10 5.00×106
TCTA 3.05 0.89 49.39 1.2 0.98 5.00×106
ADN 2.53 0.97 38.21 1.3 0.92 5.00×106
CBP 1.88 0.99 36.08 1.4 0.86 5.00×106
94
Table 4.2 lists the experimental photovoltaic parameters. Figure 4.4 shows both
experimental and simulated photovoltaic parameters for all devices. Both Jsc and FF
increases and then decreases as the ∆EHOMO increases from 0.3eV (CBP/C60 devices)
to 1.1eV (MTDATA/C60 devices). The Voc drops almost linearly as the ∆EHOMO
increases, because Voc and Vbi are determined by the difference between the HOMO
Figure 4.4. Experimental (solid squares) and simulated (open squares) results of Jsc,
FF and Voc vs ∆EHOMO for donor (3 nm)/C60 (40 nm) OPV devices.
95
of the donor and the LUMO of C60 [122]. Vbi is taken as the energy gap between the
HOMO of the donor and the LUMO of the C60 in the simulation
60bi C donorV LUMO HOMO (4.5)
The Braun-Onsager model [35, 120, 121] is used to model the CT state dissociation at
the DA interface. The initial separation distance r0 and the CT decay rate kf are the
key parameters controlling the dissociation process. Table 4.2 and Figure 4.5 show
the values of two fitting parameters, r0 and kf, for each device. We assume that the
initial separation distance r0 in the Braun-Onsager model increases linearly as the
∆EHOMO increases. We consider that the energy loss (∆EHOMO) during the CT process
at the DA interface can help separate the bounded charge carriers [124]. For devices
with ∆EHOMO > 0.7eV, we use a large kf to offset the large r0 to get reduced Jsc and FF
to fit the experimental data. It is possible that because of the strong DA interaction at
the interface with large ∆EHOMO, the charge-transfer states are more effectively
bounded, which results in an increased decay rate to the ground states.
Ohmic boundary conditions are assumed at the contacts, where the hole density
at the anode/donor contact and the electron density at the cathode/acceptor contact are
both set as . At 100 mW/cm2 illumination, an exciton flux of
at the DA interface (equivalent to a current density of 4.5
mA/cm2) is used for all the devices with a 40 nm layer of C60. For electron mobility
of C60, we use , . We
have found that the variation of the hole mobility in the donor layer does not
96
significantly change the simulation results as long as it is within the range of
to and the donor layer is kept sufficiently
thin (~ 3 nm). This finding further supports the argument that the dissociation process
at different donor/C60 interfaces explains the device performance difference, rather
than the transport property of different donor material. However, when the donor
layer thickness increases, the hole transport may become a factor that limits the
device performance, as we will see in the next section.
Figure 4.5. The initial separation distance r0 and the charge transfer state decay
rate kf used in the simulation of donor (3 nm)/C60 (40 nm) OPV devices.
97
4.5 Effect of the donor layer thickness on planar heterojunction
OPV devices
In the previous section, we kept the donor layer thickness constant and varied the
donor material to see the device performance, where the hole transport is not a
limiting factor because the donor layer is thin (3 nm). However, when donor layer
become thick, the charge carrier transport may limit the device performance due to
the relatively low mobility of organic materials.
Figure 4.6 (a) shows the experimental and simulated J-V curve of a set of OPV
devices with a device structure of ITO/MoOx(2 nm)/NPB(x nm)/C60(40 nm)/BPhen(8
nm)/LiF/Al where the NPB layer thickness varies from 3 nm to 100 nm. The devices
are made by my colleague Dr. Minlu Zhang at the University of Rochester [133]. The
current density drops quickly as the NPB layer thickness increases. Table 4.3 lists the
photovoltaic parameters observed from the devices. Increasing the NPB layer
thickness can quickly reduce the level of Jsc and FF. This effect is also attributed to
hole transport limitations in the NPB layer.
98
Table 4.3. Experimental photovoltaic parameters (Jsc, Voc and FF) for ITO/MoOx(2
nm)/NPB(x nm)/C60(40 nm)/BPhen(8 nm)/LiF/Al cells with NPB layer thickness
varied from 3 nm to 100 nm. Vbi, r0 and kf are the built-in potential, the initial
separation distance and the decay rate of the charge transfer state used in the
simulation.
Notice that the Voc for devices with thin NPB layer (3 nm and 5 nm) is about 0.6
V, which suddenly increases to about 0.9 V for devices with thick NPB layer (10 nm
to 100 nm) and remain unchanged afterwards. The dramatic change of Voc cannot be
explained by the hole transport behavior in the donor layer, since the hole transport
properties between 5 nm thick NPB and 10 nm thick NPB is not very different. One
possible explanation is that when NPB layer is thin (3 nm or 5 nm), the MoOx that
diffuses into the NPB layer effectively dope the NPB layer. The MoOx doped NPB
NPB Jsc Voc FF Vbi r0 kf
(nm) (mA/cm2) (V) (%) (V) (nm) (1/s)
3 3.56 0.61 62 1 1.16 1.0 × 107
5 3.21 0.62 55 1 1.16 1.0 × 107
10 2.93 0.89 37 1.3 1.04 1.0 × 107
30 1.95 0.91 27 1.3 1.04 1.0 × 107
50 1.33 0.90 20 1.3 1.04 1.0 × 107
100 0.141 0.90 17 1.3 1.04 1.0 × 107
99
layer may provide a HOMO level above the pure NPB layer at the DA interface,
which reduces the Vbi and Voc of the device [133]. Meanwhile, the effective HOMO
level of the donor at the DA interface provides a larger HOMO offset and a good
driving force for exciton dissociation as we discussed in the previous section, which
has been confirmed by the higher FF in devices with thin NPB layer. When the NPB
layer is thick enough, the diffusing MoOx cannot reach the NPB/C60 interface and
will not affect the Vbi for the device. Built-in potential (Vbi) and r0 are two fitting
parameters adjusted to explain the two-stage Voc values. For cells with a thin NPB
layer, the Vbi and r0 are set as 1.0 V and 1.16 nm, respectively. For cells with a thick
NPB layer, the Vbi and r0 are set as 1.3 V and 1.04 nm, respectively. The CT state
decay rate kf is set at 1.0 107s
-1 for all devices.
Ohmic boundary conditions are still assumed at the contacts, where the hole
density at the anode/donor contact and the electron density at the cathode/acceptor
contact are both set as . At 100 mW/cm2 illumination, an exciton
flux of at the DA interface (equivalent to a current density of
4.5 mA/cm2) is used for all the devices. For the electron mobility of C60, we use
, . In order to fit the
experimental curve, I have to set the NPB layer hole mobility as low as
, . The hole mobility of NPB used in
the simulation is much lower than the values generally reported from the time of
flight experiments [70]; however, people have reported much lower hole mobility
100
values for ultra thin NPB film [134]. The low hole mobility and large thickness of the
NPB layer will impede the extraction of holes generated at the NPB/C60 interface.
The holes accumulated in the NPB layer will dramatically reduce the electric field at
the NPB/C60 interface and consequently reduce the charge carrier generation
efficiency. The S-shape J-V curve for devices with large NPB layer thickness, and the
photovoltaic parameters, are reproduced well in the simulation as shown in Figure
4.6(a) and Figure 4.6(b).
101
Figure 4.6. (a) Experimental (symbols) and simulated (solid curves) J-V curves of
ITO/MoOx(2 nm)/NPB(x nm)/C60(40 nm)/BPhen(8 nm)/LiF/Al OPV devices with
the NPB layer thickness varied from 3 nm to 100 nm. (b) Experimental (solid
square) and simulated (open circle) values of Jsc, FF and Voc for NPB/C60 OPV
devices.
(a)
(b)
0.0
0.2
0.4
0.6
0.8
0 20 40 60 80 100
0.6
0.8
1.0
0
1
2
3
4
FF
Vo
c(V
)
NPB (nm)
Experiment
Simulation
Jsc(m
A/c
m2)
-1.0 -0.5 0.0 0.5 1.0 1.5-5
-4
-3
-2
-1
0
1
2
3
4
5
NPB 3nm
NPB 5nm
NPB 10nm
NPB 30nm
NPB 50nm
NPB 100nmJ (
mA
/cm
2)
Voltage(V)
102
4.6 Effect of the donor concentration on bulk heterojunction
OPV devices
In planar heterojunction OPV devices, only excitons arriving at the DA interface
can dissociate efficiently and those that cannot reach the DA interface are wasted.
Thus, the exciton diffusion length limits the photo current. Bulk hetorojunction (BHJ)
[135] OPV devices mix the donor and acceptor materials together in the active layer
and effectively solve the problem. DA interfaces that are uniformly distributed across
the active layer act as dissociation centers for excitons.
For BHJ OPV devices, photon absorption, exciton dissociation, charge carrier
transport, and recombination occur everywhere in the BHJ layer. Thus, all of them
need to be incorporated together to achieve a valid simulation. Exciton diffusion is
ignored in the model assuming that all excitons are transformed to the charge transfer
states immediately after generation [87, 118].
In the active layer, excitons (CT states) act as the intermediate states between
photons and charge carriers. Photon absorption generates excitons. The following
exciton dissociation produces free charge carriers, and the recombination of charge
carriers can form excitons again. These dynamic transformations can be expressed in
the following equations [87]
f d
dXG k k *X R
dt (4.6)
103
d
1* k *XnJn
Rt e x
(4.7)
where X is the exciton density, G is the photon absorption rate, is the decay
and dissociation rate of the CT states, R is the recombination rate of charge carriers, n
is the electron density, is the electron current, and e is the elementary charge. The
change of hole density in the layer is calculated through a similar equation.
To study the bulk heterojunction OPV devices, my colleague Dr. Minlu Zhang at
the University of Rochester has made a series of devices with the structure: ITO (90
nm)/MoOx(2 nm)/BHJ (TAPC:C60) (40 nm)/BPhen(8 nm)/Al(100 nm) [136]. The
BHJ layer is a mixed film of TAPC [137] (donor) and C60 (acceptor) with TAPC
concentration varying from 1.2% to 50%. The concentration of TAPC is indicated in
volume fraction. Figure 4.7 shows the (a) experimental and (b) simulated J-V curves
of bulk heterojunction devices with different TAPC concentration. Table 4.4 and
Figure 4.8 present experimental and simulated photovoltaic parameters for the series
of devices. The device performance changes a lot at different TAPC concentration.
104
-1.0 -0.5 0.0 0.5 1.0
-6
-4
-2
0
2
J (
mA
/cm
2)
Voltage (V)
1.2%
2.5%
5%
12.5%
25%
33%
50%
(a) Experiment
-1.0 -0.5 0.0 0.5 1.0
-6
-4
-2
0
2
J (
mA
/cm
2)
Voltage (V)
(b) Simulation
Figure 4.7. (a) Experimental and (b) simulated current-voltage characteristics of
ITO/MoOx/TAPC:C60/BPhen/Al OPV devices with various TAPC concentration
from 1.2% to 50%.
105
Table 4.4. Experimental Photovoltaic parameters of TAPC:C60 cells (AM1.5 @
100mW/cm2) and calculated hole and electron mobilities.
TAPC
(%)
Jsc
(mA/cm2)
Voc
(V)
FF
ηPCE
(%)
µha
(cm2/Vs)
µea
(cm2/Vs)
1.2 2.88 1.02 0.36 1.06 9.09×10-8
4.91×10-3
2.5 3.90 0.96 0.40 1.50 1.54×10-7
4.66×10-3
5.0 5.94 0.91 0.52 2.81 1.32×10-6
4.19×10-3
12.5 5.25 0.88 0.54 2.50 1.01×10-5
2.98×10-3
25.0 4.12 0.80 0.47 1.55 2.94×10-5
1.53×10-3
33.0 3.27 0.78 0.43 1.10 4.11×10-5
9.11×10-4
50.0 1.45 0.74 0.29 0.31 6.24×10-5
2.15×10-4
a. Calculated hole and electron mobilities under an electric field of 1.0105 V/cm by using
Bässler’s model according to Equation 3 and 4. Parameters used in the calculation: µp0 =
1.010-4
cm2V
-1s
-1, Γp = 3.7, p = 1.010
-4 cm
1/2V
-1/2 and µn0 = 5.010
-3 cm
2V
-1s
-1, Γn = 14,
n = 1.010-4
cm1/2
V-1/2
.
106
Voc drops from 1.03 V to 0.74 V as TAPC concentration increases from 1.2% to
50%. For conventional BHJ cells, the built-in potential and Voc are generally
governed by the HOMO-LUMO gap [138, 139] between the donor and acceptor
material in the active layer. The observed Voc dependence on TAPC concentration in
the TAPC:C60 cells suggests that the effective HOMO level of TAPC is not fixed, but
Figure 4.8. Photovoltaic characteristics of TAPC:C60 cells under AM1.5 at 100
mW/cm2 illumination: (a) Experimental data of Voc versus TAPC concentration;
(b) Experimental and simulated data of Jsc versus TAPC concentration; (c)
Experimental and simulated data of FF versus TAPC concentration.
107
shifted to a higher energy with increasing TAPC concentration in C60. The built-in
potential Vbi used in the simulation is based on linear extrapolation of the
experimental Voc values. Both Jsc and FF increase with TAPC concentration at first
and drop their levels afterwards.
To correctly model the effect of the TAPC concentration on device performance,
we need to identity what parameters in the devices will change at different TAPC
concentration, and more importantly, how to model the change.
Note that TAPC is a practically non-absorbing material in the visible spectrum.
Thus, the photon absorption is primarily contributed by the C60 component. The
absorption coefficients of the mixed layer are approximated as
60( ) ( ) (1 )TAPC TAPCc C c (4.8)
where ( )TAPCc and α(C60) are absorption coefficient of the mixed material and C60
respectively at wavelength , and TAPCc is the TAPC concentration in volume
percentage. Since the photon absorption is calculated according to the transfer matrix
theory where the complex refractive index (n,k) of the mixed material is required.
Intuitively, I assume that
60( ) ( ) (1 )TAPC TAPCk c k C c (4.9)
where TAPCc is the imaginary part of the optical refractive index for the mixed
material, and is the value for C60 [140, 141]. The real part of the refractive
108
index of the mixed material is set the same as the C60 which is relatively constant at
all wavelengths. AM 1.5 spectrum with integrated intensity 100mW/cm2 is assumed
for the light source [116].
Furthermore, one important parameter that affects the dissociation efficiency is
the dielectric constant of the material. The concentration-dependent dielectric
constant of the TAPC:C60 mixed film r TAPCc is calculated as [142]
1 1
33 3
60( (1 ) )r TAPC TAPC r TAPC rc c TAPC c C (4.10)
where, εr(TAPC) = 3.5 [143] and εr(C60) = 4.5 [144] are the dielectric constants of
TAPC and C60, respectively. Increase in the TAPC concentration will lower the
dielectric constant of the material and increases the Coulomb force between the
charge pairs in CT states. Consequently, the dissociation of CT states becomes more
difficult [145].
Further, we assume that holes and electrons in the TAPC:C60 layer are transported
through TAPC and C60, respectively. The concentration dependence of the hole and
electron mobility can be calculated according to Bässler’s model[43]:
2
0 p
/3 1/3 1/6 Γ 1 ( )p p TAPC TAPC p TAPCE c exp c exp c E (4.11)
2 1
3 3
1
60 n(1 ) (1 ) 1 ( (1 ) )TAPC TAPCn APCn Tn E exp exc cpc E
(4.12)
109
where µp0 (µn0) are the hole (electron) mobility at zero electric field in pure TAPC and
C60, respectively, Γp (Γn) are the electronic wave function overlap factors, γp (γn) are
the electric field dependence of hole (electron) mobility, and E is the electric field.
Table 4.4 shows the mobility parameters we used for the simulation as well as the
calculated electron and hole mobility of the bulk layer under an electric field of 1×105
V/cm.
For the TAPC:C60 cells, we assume that, a donor concentration of ~ 1% by the
volume of TAPC in C60 provides sufficient dissociation sites for complete capture
excitons generated by the light absorption in C60. Exciton dissociation is via a charge
transfer state with an initial separation distance of r0 = 1.08 nm and decay rate of kf =
5.0106 s
-1 for all devices.
In Figure 4.8 (b) and Figure 4.8(c) the simulated results for Jsc and FF are plotted
against TAPC concentration for all TAPC:C60 cells along with the experimental
results. The agreement between the simulated and experimental results appears to be
fairly good. At very low TAPC concentration (≤ 2.5%), the hole mobility in
TAPC:C60 is so low (< 10-7
cm2V
-1s
-1) that the photocurrent is more limited by the
field-dependent hole transport than by exciton dissociation in this layer. The hole
mobility in TAPC:C60 BHJ layer rapidly increases with TAPC concentration. At
about 5 - 10% TAPC level, the hole mobility is sufficiently high so that the hole-
transport is no longer the limiting factor for the photogeneration of charge carriers in
the BHJ. Above this concentration range, the reduction in the dielectric constant and
110
the electron mobility of the TAPC:C60 layer becomes significant, resulting in reduced
exciton dissociation efficiency and hence adversely affecting the Jsc and FF. The
electron mobility of the TAPC:C60 decreases by about an order of magnitude as the
TAPC concentration is increased from 5% to 50%. This similar trend has also been
found in polymeric BHJs such as PPV:PCBM [118].
4.7 Simulation of tandem OPV devices
The thickness of OPV devices is usually small, because (1) thick layer reduces
the electric field and hence reduces the dissociation efficiency, and (2) thick layer
impedes the extraction of charge carriers due to the low mobility of organic materials.
However, a thin layer will limit the absorption in the OPV devices and reduce the
photo current. One way to solve the dilemma is to apply a tandem cell structure [146-
150].
My colleague Dr. Minlu Zhang at the University of Rochester has made 2-stack
tandem cells as shown in Figure 4.9 (a) [151]. The tandem cell composed of two
subcells connected serially by an inter-connecting layer (ICL) with structure: ITO(90
nm)/MoOx (2 nm)/ BHJ (x nm)/ Bphen(6 nm)/Ag(0.3 nm)[152]/1,4,5,8,9,11-
hexaazatriphenylene hexacarbonitrile (HAT-CN) (1.5 nm)[153]/ MoOx (2 nm)/ BHJ
(y nm)/ Bphen(6 nm)/Al (100nm). The BHJ layer is a mixed film TAPC (5% by
volume) doped in C60 layer as we used in the previous section. The thickness of the
BHJ in the bottom and top subcells are varied to achieve optimal results.
111
Figure 4.9 (a) Schematic structure of the 2-stack tandem OPV devices. (b) Contour
plot of simulated current density of 2-stack tandem cells with various BHJ layer
thickness in top and bottom subcells. Star points are the experimental results with
the current density indicated accordingly.
(a)
(b)
112
Modeling tandem OPV devices is straightforward especially when we have a
model for single stack BHJ OPV devices. Using the transfer matrix theory [36, 154]
and including the ICL layer in the structure, we can calculate the photon absorption in
both subcells. The excition dissociation and charge carrier transport in each subcell is
calculated respectively as in single stack devices. The built-in voltage of the tandem
OPV cells is doubled due to the tandem structure. Subcells are connected with the
ICL, which we treated as an intermediate electrode and a recombination center as
well. Electrons generated in the bottom subcell and holes generated in the top subcell
can meet at the ICL and cancel each other, leaving only the net charges in the ICL.
The net charges in ICL can adjust the electric field in subcells and balance the photo
current generated from them [155]. This self-adjusting mechanism is necessary for
the tandem OPV devices to achieve a stationary state – same level of current from
both subcells. For example, if the bottom subcell generates more photo current than
the top subcell, there would be more electrons arriving at the interface from the
bottom subcell than holes coming from the top subcell. After the recombination, the
excess of electrons accumulate at the ICL, which increase the electric field as well as
the dissociation efficiency in top cell. Simultaneously, the electrons in the ICL will
reduce the electric field in bottom cell and hence reduce the dissociation efficiency.
With this self-adjusting mechanism, the photo current from both subcells will
eventually converge to the same value.
113
The BHJ layer thickness of both subcells can affect the photon absorption,
exciton dissociation and charge carriers transport. Therefore the tandem OPV device
performance is sensitive to the thickness of both layers.
Figure 4.9(b) shows the simulated Jsc for 2-stack tandem OPV devices with
various BHJ layer thickness in bottom and top subcells. Jsc is maximized when the
BHJ layer thickness in both cells is around 70 nm. The experimental data of tandem
cells are shown as the start points with the values indicated accordingly, which quite
match the simulation results.
114
Chapter 5
Summary and Future Work
In this thesis, we have successfully built a model for simulating the conversion
process from charge carriers to photons in OLED devices.
Charge carrier injection, transport, and recombination are investigated first in
single layer devices. With Ohmic injection contacts, the mobility mismatch between
electrons and holes determines the recombination zone in the device. A balanced
electron and hole transport is necessary to achieve high recombination efficiency as
well as expanded recombination zone in single layer OLEDs.
Trilayer devices with MTDATA/NPB/Alq structure where MTDATA is the hole
injection layer (HIL) have shown improved current efficiency compared to bilayer
NPB/Alq devices. Charge carrier quenching is introduced to explain the effect of the
hole injection layer. Forster energy transfer rate is used to calculate the quenching
rate in our model. The simulation has quantitatively reproduced the voltage shift and
the efficiency improvement in devices with such a hole injection layer. The increase
of current efficiency at high current density is attributed to the reduced cross interface
recombination. For trilayer devices, the drive voltage is reduced as the NPB layer
thickness is decreased, while the current efficiency is almost independent of the NPB
115
layer thickness. The power efficiency is therefore optimized by mimimizing the NPB
layer thickness.
Improved current efficiency in OLEDs has been observed almost universally
with various fluorescent and phosphorescent emitters with the insertion of a suitable
HIL in the device structure. We also observed charge carrier quenching plays a
critical role in limiting the efficiency of most OLED devices and should be avoided or
controlled in the future device design.
In mixed host OLEDs, the ratio between the hole transport material and the
electron transport material controls the mobilities of the mixed host. Balanced
mobilities between holes and electrons are preferred to achieve an expanded
recombination zone. Graded mixed host structures provide a means to achieve an
expanded recombination zone without introducing sharp boundaries between the
transport materials. However, high efficiency in OLEDs with either uniformly mixed
or graded mixed is not necessarily guaranteed if these device structures fail to exclude
quenching centers from the recombination zone.
The cavity effect in OLEDs is important for enhancing device performance. The
out-coupling efficiency of OLEDs is particularly sensitive to the layer configuration
and thickness. In weak cavity OLEDs, we found that the distance between the emitter
and the reflective cathode dominates the cavity effect, while in strong cavity OLEDs
we have to take into consideration the total thickness of all organic layers in
optimizaing the device performance.
116
We simulated the performance of various OPV devices. The Braun-Onsager
model was used to simulate the dissociation of excitons at donor-acceptor interfaces.
The initial separation distance r0 and the decay rate of charge transfer states kf are the
key parameters in determining the exciton dissociation efficiency according to the
model.
We showed that improved exciton dissociation efficiency can be achieved at a
donor-acceptor interface with a high HOMO offset, which effectively separates the
charge-transfer states formed at the interface. However, we also found that exciton
dissocation can be impeded in a donor-acceptor interface with excessive HOMO
offset because of the increasing decay rate of the CT states.
We showed that charge carrier transport in the hole transport layer such as NPB
can severely limit the efficiency in planar heterojunction OPV devices due to the fact
that extraction of holes from the low-mobility hole-transport layer is impeded.
Consequently hole accumulation in the hole-transport layer causes the reduction of
electric field and exciton dissociation efficiency at the donor-acceptor interface.
We also observed that hole transport can limit the efficiency of bulk
heterojucntion (BHJ) TAPC:C60 OPV devices when the donor (TAPC) concentration
is lower than 5%. Increasing the TAPC concentration above 5% would reduce the
photon absorption, which reduces the photo current, and lower the dielectric constant
and electron mobility of the BHJ layer, both of which reduce the exciton dissociation
efficiency.
117
We also simulated two-stack tandem OPV devices and optimized the power
conversion efficiency by varying the layer thickness of both subcells.
In summary, we have successfully modelled a series of OLED and OPV devices
and found quantitative agreement between experimental results and theoretical
simulation. Baed on our simulation work, we have established a better understanding
of the underlying mechanism and identified the limiting factors of the device
performance. Furthermore, we are able to optimize the device performance through
sensitivity analysis of the device layer structures. Our device simulation model can be
used to provide directions for future OLED and OPV device research.
The performance of OLEDs and OPVs heavily depends on the device structure
and material used. New quenching centers as well as new quenching mechanism
should be included in the model once they are identified. In our current simulation,
we did not consider the exciton-exciton annihilation processes in OLED devices.
These processes could play a critical role in high current density and may severely
lower and quantum efficiency and the ultimate brightness achievable in OLED
devices. The energy transfer between host and dopant molecules should be
investigated and simulated in future studies, including emissive layers with multiple
dopants, such as those used in white OLEDs.
It should be noted that the success of simulation is dependent on the validity of
input parameters. Accurate measurements of material parameters, especially the
carrier mobility and its dependence on the layer thickness and the electric field, are
118
extremely important in achieving meaningful simulation results. Charge transport and
recombination in mixed materials as well as the transport and recombination across
the heterojunction interfaces should be investigated in more detail to achieve a better
understanding of these processes and their effect on the device performance.
For the BHJ OPV model, we assume that the BHJ layer is consisted of uniformly
mixed donor and acceptor materials and ignore the possiblility of phase separation. It
is possible to expand the current model to include the effect of phase separation on
the device performance. This expanded model should be applicable to polymer BHJ
OPV devices. Currently, the efficiency of OPV devices is still considerably lower
than that of the inorganic solar cells largely because of the low dielectric constant and
mobility of organic materials. Materials research should be directed at producing
organic semiconductors with a higher dielectric constant and carrier mobility.
Another topic of interest is to improve the absorption of OPV through optical or
geometrical designs.
119
References
1. C. W. Tang, S. A. Vanslyke, "Organic Electroluminescent Diodes", Applied
Physics Letters, 51, 913 (1987).
2. L. S. Hung, C. W. Tang, M. G. Mason, "Enhanced electron injection in organic
electroluminescence devices using an Al/LiF electrode", Applied Physics
Letters, 70, 152 (1997).
3. C. W. Tang, S. A. Vanslyke, C. H. Chen, "Electroluminescence of Doped
Organic Thin-Films", Journal of Applied Physics, 65, 3610 (1989).
4. H. Jiang, Y. Zhou, B. S. Ooi, Y. Chen, T. Wee, Y. L. Lam, J. Huang, S. Liu,
"Improvement of organic light-emitting diodes performance by the insertion
of a Si3N4 layer", Thin Solid Films, 363, 25 (2000).
5. D. Liu, C. G. Zhen, X. S. Wang, D. C. Zou, B. W. Zhang, Y. Cao, "Enhancement
in brightness and efficiency of organic electroluminescent device using novel
N,N-di(9-ethylcarbaz-3-yl)-3-methylaniline as hole injecting and transporting
material", Synthetic Metals, 146, 85 (2004).
6. Y. Shirota, Y. Kuwabara, H. Inada, T. Wakimoto, H. Nakada, Y. Yonemoto, S.
Kawami, K. Imai, "Multilayered organic electroluminescent device using a
novel starburst molecule, 4, 4 ', 4 ''-tris (3-methylphenylphenylamino)
triphenylamine, as a hole transport material", Applied Physics Letters, 65, 807
(1994).
120
7. S. A. VanSlyke, C. H. Chen, C. W. Tang, "Organic electroluminescent devices
with improved stability", Applied Physics Letters, 69, 2160 (1996).
8. L. S. Hung, C. H. Chen, "Recent progress of molecular organic
electroluminescent materials and devices", Materials Science & Engineering
R-Reports, 39, 143 (2002).
9. B. W. D'Andrade, M. E. Thompson, S. R. Forrest, "Controlling exciton diffusion
in multilayer white phosphorescent organic light emitting devices", Advanced
Materials, 14, 147 (2002).
10. V. E. Choong, S. Shi, J. Curless, C. L. Shieh, H. C. Lee, F. So, J. Shen, J. Yang,
"Organic light-emitting diodes with a bipolar transport layer", Applied Physics
Letters, 75, 172 (1999).
11. D. G. Ma, C. S. Lee, S. T. Lee, L. S. Hung, "Improved efficiency by a graded
emissive region in organic light-emitting diodes", Applied Physics Letters, 80,
3641 (2002).
12. F. W. Guo, D. G. Ma, "White organic light-emitting diodes based on tandem
structures", Applied Physics Letters, 87, 173510 (2005).
13. G. Schwartz, M. Pfeiffer, S. Reineke, K. Walzer, K. Leo, "Harvesting triplet
excitons from fluorescent blue emitters in white organic light-emitting
diodes", Advanced Materials, 19, 3672 (2007).
14. M. Strukelj, R. H. Jordan, A. Dodabalapur, "Organic multilayer white light
emitting diodes", Journal of the American Chemical Society, 118, 1213 (1996).
121
15. C. W. Tang, "Two-layer organic photovoltaic cell", Applied Physics Letters, 48,
183 (1986).
16. G. Yu, J. Gao, J. C. Hummelen, F. Wudl, A. J. Heeger, "Polymer Photovoltaic
Cells - Enhanced Efficiencies Via a Network of Internal Donor-Acceptor
Heterojunctions", Science, 270, 1789 (1995).
17. H. Wang, K. P. Klubek, C. W. Tang, "Current efficiency in organic light-
emitting diodes with a hole-injection layer", Applied Physics Letters, 93,
093306 (2008).
18. J. Staudigel, M. Stossel, F. Steuber, J. Simmerer, "A quantitative numerical
model of multilayer vapor-deposited organic light emitting diodes", Journal
of Applied Physics, 86, 3895 (1999).
19. G. G. Malliaras, J. C. Scott, "Numerical simulations of the electrical
characteristics and the efficiencies of single-layer organic light emitting
diodes", Journal of Applied Physics, 85, 7426 (1999).
20. B. K. Crone, I. H. Campbell, P. S. Davids, D. L. Smith, C. J. Neef, J. P. Ferraris,
"Device physics of single layer organic light-emitting diodes", Journal of
Applied Physics, 86, 5767 (1999).
21. P. S. Davids, I. H. Campbell, D. L. Smith, "Device model for single carrier
organic diodes", Journal of Applied Physics, 82, 6319 (1997).
122
22. S. J. Konezny, D. L. Smith, M. E. Galvin, L. J. Rothberg, "Modeling the
influence of charge traps on single-layer organic light-emitting diode
efficiency", Journal of Applied Physics, 99, 064509 (2006).
23. H. Houili, E. Tutis, H. Lutjens, M. N. Bussac, L. Zuppiroli, "MOLED: Simulation
of multilayer organic light emitting diodes", Computer Physics
Communications, 156, 108 (2003).
24. B. Masenelli, E. Tutis, M. N. Bussac, L. Zuppiroli, "Numerical model for
injection and transport in multilayers OLEDs", Synthetic Metals, 122, 141
(2001).
25. E. Tutis, M. N. Bussac, B. Masenelli, M. Carrard, L. Zuppiroli, "Numerical
model for organic light-emitting diodes", Journal of Applied Physics, 89, 430
(2001).
26. B. Ruhstaller, T. Beierlein, H. Riel, S. Karg, J. C. Scott, W. Riess, "Simulating
electronic and optical processes in multilayer organic light-emitting devices",
IEEE Journal of Selected Topics in Quantum Electronics, 9, 723 (2003).
27. B. Ruhstaller, S. A. Carter, S. Barth, H. Riel, W. Riess, J. C. Scott, "Transient
and steady-state behavior of space charges in multilayer organic light-
emitting diodes", Journal of Applied Physics, 89, 4575 (2001).
28. C. H. Hsiao, Y. H. Chen, T. C. Lin, C. C. Hsiao, J. H. Lee, "Recombination zone in
mixed-host organic light-emitting devices", Applied Physics Letters, 89,
163511 (2006).
123
29. C. C. Lee, M. Y. Chang, P. T. Huang, Y. C. Chen, Y. Chang, S. W. Liu, "Electrical
and optical simulation of organic light-emitting devices with fluorescent
dopant in the emitting layer", Journal of Applied Physics, 101, 114501 (2007).
30. C. C. Lee, M. Y. Chang, Y. D. Jong, T. W. Huang, C. S. Chu, Y. Chang,
"Numerical simulation of electrical and optical characteristics of multilayer
organic tight-emitting devices", Japanese Journal of Applied Physics Part 1-
Regular Papers Short Notes & Review Papers, 43, 7560 (2004).
31. C. C. Lee, Y. D. Jong, P. T. Huang, Y. C. Chen, P. J. Hu, Y. Chang, "Numerical
simulation of electrical model for organic light-emitting devices with
fluorescent dopant in the emitting layer", Japanese Journal of Applied Physics
Part 1-Regular Papers Brief Communications & Review Papers, 44, 8147
(2005).
32. C. C. Wu, C. L. Lin, P. Y. Hsieh, H. H. Chiang, "Methodology for optimizing
viewing characteristics of top-emitting organic light-emitting devices",
Applied Physics Letters, 84, 3966 (2004).
33. P. W. M. Blom, M. J. M. de Jong, C. Liedenbaum, "Device physics of polymer
light-emitting diodes", Polymers for Advanced Technologies, 9, 390 (1998).
34. L. J. A. Koster, V. D. Mihailetchi, P. W. M. Blom, "Ultimate efficiency of
polymer/fullerene bulk heterojunction solar cells", Applied Physics Letters, 88,
093511 (2006).
124
35. L. J. A. Koster, E. C. P. Smits, V. D. Mihailetchi, P. W. M. Blom, "Device model
for the operation of polymer/fullerene bulk heterojunction solar cells",
Physical Review B, 72, 085205 (2005).
36. L. A. A. Pettersson, L. S. Roman, O. Inganas, "Modeling photocurrent action
spectra of photovoltaic devices based on organic thin films", Journal of
Applied Physics, 86, 487 (1999).
37. P. Peumans, A. Yakimov, S. R. Forrest, "Small molecular weight organic thin-
film photodetectors and solar cells", Journal of Applied Physics, 93, 3693
(2003).
38. J. A. Barker, C. M. Ramsdale, N. C. Greenham, "Modeling the current-voltage
characteristics of bilayer polymer photovoltaic devices", Physical Review B,
67, 075205 (2003).
39. W. Schottky, "The influence of the structural effects, especially the Thomson
graphic quality, on the electron emission of metals.", Physikalische Zeitschrift,
15, 872 (1914).
40. I. H. Campbell, P. S. Davids, D. L. Smith, N. N. Barashkov, J. P. Ferraris, "The
Schottky energy barrier dependence of charge injection in organic light-
emitting diodes", Applied Physics Letters, 72, 1863 (1998).
41. B. K. Crone, I. H. Campbell, P. S. Davids, D. L. Smith, "Charge injection and
transport in single-layer organic light-emitting diodes", Applied Physics
Letters, 73, 3162 (1998).
125
42. J. C. Scott, G. G. Malliaras, "Charge injection and recombination at the metal-
organic interface", Chemical Physics Letters, 299, 115 (1999).
43. H. Bassler, "Charge Transport in Disordered Organic Photoconductors - a
Monte-Carlo Simulation Study", Physica Status Solidi B-Basic Research, 175,
15 (1993).
44. D. H. Dunlap, P. E. Parris, V. M. Kenkre, "Charge-dipole model for the
universal field dependence of mobilities in molecularly doped polymers",
Physical Review Letters, 77, 542 (1996).
45. H. C. F. Martens, P. W. M. Blom, H. F. M. Schoo, "Comparative study of hole
transport in poly(p-phenylene vinylene) derivatives", Physical Review B, 61,
7489 (2000).
46. S. Selberherr, Analysis and simulation of semiconductor devices. (1984).
47. M. A. Lampert, P. Mark, Current Injection in Solids (Academic Press, New
York), (1970).
48. P. Langevin, "The recombination and mobilities of ions in gases", Annales De
Chimie Et De Physique, 28, 433 (1903).
49. C. D. Child, "Discharge from hot CaO.", Physical Review, 32, 0492 (1911).
50. M. A. Lampert, P. Mark, Current injection in solids (Academic Press, New
York), 1970).
51. Murgatro.Pn, "Theory of Space-Charge-Limited Current Enhanced by Frenkel
Effect", Journal of Physics D-Applied Physics, 3, 151 (1970).
126
52. W. Helfrich, Schneide.Wg, "Recombination Radiation in Anthracene Crystals",
Physical Review Letters, 14, 229 (1965).
53. S. J. Konezny, D. L. Smith, M. E. Galvin, L. J. Rothberg, "Modeling the
influence of charge traps on single-layer organic light-emitting diode
efficiency", Journal of Applied Physics, 99, 064509 (2006).
54. Y. Wu, Y. C. Zhou, H. R. Wu, Y. Q. Zhan, J. Zhou, S. T. Zhang, J. M. Zhao, Z. J.
Wang, X. M. Ding, X. Y. Hou, "Metal-induced photoluminescence quenching
of tri-(8-hydroxyquinoline) aluminum", Applied Physics Letters, 87, 044104
(2005).
55. Y. Wu, H. R. Wu, M. L. Wang, M. Lu, Q. L. Song, X. M. Ding, X. Y. Hou, "Metal-
induced photoluminescence quenching in thin organic films originating from
noncontact energy transfer between single molecule and atom", Applied
Physics Letters, 90, 154105 (2007).
56. T. Dienel, H. Proehl, R. Forker, K. Leo, T. Fritz, "Metal-induced
photoluminescence quenching of organic molecular crystals", Journal of
Physical Chemistry C, 112, 9056 (2008).
57. A. L. Burin, M. A. Ratner, "Exciton migration and cathode quenching in
organic light emitting diodes", Journal of Physical Chemistry A, 104, 4704
(2000).
58. S. J. Konezny, L. J. Rothberg, M. E. Galvin, D. L. Smith, "The effects of
energetic disorder and polydispersity in conjugation length on the efficiency
127
of polymer-based light-emitting diodes", Applied Physics Letters, 97, 143305
(2010).
59. L. J. A. Koster, V. D. Mihailetchi, P. W. M. Blom, "Bimolecular recombination
in polymer/fullerene bulk heterojunction solar cells", Applied Physics Letters,
88, 052104 (2006).
60. Y. Shirota, Y. Kuwabara, H. Inada, T. Wakimoto, H. Nakada, Y. Yonemoto, S.
Kawami, K. Imai, "Multilayered Organic Electroluminescent Device Using a
Novel Starburst Molecule, 4,4',4''-Tris(3-
Methylphenylphenylamino)Triphenylamine, as a Hole Transport Material",
Applied Physics Letters, 65, 807 (1994).
61. G. Li, C. H. Kim, Z. Zhou, J. Shinar, K. Okumoto, Y. Shirota, "Combinatorial
study of exciplex formation at the interface between two wide band gap
organic semiconductors", Applied Physics Letters, 88, 253505 (2006).
62. S. A. VanSlyke, C. H. Chen, C. W. Tang, "Organic electroluminescent devices
with improved stability", Applied Physics Letters, 69, 2160 (1996).
63. Y. Shirota, Y. Kuwabara, H. Inada, T. Wakimoto, H. Nakada, Y. Yonemoto, S.
Kawami, K. Imai, "Multilayered organic electroluminescent device using a
novel starburst molecule, 4, 4 ', 4 ''-tris (3-methylphenylphenylamino)
triphenylamine, as a hole transport material", Applied Physics Letters, 65, 807
(1994).
128
64. Z. B. Deng, X. M. Ding, S. T. Lee, W. A. Gambling, "Enhanced brightness and
efficiency in organic electroluminescent devices using SiO buffer layers",
Applied Physics Letters, 74, 2227 (1999).
65. H. Jiang, Y. Zhou, B. S. Ooi, Y. Chen, T. Wee, Y. L. Lam, J. Huang, S. Liu,
"Improvement of organic light-emitting diodes performance by the insertion
of a Si3N4 layer", Thin Solid Films, 363, 25 (2000).
66. D. Liu, C. G. Zhen, X. S. Wang, D. C. Zou, B. W. Zhang, Y. Cao, "Enhancement
in brightness and efficiency of organic electroluminescent device using novel
N,N-di(9-ethylcarbaz-3-yl)-3-methylaniline as hole injecting and transporting
material", Synthetic Metals, 146, 85 (2004).
67. S. F. Chen, C. W. Wang, "Influence of the hole injection layer on the
luminescent performance of organic light-emitting diodes", Applied Physics
Letters, 85, 765 (2004).
68. J. Li, C. Ma, J. Tang, C. S. Lee, S. Lee, "Novel Starburst Molecule as a Hole
Injecting and Transporting Material for Organic Light-Emitting Devices",
Chemistry of Mateials, 17, 615 (2005).
69. C. Giebeler, H. Antoniadis, D. D. C. Bradley, Y. Shirota, "Influence of the hole
transport layer on the performance of organic light-emitting diodes", Journal
of Applied Physics, 85, 608 (1999).
129
70. S. Naka, H. Okada, H. Onnagawa, Y. Yamaguchi, T. Tsutsui, "Carrier transport
properties of organic materials for EL device operation", Synthetic Metals,
111, 331 (2000).
71. J. U. Wallace, R. H. Young, C. W. Tang, S. H. Chen, "Charge-retraction time-of-
flight measurement for organic charge transport materials", Applied Physics
Letters, 91, 152104 (2007).
72. S. C. Tse, K. C. Kwok, S. K. So, "Electron transport in naphthylamine-based
organic compounds", Applied Physics Letters, 89, 262102 (2006).
73. C. Giebeler, H. Antoniadis, D. D. C. Bradley, Y. Shirota, "Influence of the hole
transport layer on the performance of organic light-emitting diodes", Journal
of Applied Physics, 85, 608 (1999).
74. K. Itano, H. Ogawa, Y. Shirota, "Exciplex formation at the organic solid-state
interface: Yellow emission in organic light-emitting diodes using green-
fluorescent tris (8-quinolinolato) aluminum and hole-transporting molecular
materials with low ionization potentials", Applied Physics Letters, 72, 636
(1998).
75. D. Y. Kondakov, J. R. Sandifer, C. W. Tang, R. H. Young, "Nonradiative
recombination centers and electrical aging of organic light-emitting diodes:
Direct connection between accumulation of trapped charge and luminance
loss", Journal of Applied Physics, 93, 1108 (2002).
130
76. R. H. Young, C. W. Tang, A. P. Marchetti, "Current-induced fluorescence
quenching in organic light-emitting diodes", Applied Physics Letters, 80, 874
(2002).
77. T. Haskins, A. Chowdhury, R. H. Young, J. R. Lenhard, A. P. Marchetti, L. J.
Rothberg, "Charge-Induced Luminescence Quenching in Organic Light-
Emitting Diodes", Chemistry of Materials, 16, 4675 (2004).
78. M. Sims, S. W. Venter, I. D. Parker, "A Novel Techique to Study OLED
Function", SID Symposium Digest of Technical Papers, 39, 223 (2008)
79. R. H. Young, J. R. Lenhard, D. Y. Kondakov, T. K. Hatwar, "Luminescence
Quenching in Blue Fluorescent OLEDs", SID Symposium Digest of Technical
Papers, 39, 705 (2008).
80. P. K. Wolber, B. S. Hudson, "Analytic Solution to the Forster Energy-Transfer
Problem in 2 Dimensions", Biophysical Journal, 28, 197 (1979).
81. T. Haskins, A. Chowdhury, R. H. Young, J. R. Lenhard, A. P. Marchetti, L. J.
Rothberg, "Charge-induced luminescence quenching in organic light-emitting
diodes", Chemistry of Materials, 16, 4675 (2004).
82. T. Forster, "Experimentelle Und Theoretische Untersuchung Des
Zwischenmolekularen Ubergangs Von Elektronenanregungsenergie",
Zeitschrift Fur Naturforschung Section a-a Journal of Physical Sciences, 4, 321
(1949).
131
83. H. Aziz, Z. D. Popovic, N. X. Hu, A. M. Hor, G. Xu, "Degradation mechanism of
small molecule-based organic light-emitting devices", Science, 283, 1900
(1999).
84. A. B. Chwang, R. C. Kwong, J. J. Brown, "Graded mixed-layer organic light-
emitting devices", Applied Physics Letters, 80, 725 (2002).
85. W. B. Gao, J. X. Sun, K. X. Yang, H. Y. Liu, J. H. Zhao, S. Y. Liu, "Improved
performances of the organic light-emitting devices by doping in the mixed
layer", Optical and Quantum Electronics, 35, 1149 (2003).
86. J. H. Lee, C. I. Wu, S. W. Liu, C. A. Huang, Y. Chang, "Mixed host organic light-
emitting devices with low driving voltage and long lifetime", Applied Physics
Letters, 86, 103506 (2005).
87. L. J. A. Koster, E. C. P. Smits, V. D. Mihailetchi, P. W. M. Blom, "Device model
for the operation of polymer/fullerene bulk heterojunction solar cells",
Physical Review B, 72, 085205 (2005).
88. S. W. Liu, J. H. Lee, C. C. Lee, C. T. Chen, J. K. Wanga, "Charge carrier mobility
of mixed-layer organic light-emitting diodes", Applied Physics Letters, 91,
142106 (2007).
89. C. W. Chen, T. Y. Cho, C. C. Wu, H. L. Yu, T. Y. Luh, "Fuzzy-junction organic
light-emitting devices", Applied Physics Letters, 81, 1570 (2002).
132
90. A. Gusso, D. G. Ma, I. A. Hummelgen, M. G. E. da Luz, "Modeling of organic
light-emitting diodes with graded concentration in the emissive multilayer",
Journal of Applied Physics, 95, 2056 (2004).
91. R. Meerheim, M. Furno, S. Hofmann, B. Lussem, K. Leo, "Quantification of
energy loss mechanisms in organic light-emitting diodes", Applied Physics
Letters, 97, 253305 (2010).
92. K. A. Neyts, "Simulation of light emission from thin-film microcavities",
Journal of the Optical Society of America a-Optics Image Science and Vision,
15, 962 (1998).
93. S. Mladenovski, S. Hofmann, S. Reineke, L. Penninck, T. Verschueren, K. Neyts,
"Integrated optical model for organic light-emitting devices", Journal of
Applied Physics, 109, 083114 (2011).
94. S. Mladenovski, S. Reineke, L. Penninck, K. Neyts, "Detailed analysis of
exciton decay time change in organic light-emitting devices caused by optical
effects", Journal of the Society for Information Display, 19, 80 (2011).
95. X. W. Chen, W. C. H. Choy, S. L. He, "Efficient and rigorous modeling of light
emission in planar multilayer organic light-emitting diodes", Journal of
Display Technology, 3, 110 (2007).
96. B. C. Krummacher, S. Nowy, J. Frischeisen, M. Klein, W. Brutting, "Efficiency
analysis of organic light-emitting diodes based on optical simulation",
Organic Electronics, 10, 478 (2009).
133
97. M. Furno, R. Meerheim, S. Hofmann, B. Lussem, K. Leo, "Efficiency and rate
of spontaneous emission in organic electroluminescent devices", Physical
Review B, 85, 115205 (2012).
98. J. D. Kotlarski, P. W. M. Blom, L. J. A. Koster, M. Lenes, L. H. Slooff,
"Combined optical and electrical modeling of polymer : fullerene bulk
heterojunction solar cells", Journal of Applied Physics, 103, 084502 (2008).
99. http://refractiveindex.info/.
100. K. Saxena, V. K. Jain, D. S. Mehta, "A review on the light extraction techniques
in organic electroluminescent devices", Optical Materials, 32, 221 (2009).
101. N. K. Patel, S. Cina, J. H. Burroughes, "High-efficiency organic light-emitting
diodes", Ieee Journal of Selected Topics in Quantum Electronics, 8, 346 (2002).
102. C. F. Madigan, M. H. Lu, J. C. Sturm, "Improvement of output coupling
efficiency of organic light-emitting diodes by backside substrate
modification", Applied Physics Letters, 76, 1650 (2000).
103. S. Moller, S. R. Forrest, "Improved light out-coupling in organic light emitting
diodes employing ordered microlens arrays", Journal of Applied Physics, 91,
3324 (2002).
104. M. Fujita, T. Ueno, T. Asano, S. Noda, H. Ohhata, T. Tsuji, H. Nakada, N.
Shimoji, "Organic light-emitting diode with ITO/organic photonic crystal",
Electronics Letters, 39, 1750 (2003).
134
105. D. K. Gifford, D. G. Hall, "Emission through one of two metal electrodes of an
organic light-emitting diode via surface-plasmon cross coupling", Applied
Physics Letters, 81, 4315 (2002).
106. D. K. Gifford, D. G. Hall, "Extraordinary transmission of organic
photoluminescence through an otherwise opaque metal layer via surface
plasmon cross coupling", Applied Physics Letters, 80, 3679 (2002).
107. Y. J. Lee, S. H. Kim, J. Huh, G. H. Kim, Y. H. Lee, S. H. Cho, Y. C. Kim, Y. R. Do,
"A high-extraction-efficiency nanopatterned organic light-emitting diode",
Applied Physics Letters, 82, 3779 (2003).
108. E. F. Schubert, N. E. J. Hunt, M. Micovic, R. J. Malik, D. L. Sivco, A. Y. Cho, G. J.
Zydzik, "Highly Efficient Light-Emitting-Diodes with Microcavities", Science,
265, 943 (1994).
109. K. Neyts, P. De Visschere, D. K. Fork, G. B. Anderson, "Semitransparent metal
or distributed Bragg reflector for wide-viewing-angle organic light-emitting-
diode microcavities", Journal of the Optical Society of America B-Optical
Physics, 17, 114 (2000).
110. A. Dodabalapur, L. J. Rothberg, T. M. Miller, E. W. Kwock, "Microcavity Effects
in Organic Semiconductors", Applied Physics Letters, 64, 2486 (1994).
111. A. Dodabalapur, L. J. Rothberg, R. H. Jordan, T. M. Miller, R. E. Slusher, J. M.
Phillips, "Physics and applications of organic microcavity light emitting
diodes", Journal of Applied Physics, 80, 6954 (1996).
135
112. H. Riel, S. Karg, T. Beierlein, W. Riess, K. Neyts, "Tuning the emission
characteristics of top-emitting organic light-emitting devices by means of a
dielectric capping layer: An experimental and theoretical study", Journal of
Applied Physics, 94, 5290 (2003).
113. L. S. Hung, C. W. Tang, M. G. Mason, P. Raychaudhuri, J. Madathil,
"Application of an ultrathin LiF/Al bilayer in organic surface-emitting diodes",
Applied Physics Letters, 78, 544 (2001).
114. H. Riel, S. Karg, T. Beierlein, B. Ruhstaller, W. Riess, "Phosphorescent top-
emitting organic light-emitting devices with improved light outcoupling",
Applied Physics Letters, 82, 466 (2003).
115. R. S. Cok, J. D. Shore, "Microcavity white-emitting OLED devices", Journal of
the Society for Information Display, 17, 617 (2009).
116. http://rredc.nrel.gov/solar/spectra/am1.5/.
117. V. D. Mihailetchi, L. J. A. Koster, J. C. Hummelen, P. W. M. Blom,
"Photocurrent generation in polymer-fullerene bulk heterojunctions",
Physical Review Letters, 93, 216601 (2004).
118. P. W. M. Blom, V. D. Mihailetchi, L. J. A. Koster, D. E. Markov, "Device physics
of polymer : fullerene bulk heterojunction solar cells", Advanced Materials,
19, 1551 (2007).
119. L. Onsager, "Deviations from Ohm's Law in Weak Electrolytes", Journal of
Chemical Physics, 2, 599 (1934).
136
120. L. Onsager, "Initial recombination of ions", Physics Review, 54, 554 (1938).
121. C. L. Braun, "Electric-Field Assisted Dissociation of Charge-Transfer States as a
Mechanism of Photocarrier Production", Journal of Chemical Physics, 80,
4157 (1984).
122. B. P. Rand, D. P. Burk, S. R. Forrest, "Offset energies at organic semiconductor
heterojunctions and their influence on the open-circuit voltage of thin-film
solar cells", Physical Review B, 75, 115327 (2007).
123. M. C. Scharber, D. Wuhlbacher, M. Koppe, P. Denk, C. Waldauf, A. J. Heeger,
C. L. Brabec, "Design rules for donors in bulk-heterojunction solar cells -
Towards 10 % energy-conversion efficiency", Advanced Materials, 18, 789
(2006).
124. P. Peumans, S. R. Forrest, "Separation of geminate charge-pairs at donor-
acceptor interfaces in disordered solids", Chemical Physics Letters, 398, 27
(2004).
125. M. L. Zhang, H. Wang, C. W. Tang, "Effect of the highest occupied molecular
orbital energy level offset on organic heterojunction photovoltaic cells",
Applied Physics Letters, 97, 143503 (2010).
126. S. Barth, P. Muller, H. Riel, P. F. Seidler, W. Riess, H. Vestweber, H. Bassler,
"Electron mobility in tris(8-hydroxy-quinoline)aluminum thin films
determined via transient electroluminescence from single- and multilayer
organic light-emitting diodes", Journal of Applied Physics, 89, 3711 (2001).
137
127. S. W. Culligan, A. C. A. Chen, J. U. Wallace, K. P. Klubek, C. W. Tang, S. H. Chen,
"Effect of hole mobility through emissive layer on temporal stability of blue
organic light-emitting diodes", Advanced Functional Materials, 16, 1481
(2006).
128. S. H. Kim, J. Jang, J. Y. Lee, "Relationship between host energy levels and
device performances of phosphorescent organic light-emitting diodes with
triplet mixed host emitting structure", Applied Physics Letters, 91, 083511
(2007).
129. J. Meyer, S. Hamwi, T. Bulow, H. H. Johannes, T. Riedl, W. Kowalsky, "Highly
efficient simplified organic light emitting diodes", Applied Physics Letters, 91,
113506 (2007).
130. Y. H. Niu, M. S. Liu, J. W. Ka, J. Bardeker, M. T. Zin, R. Schofield, Y. Chi, A. K. Y.
Jen, "Crosslinkable hole-transport layer on conducting polymer for high-
efficiency white polymer light-emitting diodes", Advanced Materials, 19, 300
(2007).
131. R. Mitsumoto, T. Araki, E. Ito, Y. Ouchi, K. Seki, K. Kikuchi, Y. Achiba, H.
Kurosaki, T. Sonoda, H. Kobayashi, O. V. Boltalina, V. K. Pavlovich, L. N.
Sidorov, Y. Hattori, N. Liu, S. Yajima, S. Kawasaki, F. Okino, H. Touhara,
"Electronic structures and chemical bonding of fluorinated fullerenes studied
by NEXAFS, UPS, and vacuum-UV absorption spectroscopies", Journal of
Physical Chemistry A, 102, 552 (1998).
138
132. R. Konenkamp, G. Priebe, B. Pietzak, "Carrier mobilities and influence of
oxygen in C-60 films", Physical Review B, 60, 11804 (1999).
133. M. L. Zhang, H. Wang, C. W. Tang, "Hole-transport limited S-shaped I-V
curves in planar heterojunction organic photovoltaic cells", Applied Physics
Letters, 99, 213506 (2011).
134. T. Y. Chu, O. K. Song, "Hole mobility of N,N '-bis(naphthalen-1-yl)-N,N '-
bis(phenyl) benzidine investigated by using space-charge-limited currents",
Applied Physics Letters, 90, 203512 (2007).
135. N. S. Sariciftci, L. Smilowitz, A. J. Heeger, F. Wudl, "Photoinduced Electron-
Transfer from a Conducting Polymer to Buckminsterfullerene", Science, 258,
1474 (1992).
136. M. Zhang, H. Wang, H. Tian, Y. Geng, C. W. Tang, "Bulk Heterojunction
Photovoltaic Cells with Low Donoe Concentration", Advanced Materials, 23,
4960 (2011).
137. M. L. Zhang, H. Wang, C. W. Tang, "Effect of the highest occupied molecular
orbital energy level offset on organic heterojunction photovoltaic cells",
Applied Physics Letters, 97, 143503 (2010).
138. C. J. Brabec, A. Cravino, D. Meissner, N. S. Sariciftci, T. Fromherz, M. T.
Rispens, L. Sanchez, J. C. Hummelen, "Origin of the open circuit voltage of
plastic solar cells", Advanced Functional Materials, 11, 374 (2001).
139
139. C. J. Brabec, A. Cravino, D. Meissner, N. S. Sariciftci, M. T. Rispens, L. Sanchez,
J. C. Hummelen, T. Fromherz, "The influence of materials work function on
the open circuit voltage of plastic solar cells", Thin Solid Films, 403, 368
(2002).
140. T. Stubinger, W. Brutting, "Exciton diffusion and optical interference in
organic donor-acceptor photovoltaic cells", Journal of Applied Physics, 90,
3632 (2001).
141. F. Monestier, J. J. Simon, P. Torchio, L. Escoubas, B. Ratier, W. Hojeij, B. Lucas,
A. Moliton, M. Cathelinaud, C. Defranoux, F. Flory, "Optical modeling of
organic solar cells based on CuPc and C-60", Applied Optics, 47, C251 (2008).
142. H. Looyenga, "Dielectric constants of heterogenous mixtures", Physica, 31,
401 (1965).
143. A. P. Marchetti, K. E. Sassin, R. H. Young, L. J. Rothberg, D. Y. Kondakov,
"Integer charge transfer states in organic light-emitting diodes: Optical
detection of hole carriers at the anode vertical bar organic interface", Journal
of Applied Physics, 109, 013709 (2011).
144. R. R. Zope, T. Baruah, M. R. Pederson, B. I. Dunlap, "Static dielectric response
of icosahedral fullerenes from C-60 to C-2160 characterized by an all-electron
density functional theory", Physical Review B, 77, 115452 (2008).
140
145. M. M. Mandoc, W. Veurman, L. J. A. Koster, B. de Boer, P. W. M. Blom,
"Origin of the reduced fill factor and photocurrent in MDMO-PPV : PCNEPV
all-polymer solar cells", Advanced Functional Materials, 17, 2167 (2007).
146. B. de Boer, A. Hadipour, P. W. M. Blom, "Organic tandem and multi-junction
solar cells", Advanced Functional Materials, 18, 169 (2008).
147. D. Cheyns, B. P. Rand, P. Heremans, "Organic tandem solar cells with
complementary absorbing layers and a high open-circuit voltage", Applied
Physics Letters, 97, 033301 (2010).
148. M. Riede, C. Uhrich, J. Widmer, R. Timmreck, D. Wynands, G. Schwartz, W. M.
Gnehr, D. Hildebrandt, A. Weiss, J. Hwang, S. Sundarraj, P. Erk, M. Pfeiffer, K.
Leo, "Efficient Organic Tandem Solar Cells based on Small Molecules",
Advanced Functional Materials, 21, 3019 (2011).
149. S. Sista, Z. R. Hong, L. M. Chen, Y. Yang, "Tandem polymer photovoltaic cells-
current status, challenges and future outlook", Energy & Environmental
Science, 4, 1606 (2011).
150. J. Yang, R. Zhu, Z. R. Hong, Y. J. He, A. Kumar, Y. F. Li, Y. Yang, "A Robust Inter-
Connecting Layer for Achieving High Performance Tandem Polymer Solar
Cells", Advanced Materials, 23, 3465 (2011).
151. M. L. Zhang, H. Wang, C. W. Tang, "Tandem photovoltaic cells based on low-
concentration donor doped C-60", Organic Electronics, 13, 249 (2012).
141
152. J. G. Xue, S. Uchida, B. P. Rand, S. R. Forrest, "Asymmetric tandem organic
photovoltaic cells with hybrid planar-mixed molecular heterojunctions",
Applied Physics Letters, 85, 5757 (2004).
153. L. S. Liao, W. K. Slusarek, T. K. Hatwar, M. L. Ricks, D. L. Comfort, "Tandem
organic light-emitting mode using hexaazatriphenylene hexacarbonitrile in
the intermediate connector", Advanced Materials, 20, 324 (2008).
154. N. K. Persson, H. Arwin, O. Inganas, "Optical optimization of polyfluorene-
fullerene blend photodiodes", Journal of Applied Physics, 97, 034503 (2005).
155. A. Hadipour, B. de Boer, P. W. M. Blom, "Device operation of organic tandem
solar cells", Organic Electronics, 9, 617 (2008).
142
Appendix A
Program for the Simulation of OLEDs
(Electrical Part and Exciton Part)
143
A.1 Flow diagram
144
A.2 Codes
//------------------------------------------------------------------------------------------ // OLED model: electrical part and excition part // C++ codes to calculate the charge carrier injection, transport and // recombination, and excition generation, quenching, diffusion and decay in // OLED devices //------------------------------------------------------------------------------------------ #include <math.h> #include <cmath> #include <iostream> #include <fstream> #include <string> #include <sstream> using namespace std; //========================================================= void Initiate_Array(double* layerorder, double* position,double* Eh0, double* El0,double* up0,double* un0,double* Fp0,double* Fn0,double* qyield,double* hole_quench_distance, double* electron_quench_distance,double* sigma0, int N,int NL,int* NLayer,double Eanode,double Ecathode,double* Eh00, double* El00, double* up00,double* un00,double* Fp00,double* Fn00,double* qyield00,double* hole_quench_distance00, double* electron_quench_distance00,double* sigma00,double dmA) // divide the OLED device into multiple mono-layers { int i; int j; layerorder[0]=0; position[0]=0; Eh0[0]=Eanode; El0[0]=Eanode; up0[0]=0; un0[0]=0; Fp0[0]=0; Fn0[0]=0; qyield[0]=0; sigma0[0]=0; for (j=1;j<=NL;j++) { for (i=NLayer[j-1]+1;i<=NLayer[j];i++) {
145
layerorder[i]=j; Eh0[i]=Eh00[j]; El0[i]=El00[j]; up0[i]=up00[j]; un0[i]=un00[j]; Fp0[i]=Fp00[j]; Fn0[i]=Fn00[j]; qyield[i]=qyield00[j]; hole_quench_distance[i]=hole_quench_distance00[j]; electron_quench_distance[i]=electron_quench_distance00[j]; sigma0[i]=sigma00[j]; position[i]=position[i-1]+dmA; } } position[N+1]=position[N]+dmA; layerorder[N+1]=NL+1; Eh0[N+1]=Ecathode; El0[N+1]=Ecathode; up0[N+1]=0; un0[N+1]=0; Fp0[N+1]=0; Fn0[N+1]=0; qyield[N+1]=0; sigma0[N+1]=0; } //========================================================== //========================================================== void Write_Files (double* position,double* p,double* n, double* F,double V, double* jt, double* R, double* Rif, double* Rnew,double* s,double* Eh,double* El,double* up,double* un, double* jpR, double* jnR,double* jp, double* jn, double* jp_drift, double* jp_diff, double* jn_drift, double* jn_diff, int N,int NJ) { ofstream myfile; ostringstream ss; ss << "Jstep" << NJ << ".dat"; myfile.open( ss.str().c_str() ); myfile<< "Number" << " " << "Position(A)" << " " << "Holes(1/cm3)" << " " << "Electrons(1/cm3)" << " " << "ElectricField(V/cm)" << " " << "Volage" << " " << "J_Total(A/cm2)" << " " << "RecombinationBulk(1/cm3s)" << " " << "RecombinatinInterface(1/cm3s)" << " " << "RecombinationTotal(1/cm3s)" << "
146
" << "ExcitionDecay(1/cm3s)" << " "<< "HOMO(ev)" << " " << "LUMO(ev)" << " " << "HoleMobility(cm2/Vs)" << " " << "ElectronMobility(cm2/Vs)" << " "<< "J_Hole_Corrected(A/cm2)" << " " << "J_Electron_Corrected(A/cm2)" << " " << "J_Hole(A/cm2)" << " " << "J_Electron(A/cm2)" << " " << "Jp_drift(A/cm2)" << " " << "Jp_diff(A/cm2)" << " " << "Jn_drift(A/cm2)" << " " << "Jn_diff(A/cm2)" << " "<< endl; int i; for(i=0;i<=N+1;i++) {
myfile << i << " " << position[i] << " " << p[i] << " " << n[i] << " " << F[i] << " " << V << " "<<jt[i]<< " "<<R[i]<< " "<<Rif[i]<< " "<<Rnew[i]<< " "<<s[i]<< " " << Eh[i] << " " << El[i] << " " << up[i]<< " " << un[i] << " " << jpR[i] << " " << jnR[i] << " "<< jp[i] << " " << jn[i] << " " << jp_drift[i] << " "<< jp_diff[i] << " "<< jn_drift[i] << " "<< jn_diff[i] << " "<< endl;
} myfile.close(); } //========================================================== //========================================================== double Estimate_dt (double* p, double* n,double* F, double* Fint,double* up, double* un, int N,double dm, double diel_0, double diel_r,double e,double ts_factor,double Hole_Injection_Factor, double Electron_Injection_Factor, double Hole_Injection_B,double Electron_Injection_B) // estimate the discrete time scale for the simulation { double uFmax,x,dt; int i; double kT=0.026; double dE; double f=0,phi=0; uFmax=0; for (i=1;i<=N;i++) { x=abs(up[i]*F[i]); if (uFmax<=x) uFmax=x; x=abs(un[i]*F[i]); if (uFmax<=x) uFmax=x; x=abs(up[i]*kT/dm); if (uFmax<=x) uFmax=x; x=abs(un[i]*kT/dm);
147
if (uFmax<=x) uFmax=x; } if (Fint[0]>0) { f=(1.438e-7)*Fint[0]/(diel_r*kT*kT); phi=1/f+1/sqrt(f)-sqrt(1+2*sqrt(f))/f; dE=-Hole_Injection_B+sqrt(1.438e-7*Fint[0]/diel_r); if (dE>=0) dE=0;
if(Hole_Injection_Factor*4*phi*phi*up[0]*Fint[0]*exp(dE/kT)/p[0]>uFmax) uFmax=Hole_Injection_Factor*4*phi*phi*up[0]*Fint[0]*exp(dE/kT)/p[0];
} if (Fint[N]>0) { f=(1.438e-7)*Fint[N]/(diel_r*kT*kT); phi=1/f+1/sqrt(f)-sqrt(1+2*sqrt(f))/f; dE=-Electron_Injection_B+sqrt(1.438e-7*Fint[N]/diel_r); if (dE>=0) dE=0;
if(Electron_Injection_Factor*4*phi*phi*un[N+1]*Fint[N]*exp(dE/kT) /n[N+1]>uFmax) uFmax=Electron_Injection_Factor*4*phi*phi*un[N+1]*Fint[N]*exp(dE/kT) /n[N+1]; } dt=dm/(uFmax*ts_factor); return dt; } //========================================================= double Calculate_Voltage( double* p,double* n,double* F,double* Fint,double* Eh0,double* El0,double* Eh,double* El, double Eanode, double Ecathode, int N, double L, double* up, double* un, double* up0, double* un0, double* Fp0,double* Fn0, double dm, double diel_0, double diel_r,double e) // calculate the voltage and electric field inside the device // Fint is the electric field at the interface between monolayers // F is the electric field inside the monolayer { int i; int j; for (i=0;i<=N;i++)
148
{ Fint[i]=0; for(j=0;j<=N+1;j++) { if (j<=i) Fint[i]=Fint[i]+dm*e*(p[j]-n[j])/(2*diel_0*diel_r); if (j>i) Fint[i]=Fint[i]-dm*e*(p[j]-n[j])/(2*diel_0*diel_r); } } for (i=1;i<=N;i++) { F[i]=(Fint[i-1]+Fint[i])/2; } double V=0; for (i=1;i<=N;i++) { V=V+F[i]*dm; Eh[i]=Eh0[i]+V; El[i]=El0[i]+V; // so far V is only consider the electric potential drop up[i]=up0[i]*exp(abs(Fp0[i]*sqrt(abs(F[i])))); un[i]=un0[i]*exp(abs(Fn0[i]*sqrt(abs(F[i])))); } up[0]=up0[1]*exp(abs(Fp0[1]*sqrt(abs(Fint[0])))); un[N+1]=un0[N]*exp(abs(Fn0[N]*sqrt(abs(Fint[N])))); Eh[0]=Eh0[0]; El[0]=El0[0]; Eh[N+1]=V+Eh0[N+1]; El[N+1]=V+El0[N+1]; V=V+(Ecathode-Eanode);
// consider the built-in potential+ potential drop return V; } //========================================================== double Kapa(double E, double sigma) { double pi=3.14159265359; return exp((E*E)/(2*sigma*sigma))/(sigma*sqrt(2*pi));
149
} double G_Absolute(double deltaE, double sigma1,double sigma2){ double E1,E2,dE=0.01; double kT=0.026; double g=0; double integration1=0; if(sigma1==0 && sigma2==0) g=exp(-deltaE/kT); else { if(sigma1==0 && sigma2!=0) { E1=0; integration1=0; for(E2=-1;E2<=1;E2=E2+dE) { if (E2+deltaE>E1) integration1=integration1+Kapa(E2,sigma2)*exp(-(E2+deltaE-E1)/kT)*dE; else integration1=integration1+Kapa(E2,sigma2)*dE; } g=integration1; } else { if (sigma1!=0 && sigma2==0) { E2=0; integration1=0; for (E1=-1;E1<=1;E1=E1+dE) { if (E2+deltaE>E1) integration1=integration1+exp(-(E2+deltaE-E1)/kT)*Kapa(E1,sigma1)*dE; else integration1=integration1+Kapa(E1,sigma1)*dE; } g=integration1; } else { for (E1=-1;E1<=1;E1=E1+dE) {
150
integration1=0; for(E2=-1;E2<=1;E2=E2+dE) { if (E2+deltaE>E1) integration1=integration1+Kapa(E2,sigma2)*exp(-(E2+deltaE-E1)/kT)*dE; else integration1=integration1+Kapa(E2,sigma2)*dE; } g=g+integration1*Kapa(E1,sigma1)*dE; } } } } return g; } double G(double deltaE,double sigma1,double sigma2) { return G_Absolute(deltaE,sigma1,sigma2)/G_Absolute(0,sigma1,sigma2); // if ((deltaE-sigma1-sigma2)>=0) return exp(-(deltaE-sigma1-sigma2)/0.026);
// else return 1; } void Calculate_ddR(double* p, double* n, double* F, double* Fint, double* up, double* un, double* up0,double* un0,double* Eh0, double* El0, double* sigma00, double* R, double* Rif, double* Rnew,double* s, double* dp_plus_drift, double* dp_minus_drift, double* dn_plus_drift, double* dn_minus_drift, double* dp_plus_diff, double* dp_minus_diff, double* dn_plus_diff, double* dn_minus_diff, int* NLayer, int N, int NL, double dm, double dt,double diel_0, double diel_r,double e, double Hole_Injection_Factor, double Electron_Injection_Factor,double Recombination_Interface_Factor,double Hole_Injection_B,double Electron_Injection_B ) // calculate the charge carrier transport (drift and diffusion) and recombination { double dE; int i; double ssdE_p_plus,ssdE_p_minus,ssdE_n_plus,ssdE_n_minus; int order; double kT=0.026;
151
double f=0,phi=0; for (i=0;i<=N+1;i++)
{ dp_plus_drift[i]=0; dp_minus_drift[i]=0; dn_plus_drift[i]=0; dn_minus_drift[i]=0; }// clear the current array
for(i=0;i<=N+1;i++)
{ dp_plus_diff[i]=0; dp_minus_diff[i]=0; dn_plus_diff[i]=0; dn_minus_diff[i]=0; }
//************************************************* Holes if (Fint[0]>0) { f=(1.438e-7)*Fint[0]/(diel_r*kT*kT); phi=1/f+1/sqrt(f)-sqrt(1+2*sqrt(f))/f; dE=-Hole_Injection_B+sqrt(1.438e-7*Fint[0]/diel_r); if (dE>=0) dE=0; dp_plus_drift[0]=(dt/dm)*Hole_Injection_Factor*4*phi*phi*up[0]*Fint[0]*exp(dE/kT); // time e and devide e, so get rid of the e } else { dp_plus_drift[0]=0; // remember that at this time, the equation have F[1] so negative F no injection } if (F[1]>0) dp_plus_drift[1]=abs(up[1]*F[1]*dt/dm)*p[1]; //p[1] else dp_minus_drift[1]=abs(up[1]*F[1]*dt/dm)*p[1]; dp_plus_diff[1]=abs(up[1]*kT*dt/(dm*dm))*p[1]; int j; NLayer[0]=0; for(j=1;j<=NL;j++)//p[2]----p[N-1] {
152
for(i=NLayer[j-1]+2;i<=NLayer[j]-1;i++)// inside each layer { if (F[i]>0) dp_plus_drift[i]=abs(up[i]*F[i]*dt/dm)*p[i]; else dp_minus_drift[i]=abs(up[i]*F[i]*dt/dm)*p[i]; dp_plus_diff[i]=abs(up[i]*kT*dt/(dm*dm))*p[i]; dp_minus_diff[i]=dp_plus_diff[i]; } if(j!=NL)// if j!=NL, inter layer drift { i=NLayer[j]; dE=Eh0[i]-Eh0[i+1]-(F[i]+F[i+1])*dm/2; if (dE>0) { ssdE_p_plus=G(abs(dE),sigma00[j],sigma00[j+1]);ssdE_p_minus=1; } else { ssdE_p_minus=G(abs(dE),sigma00[j+1],sigma00[j]);ssdE_p_plus=1; } // calculate the interface cross probablity
if (F[i]>0) dp_plus_drift[i]=abs(sqrt(abs(up[i]*F[i]*up[i+1]*F[i+1]))*dt/dm) *p[i]*ssdE_p_plus;
else dp_minus_drift[i]=abs(up[i]*F[i]*dt/dm)*p[i];
dp_plus_diff[i]=abs(sqrt(up[i]*up[i+1])*kT*dt/(dm*dm))*p[i]*ssdE_p_plus; dp_minus_diff[i]=abs(up[i]*kT*dt/(dm*dm))*p[i]; // finish the ith layer i=NLayer[j]+1; if (F[i]>0)
dp_plus_drift[i]=abs(up[i]*F[i]*dt/dm)*p[i]; else
dp_minus_drift[i]=abs(sqrt(abs(up[i]*F[i]*up[i-1]*F[i-1]))*dt/dm) *p[i]*ssdE_p_minus;
dp_plus_diff[i]=abs(up[i]*kT*dt/(dm*dm))*p[i];
dp_minus_diff[i]=abs(sqrt(up[i]*up[i-1])*kT*dt/(dm*dm)) *p[i]*ssdE_p_minus;
153
// finish the i+1th layer } } //p[N],there is no holes on N+1 if (F[N]>0) dp_plus_drift[N]=abs(up[N]*F[N]*dt/dm)*p[N]; else dp_minus_drift[N]=abs(up[N]*F[N]*dt/dm)*p[N]; dp_plus_diff[N]=abs(up[N]*kT*dt/(dm*dm))*p[N]; dp_minus_diff[N]=dp_plus_diff[N]; //*************************************************************** //********************************** Electrons if (Fint[N]>0) { f=(1.438e-7)*Fint[N]/(diel_r*kT*kT); phi=1/f+1/sqrt(f)-sqrt(1+2*sqrt(f))/f; dE=-Electron_Injection_B+sqrt(1.438e-7*Fint[N]/diel_r); if (dE>=0) dE=0; dn_minus_drift[N+1]=(dt/dm)*Electron_Injection_Factor*4*phi*phi*un[N+1]*Fint[N]*exp(dE/kT); // time e and devide e, so get rid of the e } else { dn_minus_drift[N+1]=0; } //n[N] if (F[N]>0) dn_minus_drift[N]=abs(un[N]*F[N]*dt/dm)*n[N]; else dn_plus_drift[N]=abs(un[N]*F[N]*dt/dm)*n[N]; dn_minus_diff[N]=abs(un[N]*kT*dt/(dm*dm))*n[N]; //dn_plus_diff[N]=dn_minus_diff[N]; for(j=NL;j>=1;j--) //n[N-1]--n[2] { for(i=NLayer[j]-1;i>=NLayer[j-1]+2;i--)//inside layer {
154
if (F[i]>0) dn_minus_drift[i]=abs(un[i]*F[i]*dt/dm)*n[i]; else dn_plus_drift[i]=abs(un[i]*F[i]*dt/dm)*n[i]; dn_minus_diff[i]=abs(un[i]*kT*dt/(dm*dm))*n[i]; dn_plus_diff[i]=dn_minus_diff[i]; } if(j!=1)// between layers { i=NLayer[j-1]+1; dE=El0[i-1]-El0[i]-(F[i-1]+F[i])*dm/2; if (dE>0) { ssdE_n_minus=G(abs(dE),sigma00[j],sigma00[j-1]);ssdE_n_plus=1; } else { ssdE_n_minus=1; ssdE_n_plus=G(abs(dE),sigma00[j-1],sigma00[j]); } // caculate crossing factor if (F[i]>0)
dn_minus_drift[i]=abs(sqrt(abs(un[i]*F[i]*un[i-1]*F[i-1]))/dm*dt) *n[i]*ssdE_n_minus;
else dn_plus_drift[i]=abs(un[i]*F[i]*dt/dm)*n[i];
dn_minus_diff[i]=abs(sqrt(un[i]*un[i-1])*kT*dt/(dm*dm)) *n[i]*ssdE_n_minus; dn_plus_diff[i]=abs(un[i]*kT*dt/(dm*dm))*n[i]; // finish +1 layer i=NLayer[j-1]; if (F[i]>0)
dn_minus_drift[i]=abs(un[i]*F[i]*dt/dm)*n[i]; else
dn_plus_drift[i]=abs(sqrt(abs(un[i]*F[i]*un[i+1]*F[i+1]))*dt/dm) *n[i]*ssdE_n_plus;
dn_minus_diff[i]=abs(un[i]*kT*dt/(dm*dm))*n[i]; dn_plus_diff[i]=abs(sqrt(un[i]*un[i+1])*kT*dt/(dm*dm))*n[i]*ssdE_n_plus; // finish -1 layer }
155
} //n[1] if (F[1]>0) dn_minus_drift[1]=abs(un[1]*F[1]*dt/dm)*n[1]; else dn_plus_drift[1]=abs(un[1]*F[1]*dt/dm)*n[1]; dn_minus_diff[1]=abs(un[1]*kT*dt/(dm*dm))*n[1]; dn_plus_diff[1]=dn_minus_diff[1]; for(i=1;i<=N;i++) { R[i]=p[i]*n[i]*e*(un[i]+up[i])/(diel_0*diel_r); } if(Recombination_Interface_Factor>0.01) { for(j=1;j<=NL-1;j++) { i=NLayer[j]; if(Eh0[i]>Eh0[i+1] && El0[i]>El0[i+1]) // cross interface recombination only takes place when energy barrier // block both types of charge carriers { if (up[i]>un[i+1]) Rif[i]=p[i]*n[i+1]*e*(un[i+1])/(diel_0*diel_r);
// use umin(up,un) to calculate interface recombination else Rif[i]=p[i]*n[i+1]*e*(up[i])/(diel_0*diel_r); } } } for(i=1;i<=N;i++) { p[i]=p[i]-R[i]*dt; n[i]=n[i]-R[i]*dt; } for(j=1;j<=NL-1;j++) { i=NLayer[j]; p[i]=p[i]-Rif[i]*dt; n[i+1]=n[i+1]-Rif[i]*dt; }
156
p[0]=p[0]-dp_plus_drift[0]+dp_minus_diff[1]-dn_minus_diff[1]+dp_minus_drift[1]-dn_minus_drift[1]; //*** begin to calculate the change of p and n for each monolayer n[N+1]=n[N+1]-dn_minus_drift[N+1]+dn_plus_diff[N]-dp_plus_diff[N]+dn_plus_drift[N]-dp_plus_drift[N]; for (i=1;i<=N;i++) { p[i]=p[i]-dp_plus_diff[i]-dp_minus_diff[i]+dp_plus_diff[i-1]+ dp_minus_diff[i+1]-dp_plus_drift[i]-dp_minus_drift[i]+dp_plus_drift[i-1]+ dp_minus_drift[i+1]; n[i]=n[i]-dn_plus_diff[i]-dn_minus_diff[i]+dn_plus_diff[i-1]+ dn_minus_diff[i+1]-dn_plus_drift[i]-dn_minus_drift[i]+dn_plus_drift[i-1]+ dn_minus_drift[i+1]; } } //============================================= void Calculate_Current( double* jt,double* jpR, double* jnR,double* jp, double* jn, double* jp_drift, double* jp_diff, double* jn_drift, double* jn_diff, double* R, double* Rif, double* Rnew,double* s,double* IntR,double* IntRif, double* dp_plus_drift, double* dp_minus_drift, double* dn_plus_drift, double* dn_minus_drift, double* dp_plus_diff, double* dp_minus_diff, double* dn_plus_diff, double* dn_minus_diff, int* NLayer, int N, int NL,double dm, double dt,double diel_0, double diel_r,double e, double converge, int* check,int NJ,double* Fjtave, double* Fdjt, double* FjpRave, double* FdjpR,double* FjnRave,double* FdjnR, double* FIntR,double* FIntRif,int* FCheck) // calculate the current density in the device { int i; IntR[0]=0; IntRif[0]=0; for(i=1;i<=N;i++) { IntR[i]=IntR[i-1]+R[i]*e*dm; IntRif[i]=IntRif[i-1]+Rif[i]*e*dm; }
157
for (i=0;i<=N;i++) // remember to calculate the interface current flow, not the layer, this is the key // point, i is the ith interface, between i and i+1 { jp_drift[i]=e*dm*(dp_plus_drift[i]-dp_minus_drift[i+1])/dt; jn_drift[i]=-e*dm*(dn_plus_drift[i]-dn_minus_drift[i+1])/dt; jp_diff[i]=e*dm*(dp_plus_diff[i]-dp_minus_diff[i+1])/dt; jn_diff[i]=-e*dm*(dn_plus_diff[i]-dn_minus_diff[i+1])/dt; jp[i]=jp_drift[i]+jp_diff[i]; jn[i]=jn_drift[i]+jn_diff[i]; jt[i]=jp[i]+jn[i]+Rif[i]*e*dm; jpR[i]=jp[i]+IntR[i]+IntRif[i]; if (i!=0) jnR[i]=jn[i]+IntR[N]-IntR[i]+IntRif[N]-IntRif[i-1]; else jnR[i]=jn[i]+IntR[N]-IntR[i]+IntRif[N]; } double jpRmax,jpRmin,jpRave,jnRmax,jnRmin,jnRave,jtmax,jtmin,jtave; jpRmax=jpRmin=jpRave=jpR[0]; jnRmax=jnRmin=jnRave=jnR[0]; jtmax=jtmin=jtave=jt[0]; for(i=1;i<=N;i++) { if (jpRmax<=jpR[i]) jpRmax=jpR[i]; if (jpRmin>=jpR[i]) jpRmin=jpR[i]; if (jnRmax<=jnR[i]) jnRmax=jnR[i]; if (jnRmin>=jnR[i]) jnRmin=jnR[i]; if (jtmax<=jt[i]) jtmax=jt[i]; if (jtmin>=jt[i]) jtmin=jt[i]; jpRave=jpRave+jpR[i]; jnRave=jnRave+jnR[i]; jtave=jtave+jt[i]; } jpRave=jpRave/(N+1); jnRave=jnRave/(N+1); jtave=jtave/(N+1);
158
double djpR,djnR,djt; if (abs(jpRave)<1.0e-8) djpR=0; else djpR=(jpRmax-jpRmin)/jpRave; if (abs(jnRave)<1.0e-8) djnR=0; else djnR=(jnRmax-jnRmin)/jnRave ; if (abs(jtave)<1.0e-8) djt=0; else djt=(jtmax-jtmin)/jtave;
if (abs(djt)<=converge && abs(djpR)<=converge && abs(djnR)<=converge) check[0]=1;
FIntR[NJ]=IntR[N];
// turns the recombination to a unit of current, recombination current FIntRif[NJ]=IntRif[N]; Fjtave[NJ]=jtave; Fdjt[NJ]=djt; FjpRave[NJ]=jpRave; FdjpR[NJ]=djpR; FjnRave[NJ]=jnRave; FdjnR[NJ]=djnR; FCheck[NJ]=check[0]; } //======================================================= void Calculate_Exciton( double* p, double* n, double* F, double* Fint, double* up, double* un, double* up0,double* un0,double* Eh0, double* El0, double* sigma00, double* R, double* Rif, double* Rnew,double* s,int* NLayer, int N, int NL, double dm, double diel_0, double diel_r,double e, double converge, int Nmax,double Ldiffusion, double tlife,double* qyield, double* hole_quench_distance, double* electron_quench_distance, int NJ,double* FIntS,int* FCheckExciton) // calculate the exction diffusion, quenching and decay { int i,j,k; double quench[10000]={0}; double snew[10000]={0};
159
int check=0; double dE=0; for (i=0;i<=N+1;i++){s[i]=0;quench[i]=0;snew[i]=0;Rnew[i]=R[i];} for(j=1;j<=NL-1;j++) { i=NLayer[j]; dE=Eh0[i]-Eh0[i+1]; if( abs(Eh0[i]-Eh0[i+1]) < abs(El0[i]-El0[i+1]))
Rnew[i+1]=Rnew[i+1]+Rif[i]*G(abs(Eh0[i]-Eh0[i+1]), sigma00[j],sigma00[j+1]);
else Rnew[i]=Rnew[i]+Rif[i]*G(abs(El0[i]-El0[i+1]), sigma00[j+1],sigma00[j]);
} for(i=1;i<=N;i++) { for(j=1;j<=N;j++) { if (j!=i) quench[i]=quench[i]+(p[j]/tlife)*(3.1415926/2.0)*dm*pow(hole_quench_distance[j]*1.0e-8,6.0)/pow(abs(j-i)*dm,4.0)+ (n[j]/tlife)*(3.1415926/2.0)*dm*pow(electron_quench_distance[j]*1.0e-8,6.0)/pow(abs(j-i)*dm,4.0); // not same layer quenching else quench[i]=quench[i]+(p[j]/tlife)*(3.1415926/2.0)*dm*pow(hole_quench_distance[j]*1.0e-8,6.0)/pow(dm,4.0)+(n[j]/tlife)*(3.1415926/2.0)*dm*pow(electron_quench_distance[j]*1.0e-8,6.0)/pow(dm,4.0); // in the same layer, quenching } } double dmax=1/tlife; if (Ldiffusion*Ldiffusion/(dm*dm*tlife)>dmax) dmax=Ldiffusion*Ldiffusion/(dm*dm*tlife); for(i=1;i<=N;i++) { if(quench[i]>dmax) dmax=quench[i];
160
} double dt=1/(10*dmax); NLayer[0]=0; for (k=0;k<=Nmax && check==0; k++) { for(j=1;j<=NL;j++) { i=NLayer[j-1]+1; if(j!=1) { dE=(El0[i-1]-Eh0[i-1])-(El0[i]-Eh0[i]); snew[i]=s[i]+dt*((s[i+1]+s[i-1]*G(-dE,sigma00[j-1], sigma00[j])-s[i]-s[i]*G(dE,sigma00[j],sigma00[j-1])) *Ldiffusion*Ldiffusion/(dm*dm*tlife)-s[i]/tlife-quench[i]*s[i]+Rnew[i]); // consider for the cross interface excitons } else snew[i]=s[i]+dt*((s[i+1]-s[i]) *Ldiffusion*Ldiffusion/(dm*dm*tlife)-s[i]/tlife-quench[i]*s[i]+Rnew[i]); for(i=NLayer[j-1]+2;i<=NLayer[j]-1;i++) { snew[i]=s[i]+dt*((s[i+1]+s[i-1]-2*s[i]) *Ldiffusion*Ldiffusion/(dm*dm*tlife)-s[i]/tlife-quench[i]*s[i]+Rnew[i]); } i=NLayer[j]; if(j!=NL) { dE=(El0[i+1]-Eh0[i+1])-(El0[i]-Eh0[i]); snew[i]=s[i]+dt*((s[i+1]*G(-dE, sigma00[j+1],sigma00[j])+s[i-1]-s[i]-s[i]*G(dE,sigma00[j],sigma00[j+1])) *Ldiffusion*Ldiffusion/(dm*dm*tlife)-s[i]/tlife-quench[i]*s[i]+Rnew[i]); // consider for the cross interface excitons } else snew[i]=s[i]+dt*((s[i-1]-s[i]) *Ldiffusion*Ldiffusion/(dm*dm*tlife)-s[i]/tlife-quench[i]*s[i]+Rnew[i]); }
161
check=1; for (i=1;i<=N && check==1; i++) { if (snew[i]!=0 && abs((snew[i]-s[i])/snew[i])>converge*dt) check=0; } for(i=1;i<=N;i++) { s[i]=snew[i]; } } FCheckExciton[NJ]=check; FIntS[NJ]=0; for(i=1;i<=N;i++) { s[i]=s[i]/tlife; FIntS[NJ]=FIntS[NJ]+s[i]*e*dm*qyield[i]; } } //========================================== int main() { //*************** Part I: set up input parameters ******** double dm,dmA,e,diel_0,diel_r,sigma,kT; double dt,converge,ts_factor,NTMAX,Hole_Injection_Factor,Electron_Injection_Factor,Hole_Injection_B,Electron_Injection_B,Recombination_Interface_Factor; double Eanode,Ecathode; double JStart,JEnd,J,V; int NJStep; int NL; double LayerWidth[20]={0},Eh00[20]={0},El00[20]={0},up00[20]={0},un00[20]={0},Fp00[20]={0},Fn00[20]={0},hole_quench_distance00[20]={0},electron_quench_distance00[20]={0},qyield00[20]={0},sigma00[20]={0}; string LayerName[20]; int i=1; string AnodeName,CathodeName; int Nmax; double Ldiffusion,tlife,hole_quench_factor,electron_quench_factor;
162
int hole_quench_range,electron_quench_range; //*************** Part II: read input parameters ************* string line; ifstream myfile ("input.txt"); if (myfile.is_open()) { getline (myfile,line); cout << line << endl; getline (myfile,line); cout << line << endl; myfile >> JStart; getline (myfile,line); cout << JStart << endl;
getline (myfile,line); cout << line << endl; myfile >> NJStep; getline (myfile,line); cout << NJStep << endl; getline (myfile,line); cout << line << endl; getline (myfile,line); cout << line << endl; //JStart, JEnd, NJStep getline (myfile,line); cout << line << endl; getline (myfile,line); cout << line << endl; myfile >> ts_factor; getline (myfile,line); cout << ts_factor << endl; getline (myfile,line); cout << line << endl; myfile >> NTMAX; getline (myfile,line); cout << NTMAX << endl; getline (myfile,line); cout << line << endl;
163
myfile >> converge; getline (myfile,line);
cout << converge << endl;
getline (myfile,line); cout << line << endl; myfile >> Hole_Injection_Factor; getline (myfile,line); cout << Hole_Injection_Factor << endl; getline (myfile,line); cout << line << endl; myfile >> Hole_Injection_B; getline (myfile,line); cout << Hole_Injection_B << endl;
getline (myfile,line); cout << line << endl; myfile >> Electron_Injection_Factor; getline (myfile,line); cout << Electron_Injection_Factor << endl; getline (myfile,line); cout << line << endl; myfile >> Electron_Injection_B; getline (myfile,line); cout << Electron_Injection_B << endl; getline (myfile,line); cout << line << endl; myfile >> Recombination_Interface_Factor; getline (myfile,line); cout << Recombination_Interface_Factor << endl; getline (myfile,line); cout << line << endl; myfile >> Nmax; getline (myfile,line); cout << Nmax << endl;
getline (myfile,line); cout << line << endl;
164
myfile >> Ldiffusion; getline (myfile,line); cout << Ldiffusion << endl;
getline (myfile,line); cout << line << endl;
myfile >> tlife; getline (myfile,line);
cout << tlife << endl;
getline (myfile,line); cout << line << endl;
myfile >> diel_r; getline (myfile,line);
cout << diel_r << endl;
getline (myfile,line); cout << line << endl;
getline (myfile,line); cout << line << endl; // control parameters ts_factor,NTMAX,converge,sigma getline (myfile,line); cout << line << endl; getline (myfile,line); cout << line << endl; myfile >> dmA; getline (myfile,line); cout << dmA << endl;
getline (myfile,line); cout << line << endl; myfile >> NL; getline (myfile,line); cout << NL << endl;
getline (myfile,line); cout << line << endl; getline (myfile,AnodeName); cout << AnodeName << endl;
165
getline (myfile,line);
cout << line << endl; myfile >> Eanode; getline (myfile,line); cout << Eanode << endl; getline (myfile,line); cout << line << endl; getline (myfile,CathodeName ); cout << CathodeName << endl; getline (myfile,line); cout << line << endl; myfile >> Ecathode; getline (myfile,line); cout << Ecathode << endl; getline (myfile,line); cout << line << endl;// dmA,NL,Anode,Cathode for (i=1;i<=NL;i++){ getline (myfile,line); cout << line << endl; getline (myfile,LayerName[i]); cout << LayerName[i] << endl; getline (myfile,line); cout << line << endl; myfile >> LayerWidth[i]; getline (myfile,line); cout << LayerWidth[i] << endl; getline (myfile,line); cout << line << endl; myfile >> Eh00[i]; getline (myfile,line); cout << Eh00[i] << endl; getline (myfile,line); cout << line << endl; myfile >> El00[i]; getline (myfile,line); cout << El00[i] << endl; getline (myfile,line); cout << line << endl; myfile >> up00[i];
166
getline (myfile,line); cout << up00[i] << endl; getline (myfile,line); cout << line << endl; myfile >> Fp00[i]; getline (myfile,line); cout << Fp00[i] << endl; getline (myfile,line); cout << line << endl; myfile >> un00[i]; getline (myfile,line); cout << un00[i] << endl; getline (myfile,line); cout << line << endl; myfile >> Fn00[i]; getline (myfile,line); cout << Fn00[i] << endl; getline (myfile,line); cout << line << endl; myfile >> hole_quench_distance00[i]; getline (myfile,line); cout << hole_quench_distance00[i] << endl; getline (myfile,line); cout << line << endl; myfile >> electron_quench_distance00[i]; getline (myfile,line); cout << electron_quench_distance00[i] << endl; getline (myfile,line); cout << line << endl; myfile >> qyield00[i]; getline (myfile,line); cout << qyield00[i] << endl; getline (myfile,line); cout << line << endl; myfile >> sigma00[i]; getline (myfile,line); cout << sigma00[i] << endl; getline (myfile,line); cout << line << endl;
167
} myfile.close(); } else cout << "Unable to open file"; Ldiffusion=Ldiffusion*1.0e-7; //unit cm dm=dmA*1.0e-8; // unit cm e=1.6e-19; // unit C diel_0=8.854e-14; // vacuum dielectric constant 8.854e-14F/cm or 8.854e-14 C/V/cm kT=0.026; // unit eV //********************************************* //************************ Part III: define parameters to simulate *** double layerorder[2010]={0},position[2010]={0}; double p[2010]={0},n[2010]={0},Fint[2010]={0},F[2010]={0}, Eh[2010]={0},El[2010]={0},Eh0[2010]={0},El0[2010]={0},up[2010]={0}, un[2010]={0},up0[2010]={0},un0[2010]={0},Fp0[2010]={0},Fn0[2010]={0}, qyield[2010]={0},sigma0[2010]={0},hole_quench_distance[2010]={0}, electron_quench_distance[2010]={0}; double dp_plus_drift[2010]={0},dp_minus_drift[2010]={0}, dp_plus_diff[2010]={0},dp_minus_diff[2010]={0}; double dn_plus_drift[2010]={0},dn_minus_drift[2010]={0}, dn_plus_diff[2010]={0},dn_minus_diff[2010]={0}; double vp_drift_plus[2010]={0},vp_drift_minus[2010]={0}, vp_diff_plus[2010]={0},vp_diff_minus[2010]={0},vn_drift_plus[2010]={0}, vn_drift_minus[2010]={0},vn_diff_plus[2010]={0},vn_diff_minus[2010]={0}; double jp[2010]={0},jn[2010]={0},jpR[2010]={0},jnR[2010]={0}, jt[2010]={0},jn_drift[2010]={0},jn_diff[2010]={0},jp_drift[2010]={0}, jp_diff[2010]={0},s[2010]={0},R[2010]={0},Rif[2010]={0},Rnew[2010]={0}, IntR[2010]={0},IntRif[2010]={0}; int check[2]={0}; double Fjtave[50]={0},Fdjt[50]={0},FjpRave[50]={0},FdjpR[50]={0}, FjnRave[50]={0}, FdjnR[50]={0},FIntR[50]={0},FIntRif[50]={0},FIntS[50]={0}; int FCheck[50]={0},FCheckExciton[50]={0}; int N=0; double L=0; double t; int NLayer[10]={0};
168
//*************************** Part IV: build the device ************ int Nx; for (i=1;i<=NL;i++) { Nx=(int) (LayerWidth[i]/dmA); NLayer[i]=NLayer[i-1]+Nx; L=L+LayerWidth[i]*1.0e-8; N=N+Nx; } Initiate_Array(layerorder,position,Eh0,El0,up0,un0,Fp0,Fn0,qyield, hole_quench_distance,electron_quench_distance,sigma0,N,NL,NLayer,Eanode, Ecathode,Eh00,El00,up00,un00,Fp00,Fn00,qyield00,hole_quench_distance00,electron_quench_distance00,sigma00,dmA); //****************************** Part V: start J steps******************** int NJ=1; J=JStart; ofstream finalfile; finalfile.open("FinalFile.dat"); finalfile << "NJstep" << " " << "V" << " " << "J_Total(A/cm2)" << " " << "Bulk_Recombination(A/cm2)" << " " <<"Interface_Recombination(A/cm2)"<< " " << "Decay(A/cm2)" << " " << "J_Hole_Corrected(A/cm2)" << " " << "J_Electron_Corrected(A/cm2)" << " " << "dJ_total" << " " << "dJ_Hole_Corrected" << " " << "dJ_Electron_Corrected" << " " << "Check" << " "<<"checkExciton" <<" " << "t(s)" <<" " <<"dt(s)" <<endl; int j; p[0]=J*1.0e-14/(e*dm); // give the elctrode some carriers to begin the step, dt=1.0e-14 // here, maybe not accurate, we can change later n[N+1]=p[0]; for (NJ=1;NJ<=NJStep;NJ++) { check[0]=0; t=0; for(i=0;i<=N+1;i++){R[i]=0;Rif[i]=0;Rnew[i]=0;s[i]=0;} for (i=1;i<=NTMAX && check[0]==0;i++)
169
{ for (j=1;j<=100;j++) {
V=Calculate_Voltage(p,n,F,Fint,Eh0,El0,Eh,El,Eanode,Ecathode,N,L,up, un, up0, un0, Fp0,Fn0,dm,diel_0,diel_r,e); dt=Estimate_dt
(p,n,F,Fint,up,un,N,dm,diel_0,diel_r,e,ts_factor,Hole_Injection_Factor,Electron_Injection_Factor,Hole_Injection_B,Electron_Injection_B);
t=t+dt; Calculate_ddR(p, n, F, Fint,up, un, up0,un0,Eh0, El0,sigma00,R, Rif, Rnew,s,dp_plus_drift, dp_minus_drift, dn_plus_drift, dn_minus_drift,dp_plus_diff, dp_minus_diff, dn_plus_diff,dn_minus_diff, NLayer,N, NL, dm, dt,diel_0,diel_r,e,Hole_Injection_Factor,Electron_Injection_Factor,Recombination_Interface_Factor,Hole_Injection_B,Electron_Injection_B); p[0]=p[0]+J*dt/(e*dm); n[N+1]=n[N+1]+J*dt/(e*dm); //***** the importance of current control } Calculate_Current(jt,jpR, jnR,jp, jn, jp_drift, jp_diff, jn_drift, jn_diff,R, Rif, Rnew,s,IntR,IntRif, dp_plus_drift, dp_minus_drift, dn_plus_drift, dn_minus_drift,dp_plus_diff, dp_minus_diff, dn_plus_diff, dn_minus_diff, NLayer, N, NL,dm,dt,diel_0, diel_r,e,converge,check,NJ,Fjtave, Fdjt, FjpRave,FdjpR,FjnRave,FdjnR, FIntR,FIntRif,FCheck); } Calculate_Exciton(p, n, F, Fint, up, un, up0,un0,Eh0, El0, sigma00,R, Rif, Rnew,s,NLayer,N, NL, dm, diel_0, diel_r, e, converge, Nmax, Ldiffusion, tlife, qyield, hole_quench_distance, electron_quench_distance,NJ,FIntS,FCheckExciton); finalfile << NJ << " " << V << " " << Fjtave[NJ] << " " << FIntR[NJ] << " "<<FIntRif[NJ] <<" " << FIntS[NJ] << " " << FjpRave[NJ] << " " << FjnRave[NJ] << " " << Fdjt[NJ] << " " << FdjpR[NJ] << " " << FdjnR[NJ] << " " << FCheck[NJ] << " " <<FCheckExciton[NJ] <<" " << t <<" " << dt <<endl; Write_Files ( position,p,n,F,V,jt,R,Rif,Rnew,s,Eh,El,up,un,jpR,jnR,jp,jn,jp_drift,jp_diff,jn_drift,jn_diff,N,NJ); J=J/2; // set the current density to be half for the next step } //********************Part V: End ***** finalfile.close(); return 0; }
170
A.3 Sample input (input.txt)
************ Voltage Parameters ************************ Start Current density (unit A/cm2) JStart= 0.08 Number of steps NJStep= 10 ************************************************************* *************** Control Parameters ********************** Control time distance ts_factor= 5 Numbers of calculations NTMAX= 10000 Test of convergence converge= 0.01 Hole_Injection_Factor= 1.0e21 Hole_Injection_B= 0.2 Electron_Injection_Factor= 1.0e21 Electron_Injection_B= 0.2 Recombination_Interface_Factor= 1 Exciton calculate Nmax= 100000 Exciton diffusion length(nm)= 20 Exciton life time (s)= 1.0e-8 Relative dielectric constant= 3 ************************************************************* *************** Device Parameters************************ Monolayer thichness (unit A) dmA= 10 number of organic layers NL= 2 Anode Name: ITO
171
Anode energy level (unit ev) Eanode= -5.0 Cahode Name: Al/LiF Cathode energy level ( unit ev) Ecathode= -3.55 First layer: HTL Thickness (unit A) L1= 700 HOMO (unit ev) Eh1= -5.5 LUMO (unit ev) El1= -2.9 Hole moblity ( unit cm2/vs) up0= 2.0e-4 Hole moblity (unit (cm/V)^1/2) Fp0= 1.0e-3 Electron moblity ( unit cm2/vs) un0= 2.0e-6 Electron moblity (unit (cm/V)^1/2) Fn0= 1.0e-3 Hole Quench distance (unit A)= 30 Electron Quench distance (unit A)= 0 Quantum Yield= 0 Energy width (unit eV) sigma= 0.03 Second layer: ETL Thickness (unit A) L1= 700 HOMO (unit ev) Eh1= -5.7 LUMO (unit ev) El1= -3.1 Hole moblity ( unit cm2/vs) up0= 2.0e-8 Hole moblity (unit (cm/V)^1/2) Fp0=
172
1.0e-3 Electron moblity ( unit cm2/vs) un0= 2.0e-6 Electron moblity (unit (cm/V)^1/2) Fn0= 1.0e-3 Hole Quench distance (unit A)= 0 Electron Quench distance (unit A)= 0 Quantum Yield= 0.025 Energy width (unit eV) sigma= 0.03 ***************************************************
173
Appendix B
Program for the Simulation of OLEDs
(Optical Part)
174
B.1 Codes
// ----------------------------------------------------------------------------------- // Cavity model for OLEDs, optical part of the OLED simulation: // C++ codes to calculate the photon extraction, // angular dependence of the light output from OLED devices // ----------------------------------------------------------------------------------- #include <math.h> #include <float.h> #include <cmath> #include <iostream> #include <fstream> #include <string> #include <sstream> #include <stdlib.h> #include <stdio.h> #include <complex> using namespace std; double findpeak( double* wv, double x[][50]); double findpeak2( double* wv, double x[][200]); double findpeak3( double* wv, double* x); double findwidth( double* wv, double x[][50]); double findwidth2( double* wv, double x[][200]); double findwidth3( double* wv, double* x); double deltauv(double x1, double y1, double x2, double y2); void LumColor(double CIExyz[][3],double *PL, double& Lum, double& CIEx, double& CIEy); double MyGauss1(int order, double kbegin, double kend, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE); // integrate K[] use complex curve double MyGauss2(int order, double kbegin, double kend, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE); // integrate K[] along the real axix
175
double MyGauss3(int order, double kbegin, double kend, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE); // integrate KPT[] along the complex curve, better not use it double MyGauss4(int order, double kbegin, double kend, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE); // integrate KPT[] along the real axix complex <double> R(string ss,complex <double> n1,complex <double> n2,complex <double> kz1,complex <double> kz2); complex <double> T(string ss,complex <double> n1,complex <double> n2,complex <double> kz1,complex <double> kz2); void Calculate_Matrix(double lambda, complex <double> kx, int position_Layer,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE); void Calculate_P(double lambda, double theta, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE,double* result); double Etotal2(double kmin, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE); void Read(double CIExyz[][3], double CF[][3],complex<double> n[][50], double* wv, double PL[][50], string* PLname, int NEmitter, string* layername, int NLayer); void Read(double CIExyz[][3], double CF[][3],complex<double> n[][50], double* wv, double PL[][50], string* PLname, int NEmitter, string* layername, int NLayer) // read the OLED layer structure and emitter information { double lambda; double tempD; string word, line; int i,layer,j; double nr,kr; stringstream ss;
176
for(i=0;i<=80;i++) { wv[i]=380+i*5; } //--------------------------------------------------------- ifstream myfile ("CIExyz.txt"); if (myfile.is_open()) { myfile >>word >> word >> word >> word; for(i=0;i<=80;i++) { myfile >> lambda >> CIExyz[i][0] >> CIExyz[i][1] >> CIExyz[i][2]; } } else { cout << "Unable to open CIExyz.txt"<< endl; return; } myfile.close(); //--------------------------------------------------------- myfile.open("CF.txt"); if (myfile.is_open()) { myfile >>word >> word >> word >> word; for(i=0;i<=80;i++) { myfile >> lambda >> CF[i][0] >> CF[i][1] >> CF[i][2]; } } else { cout << "Unable to open CF.txt"<< endl; return; } myfile.close(); //--------------------------------------------------------- // PL1 => PL NEmitter for( j=1;j<=NEmitter;j++) { ss.str("");
177
ss <<PLname[j] <<".txt"; myfile.open(ss.str().c_str()); if (myfile.is_open()) { myfile >>word >> word; for(i=0;i<=80;i++) { myfile >> lambda >> PL[i][j]; } } else { cout << "Unable to open " << ss.str() << endl; return; } myfile.close(); } //--------------------------------------------------------- // Layer 0 => Layer NLayer+1 for( layer=0;layer<=(NLayer+1);layer++) { if(layername[layer][0]=='n' && layername[layer][1]=='=')
// if the name is "n=x.xx" { tempD=atof(layername[layer].substr(2,layername[layer].length()-1).c_str()); for(i=0;i<=80;i++) { n[i][layer]=complex<double>(tempD,0); } } else{ ss.str(""); ss <<layername[layer] <<".txt"; myfile.open(ss.str().c_str()); if (myfile.is_open()) {
178
myfile >>word >> word >> word; for(i=0;i<=80;i++) { myfile >> lambda >> nr >> kr; n[i][layer]=complex<double>(nr,kr); } } else { cout << "Unable to open "<< ss.str() << endl; return; } myfile.close(); } } } double findpeak( double* wv, double x[][50]) // find the peak of a spectrum { double temp=x[0][0]; int index=0; for(int i=1;i<=80;i++) { if (x[i][0]>temp) {temp=x[i][0];index=i;}; } return wv[index]; }; double findpeak2( double* wv, double x[][200]) { double temp=x[0][0]; int index=0; for(int i=1;i<=80;i++) { if (x[i][0]>temp) {temp=x[i][0];index=i;}; } return wv[index]; }; double findpeak3( double* wv, double* x) {
179
double temp=x[0]; int index=0; for(int i=1;i<=80;i++) { if (x[i]>temp) {temp=x[i];index=i;}; } return wv[index]; }; double findwidth( double* wv, double x[][50]) // find the FWHM of a spectrum { double temp=x[0][0]; int index=0; for(int i=1;i<=80;i++) { if (x[i][0]>temp) {temp=x[i][0];index=i;}; } int a=0,b=0; for(int i=1;i<=80;i++) { if (x[i][0]>=0.5*temp && x[i-1][0]<0.5*temp ) {a=i;}; if (x[i-1][0]>=0.5*temp && x[i][0]<0.5*temp ) {b=i;}; } return wv[b]-wv[a]; }; double findwidth2( double* wv, double x[][200]) { double temp=x[0][0]; int index=0; for(int i=1;i<=80;i++) { if (x[i][0]>temp) {temp=x[i][0];index=i;}; } int a=0,b=0;
180
for(int i=1;i<=80;i++) { if (x[i][0]>=0.5*temp && x[i-1][0]<0.5*temp ) {a=i;}; if (x[i-1][0]>=0.5*temp && x[i][0]<0.5*temp ) {b=i;}; } return wv[b]-wv[a]; }; double findwidth3( double* wv, double* x) { double temp=x[0]; int index=0; for(int i=1;i<=80;i++) { if (x[i]>temp) {temp=x[i];index=i;}; } int a=0,b=0; for(int i=1;i<=80;i++) { if (x[i]>=0.5*temp && x[i-1]<0.5*temp ) {a=i;}; if (x[i-1]>=0.5*temp && x[i]<0.5*temp ) {b=i;}; } return wv[b]-wv[a]; }; double deltauv(double x1, double y1, double x2, double y2) // from the CIEx,y values of two color points, calculate their distance in the CIEu'v'frame { double u1=4*x1/(-2*x1+12*y1+3); double v1=9*y1/(-2*x1+12*y1+3); double u2=4*x2/(-2*x2+12*y2+3); double v2=9*y2/(-2*x2+12*y2+3); return sqrt((u1-u2)*(u1-u2)+(v1-v2)*(v1-v2));
181
} void LumColor(double CIExyz[][3],double *PL, double& Lum, double& CIEx, double& CIEy) // calculate the luminance and CIExy color points from any spectrum { double x=0,y=0,z=0,total=0; int i; for(i=0;i<=80;i++) { x+=CIExyz[i][0]*PL[i]; y+=CIExyz[i][1]*PL[i]; z+=CIExyz[i][2]*PL[i]; } total=x+y+z; Lum=y; CIEx=x/total; CIEy=y/total; } complex <double> R(string ss,complex <double> n1,complex <double> n2,complex <double> kz1,complex <double> kz2) // the complex reflection coefficient at the interface for TE and TM waves { complex <double> reflection; if (ss=="TE") { reflection=(kz1-kz2)/(kz1+kz2); } if(ss=="TM") { reflection=(n2*n2*kz1-n1*n1*kz2)/(n2*n2*kz1+n1*n1*kz2); } return reflection; } complex <double> T(string ss,complex <double> n1,complex <double> n2,complex <double> kz1,complex <double> kz2)
182
// the complex transmission coefficient at the interface for TE and TM waves { complex <double> transmission; if (ss=="TE") { transmission=(kz1+kz1)/(kz1+kz2); } if(ss=="TM") { transmission=(n2*n2*kz1+n2*n2*kz1)/(n2*n2*kz1+n1*n1*kz2);
// this is the transition from Neyts paper // they use different transmision definition
// therefore the power transmission efficient is also changed a little bit // the index mismatch between two layers need to considered carefully // to get the correct power transmission
} return transmission; } void Calculate_Matrix(double lambda, complex <double> kx, int position_Layer,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE) // calculate the total reflection and transmission coefficient // for the whole OLED stack // the value is used to calculate the dipole emission from the OLED cavity { complex <double> kz[50],cd[50]; double pi =3.1415926; complex <double> kk (2*pi/lambda,0); int i; for( i=0;i<=NLayer+1;i++) { kz[i]=sqrt(kk*n[i]*kk*n[i]-kx*kx); } for( i=1;i<=NLayer;i++)
183
{ cd[i]=complex<double> (d[i],0);
// cd is the complex version of thickness } complex <double> r,t; complex <double> a,b; complex <double> c1 (1,0); complex <double> c2 (2,0); complex <double> cj (0,1);
// define the complex version of 1 2 and j //****** r+, t+, r-, t-, R, T, for TM ************************ // r+,t+ r=R("TM",n[1],n[0],kz[1],kz[0]);
// The R and T at the interface closest to air t=T("TM",n[1],n[0],kz[1],kz[0]); for ( i=2;i<=position_Layer;i++) { a=R("TM",n[i],n[i-1],kz[i],kz[i-1]); b=T("TM",n[i],n[i-1],kz[i],kz[i-1]); t=(b*t*exp(cj*kz[i-1]*cd[i-1]))/(c1+a*r*exp(c2*cj*kz[i-1]*cd[i-1])); r=(a+r*exp(c2*cj*kz[i-1]*cd[i-1]))/(c1+a*r*exp(c2*cj*kz[i-1]*cd[i-1])); } TM[1]=r; // r+ for TM from emission to substrate air TM[2]=t; // t+ // r-,t- r=R("TM",n[NLayer],n[NLayer+1],kz[NLayer],kz[NLayer+1]); t=T("TM",n[NLayer],n[NLayer+1],kz[NLayer],kz[NLayer+1]); for ( i=(NLayer-1);i>=position_Layer;i--) { a=R("TM",n[i],n[i+1],kz[i],kz[i+1]); b=T("TM",n[i],n[i+1],kz[i],kz[i+1]); t=(b*t*exp(cj*kz[i+1]*cd[i+1]))/(c1+a*r*exp(c2*cj*kz[i+1]*cd[i+1])); r=(a+r*exp(c2*cj*kz[i+1]*cd[i+1]))/(c1+a*r*exp(c2*cj*kz[i+1]*cd[i+1])); } TM[3]=r; // r- for TM from emission to Al air TM[4]=t; // t- // R,T
184
r=R("TM",n[NLayer],n[NLayer+1],kz[NLayer],kz[NLayer+1]); t=T("TM",n[NLayer],n[NLayer+1],kz[NLayer],kz[NLayer+1]); for ( i=(NLayer-1);i>=0;i--) { a=R("TM",n[i],n[i+1],kz[i],kz[i+1]); b=T("TM",n[i],n[i+1],kz[i],kz[i+1]); t=(b*t*exp(cj*kz[i+1]*cd[i+1]))/(c1+a*r*exp(c2*cj*kz[i+1]*cd[i+1])); r=(a+r*exp(c2*cj*kz[i+1]*cd[i+1]))/(c1+a*r*exp(c2*cj*kz[i+1]*cd[i+1])); } TM[5]=r; // R for the whole matrix for TM from substrate air to Al air TM[6]=t; // T for the whole matrix //*******r+, t+, r-, t-, R, T, for TE ************************************ // r+,t+ r=R("TE",n[1],n[0],kz[1],kz[0]);
// The R and T at the interface closest to air t=T("TE",n[1],n[0],kz[1],kz[0]); for ( i=2;i<=position_Layer;i++) { a=R("TE",n[i],n[i-1],kz[i],kz[i-1]); b=T("TE",n[i],n[i-1],kz[i],kz[i-1]); t=(b*t*exp(cj*kz[i-1]*cd[i-1]))/(c1+a*r*exp(c2*cj*kz[i-1]*cd[i-1])); r=(a+r*exp(c2*cj*kz[i-1]*cd[i-1]))/(c1+a*r*exp(c2*cj*kz[i-1]*cd[i-1])); } TE[1]=r; // r+ for TE from emission to substrate air TE[2]=t; // t+ // r-,t- r=R("TE",n[NLayer],n[NLayer+1],kz[NLayer],kz[NLayer+1]); t=T("TE",n[NLayer],n[NLayer+1],kz[NLayer],kz[NLayer+1]); for ( i=(NLayer-1);i>=position_Layer;i--) { a=R("TE",n[i],n[i+1],kz[i],kz[i+1]); b=T("TE",n[i],n[i+1],kz[i],kz[i+1]); t=(b*t*exp(cj*kz[i+1]*cd[i+1]))/(c1+a*r*exp(c2*cj*kz[i+1]*cd[i+1]));
r=(a+r*exp(c2*cj*kz[i+1]*cd[i+1]))/(c1+a*r*exp(c2*cj*kz[i+1]*cd[i+1])); } TE[3]=r; // r- for TE from emission to Al air TE[4]=t; // t-
185
// R,T r=R("TE",n[NLayer],n[NLayer+1],kz[NLayer],kz[NLayer+1]); t=T("TE",n[NLayer],n[NLayer+1],kz[NLayer],kz[NLayer+1]); for ( i=(NLayer-1);i>=0;i--) { a=R("TE",n[i],n[i+1],kz[i],kz[i+1]); b=T("TE",n[i],n[i+1],kz[i],kz[i+1]); t=(b*t*exp(cj*kz[i+1]*cd[i+1]))/(c1+a*r*exp(c2*cj*kz[i+1]*cd[i+1])); r=(a+r*exp(c2*cj*kz[i+1]*cd[i+1]))/(c1+a*r*exp(c2*cj*kz[i+1]*cd[i+1])); } TE[5]=r; // R for the whole matrix for TE from substrate air to Al air TE[6]=t; // T for the whole matrix }
void Calculate_P(double lambda, double theta, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE,double* result) // calculate the angular light power density // in the substrate and in the air, respectively { double pi=3.1415926; double realde=d[position_Layer]; double realzp=position_x; double realzm=realde-realzp; complex <double> kx,ke,kp,km,kze,kzp,kzm; complex <double> de,zp,zm; complex <double> c2j(0,2); complex <double> c1(1,0); complex <double> aTM,aTMp,aTMm,aTE,aTEp,aTEm; double KPT[10]={0},P[10]={0}; de=complex <double> (realde,0); zp=complex <double> (realzp,0); zm=complex <double> (realzm,0); complex <double> kk (2*pi/lambda,0); ke=kk*n[position_Layer]; kp=kk*n[0]; km=kk*n[NLayer+1];
186
// ******************************* calculate P[angle=theta] // assume the theta is in the substrate kx=complex <double> (2*pi*real(n[0])*sin(theta)/lambda,0); kze=sqrt(ke*ke-kx*kx); kzp=sqrt(kp*kp-kx*kx); kzm=sqrt(km*km-kx*kx); Calculate_Matrix(lambda,kx,position_Layer, NLayer,d, n,TM,TE); aTMp=TM[1]*exp(c2j*kze*zp); aTMm=TM[3]*exp(c2j*kze*zm); aTM=aTMp*aTMm; aTEp=TE[1]*exp(c2j*kze*zp); aTEm=TE[3]*exp(c2j*kze*zm); aTE=aTEp*aTEm; KPT[1]=0.75*real(kx*kx/(ke*ke*ke*kze))*0.5*norm((c1+aTMm)/(c1-aTM))*norm(TM[2])*abs(kzp/kze)*norm(n[position_Layer]/n[0]); KPT[2]=0; KPT[3]=0.375*real(kze/(ke*ke*ke))*0.5*norm((c1-aTMm)/(c1-aTM))*norm(TM[2])*abs(kzp/kze)*norm(n[position_Layer]/n[0]); KPT[4]=0.375*real(c1/(ke*kze))*0.5*norm((c1+aTEm)/(c1-aTE))*norm(TE[2])*abs(kzp/kze); KPT[5]=KPT[1]/3.0+2.0*KPT[3]/3.0; KPT[6]=KPT[2]/3.0+2.0*KPT[4]/3.0; KPT[7]=KPT[5]+KPT[6]; P[1]=norm(kp)*cos(theta)*KPT[1]/pi; P[2]=norm(kp)*cos(theta)*KPT[2]/pi; P[3]=norm(kp)*cos(theta)*KPT[3]/pi; P[4]=norm(kp)*cos(theta)*KPT[4]/pi; P[5]=P[1]/3.0+2.0*P[3]/3.0; P[6]=P[2]/3.0+2.0*P[4]/3.0; P[7]=P[5]+P[6]; result[1]=P[7]; // ok, this is the P of angle theta in the substrate // now calculate the theta in the air double airtheta=theta;
187
complex<double> nair (1,0); complex<double> kzair,crair; double Rair,Roled; theta=asin(1.0*sin(airtheta)/real(n[0])); kx=complex <double> (2*pi*real(n[0])*sin(theta)/lambda,0); kze=sqrt(ke*ke-kx*kx); kzp=sqrt(kp*kp-kx*kx); kzm=sqrt(km*km-kx*kx); kzair=sqrt(kk*nair*kk*nair-kx*kx); Calculate_Matrix(lambda,kx,position_Layer, NLayer,d, n,TM,TE); aTMp=TM[1]*exp(c2j*kze*zp); aTMm=TM[3]*exp(c2j*kze*zm); aTM=aTMp*aTMm; aTEp=TE[1]*exp(c2j*kze*zp); aTEm=TE[3]*exp(c2j*kze*zm); aTE=aTEp*aTEm; KPT[1]=0.75*real(kx*kx/(ke*ke*ke*kze))*0.5*norm((c1+aTMm)/(c1-aTM))*norm(TM[2])*abs(kzp/kze)*norm(n[position_Layer]/n[0]); KPT[2]=0; KPT[3]=0.375*real(kze/(ke*ke*ke))*0.5*norm((c1-aTMm)/(c1-aTM))*norm(TM[2])*abs(kzp/kze)*norm(n[position_Layer]/n[0]); KPT[4]=0.375*real(c1/(ke*kze))*0.5*norm((c1+aTEm)/(c1-aTE))*norm(TE[2])*abs(kzp/kze); KPT[5]=KPT[1]/3.0+2.0*KPT[3]/3.0; KPT[6]=KPT[2]/3.0+2.0*KPT[4]/3.0; KPT[7]=KPT[5]+KPT[6]; P[1]=norm(kp)*cos(theta)*KPT[1]/pi; P[2]=0; P[3]=norm(kp)*cos(theta)*KPT[3]/pi; P[4]=norm(kp)*cos(theta)*KPT[4]/pi; crair=R("TM",n[0],nair,kzp,kzair); Rair=norm(crair); Roled=norm(TM[5]);
188
P[1]=P[1]*norm(nair/n[0])*cos(airtheta)/cos(theta)*(1-Rair)/(1-Rair*Roled); crair=R("TE",n[0],nair,kzp,kzair); Rair=norm(crair); Roled=norm(TE[5]); P[3]=P[3]*norm(nair/n[0])*cos(airtheta)/cos(theta)*(1-Rair)/(1-Rair*Roled); P[4]=P[4]*norm(nair/n[0])*cos(airtheta)/cos(theta)*(1-Rair)/(1-Rair*Roled); P[5]=P[1]/3.0+2.0*P[3]/3.0; P[6]=P[2]/3.0+2.0*P[4]/3.0; P[7]=P[5]+P[6]; result[4]=P[7]; } double Etotal2(double kmin, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE) // function to do part of the integration of the light power density { double pi=3.1415926; double realde=d[position_Layer]; double realzp=position_x; double realzm=realde-realzp; complex <double> kx,ke,kp,km,kze,kzp,kzm; complex <double> de,zp,zm; complex <double> c2j(0,2); complex <double> c1(1,0); complex <double> aTM,aTMp,aTMm,aTE,aTEp,aTEm; double K[10]={0},KPT[10]={0},P[10]={0}; de=complex <double> (realde,0); zp=complex <double> (realzp,0); zm=complex <double> (realzm,0); complex <double> kk (2*pi/lambda,0);
189
ke=kk*n[position_Layer]; kp=kk*n[0]; km=kk*n[NLayer+1]; //********************************************************** calculate Etot double Etot=0; kx=complex <double> (kmin,0); kze=sqrt(ke*ke-kx*kx); kzp=sqrt(kp*kp-kx*kx); kzm=sqrt(km*km-kx*kx); Calculate_Matrix(lambda,kx,position_Layer, NLayer,d, n,TM,TE); aTMp=TM[1]*exp(c2j*kze*zp); aTMm=TM[3]*exp(c2j*kze*zm); aTM=aTMp*aTMm; aTEp=TE[1]*exp(c2j*kze*zp); aTEm=TE[3]*exp(c2j*kze*zm); aTE=aTEp*aTEm; K[1]=0.375/real(ke)/real(ke)/real(ke)*(imag(TM[1])*exp(-2*kmin*realzp)/realzp/realzp/realzp*(1+2*kmin*realzp+2*kmin*kmin*realzp*realzp)+imag(TM[3])*exp(-2*kmin*realzm)/realzm/realzm/realzm*(1+2*kmin*realzm+2*kmin*kmin*realzm*realzm)); K[2]=0; K[3]=0.5*K[1]; K[4]=0; K[5]=K[1]/3.0+2.0*K[3]/3.0; K[6]=K[2]/3.0+2.0*K[4]/3.0; K[7]=K[5]+K[6]; Etot=K[7]; return Etot; } // the Gaussion quadrature method code // is modified from Pavel Holoborodko's code
190
/* Numerical Integration by Gauss-Legendre Quadrature Formulas of high orders. High-precision abscissas and weights are used. Project homepage: http://www.holoborodko.com/pavel/?page_id=679 Contact e-mail: [email protected] Copyright (c)2007-2010 Pavel Holoborodko All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Redistributions of any form whatsoever must retain the following acknowledgment: " This product includes software developed by Pavel Holoborodko Web: http://www.holoborodko.com/pavel/ e-mail: [email protected] " 4. This software cannot be, by any means, used for any commercial purpose without the prior permission of the copyright holder. Any of the above conditions can be waived if you get permission from the copyright holder. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
191
SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Contributors Konstantin Holoborodko - Optimization of Legendre polynomial computing. */ #ifndef __GAUSS_LEGENDRE_H__ #define __GAUSS_LEGENDRE_H__ #ifdef __cplusplus extern "C" { #endif /* Numerical computation of int(f(x),x=a..b) by Gauss-Legendre n-th order high precision quadrature [in]n - quadrature order [in]f - integrand [in]data - pointer on user-defined data which will be passed to f every time it called (as second parameter). [in][a,b] - interval of integration return: -computed integral value or -1.0 if n order quadrature is not supported */ double gauss_legendre(int n, double (*f)(double,void*), void* data, double a, double b); /* 2D Numerical computation of int(f(x,y),x=a..b,y=c..d) by Gauss-Legendre n-th order high precision quadrature [in]n - quadrature order [in]f - integrand [in]data - pointer on user-defined data which will
192
be passed to f every time it called (as third parameter). [in][a,b]x[c,d] - interval of integration return: -computed integral value or -1.0 if n order quadrature is not supported */ double gauss_legendre_2D_cube(int n, double (*f)(double,double,void*), void* data, double a, double b, double c, double d); /* Computing of abscissas and weights for Gauss-Legendre quadrature for any(reasonable) order n [in] n - order of quadrature [in] eps - required precision (must be eps>=macheps(double), usually eps = 1e-10 is ok) [out]x - abscisass, size = (n+1)>>1 [out]w - weights, size = (n+1)>>1 */ void gauss_legendre_tbl(int n, double* x, double* w, double eps); #ifdef __cplusplus } #endif #endif /* __GAUSS_LEGENDRE_H__ */ #ifndef PI #define PI 3.1415926535897932384626433832795028841971693993751 #endif #ifndef FABS #define FABS(a) ((a)>=0?(a):-(a)) #endif /* n = 2 */ static double x2[1] = {0.5773502691896257645091488}; static double w2[1] = {1.0000000000000000000000000};
193
/* n = 4 */ static double x4[2] = {0.3399810435848562648026658,0.8611363115940525752239465}; static double w4[2] = {0.6521451548625461426269361,0.3478548451374538573730639}; /* n = 6 */ static double x6[3] = {0.2386191860831969086305017,0.6612093864662645136613996,0.9324695142031520278123016}; static double w6[3] = {0.4679139345726910473898703,0.3607615730481386075698335,0.1713244923791703450402961}; /* n = 8 */ static double x8[4] = {0.1834346424956498049394761,0.5255324099163289858177390,0.7966664774136267395915539,0.9602898564975362316835609}; static double w8[4] = {0.3626837833783619829651504,0.3137066458778872873379622,0.2223810344533744705443560,0.1012285362903762591525314}; /* n = 10 */ static double x10[5] = {0.1488743389816312108848260,0.4333953941292471907992659,0.6794095682990244062343274,0.8650633666889845107320967,0.9739065285171717200779640}; static double w10[5] = {0.2955242247147528701738930,0.2692667193099963550912269,0.2190863625159820439955349,0.1494513491505805931457763,0.0666713443086881375935688}; /* n = 12 */ static double x12[6] = {0.1252334085114689154724414,0.3678314989981801937526915,0.5873179542866174472967024,0.7699026741943046870368938,0.9041172563704748566784659,0.9815606342467192506905491}; static double w12[6] = {0.2491470458134027850005624,0.2334925365383548087608499,0.2031674267230659217490645,0.1600783285433462263346525,0.1069393259953184309602547,0.0471753363865118271946160};
194
/* n = 14 */ static double x14[7] = {0.1080549487073436620662447,0.3191123689278897604356718,0.5152486363581540919652907,0.6872929048116854701480198,0.8272013150697649931897947,0.9284348836635735173363911,0.9862838086968123388415973}; static double w14[7] = {0.2152638534631577901958764,0.2051984637212956039659241,0.1855383974779378137417166,0.1572031671581935345696019,0.1215185706879031846894148,0.0801580871597602098056333,0.0351194603317518630318329}; /* n = 16 */ static double x16[8] = {0.0950125098376374401853193,0.2816035507792589132304605,0.4580167776572273863424194,0.6178762444026437484466718,0.7554044083550030338951012,0.8656312023878317438804679,0.9445750230732325760779884,0.9894009349916499325961542}; static double w16[8] = {0.1894506104550684962853967,0.1826034150449235888667637,0.1691565193950025381893121,0.1495959888165767320815017,0.1246289712555338720524763,0.0951585116824927848099251,0.0622535239386478928628438,0.0271524594117540948517806}; /* n = 18 */ static double x18[9] = {0.0847750130417353012422619,0.2518862256915055095889729,0.4117511614628426460359318,0.5597708310739475346078715,0.6916870430603532078748911,0.8037049589725231156824175,0.8926024664975557392060606,0.9558239495713977551811959,0.9915651684209309467300160}; static double w18[9] = {0.1691423829631435918406565,0.1642764837458327229860538,0.1546846751262652449254180,0.1406429146706506512047313,0.1225552067114784601845191,0.1009420441062871655628140,0.0764257302548890565291297,0.0497145488949697964533349,0.0216160135264833103133427}; /* n = 20 */ static double x20[10] = {0.0765265211334973337546404,0.2277858511416450780804962,0.3737060887154195606725482,0.5108670019508270980043641,0.6360536807265150254528367,0.7463319064601507926143051,0.8391169718222188233945291,0.9122344282513259058677524,0.9639719272779137912676661,0.9931285991850949247861224};
195
static double w20[10] = {0.1527533871307258506980843,0.1491729864726037467878287,0.1420961093183820513292983,0.1316886384491766268984945,0.1181945319615184173123774,0.1019301198172404350367501,0.0832767415767047487247581,0.0626720483341090635695065,0.0406014298003869413310400,0.0176140071391521183118620}; /* n = 32 */ static double x32[16] = {0.0483076656877383162348126,0.1444719615827964934851864,0.2392873622521370745446032,0.3318686022821276497799168,0.4213512761306353453641194,0.5068999089322293900237475,0.5877157572407623290407455,0.6630442669302152009751152,0.7321821187402896803874267,0.7944837959679424069630973,0.8493676137325699701336930,0.8963211557660521239653072,0.9349060759377396891709191,0.9647622555875064307738119,0.9856115115452683354001750,0.9972638618494815635449811}; static double w32[16] = {0.0965400885147278005667648,0.0956387200792748594190820,0.0938443990808045656391802,0.0911738786957638847128686,0.0876520930044038111427715,0.0833119242269467552221991,0.0781938957870703064717409,0.0723457941088485062253994,0.0658222227763618468376501,0.0586840934785355471452836,0.0509980592623761761961632,0.0428358980222266806568786,0.0342738629130214331026877,0.0253920653092620594557526,0.0162743947309056706051706,0.0070186100094700966004071}; /* n = 64 */ static double x64[32] = {0.0243502926634244325089558,0.0729931217877990394495429,0.1214628192961205544703765,0.1696444204239928180373136,0.2174236437400070841496487,0.2646871622087674163739642,0.3113228719902109561575127,0.3572201583376681159504426,0.4022701579639916036957668,0.4463660172534640879849477,0.4894031457070529574785263,0.5312794640198945456580139,0.5718956462026340342838781,0.6111553551723932502488530,0.6489654712546573398577612,0.6852363130542332425635584,0.7198818501716108268489402,0.7528199072605318966118638,0.7839723589433414076102205,0.8132653151227975597419233,0.8406292962525803627516915,0.8659993981540928197607834,0.8893154459951141058534040,0.9105221370785028057563807,0.9295691721319395758214902,0.9464113748584028160624815,0.9610087996520537189186141,0.9733268277899109637418535,0.9833362538846259569312993,0.9910133714767443207393824,0.9963401167719552793469245,0.9993050417357721394569056}; static double w64[32] = {0.0486909570091397203833654,0.0485754674415034269347991,0.048344
196
7622348029571697695,0.0479993885964583077281262,0.0475401657148303086622822,0.0469681828162100173253263,0.0462847965813144172959532,0.0454916279274181444797710,0.0445905581637565630601347,0.0435837245293234533768279,0.0424735151236535890073398,0.0412625632426235286101563,0.0399537411327203413866569,0.0385501531786156291289625,0.0370551285402400460404151,0.0354722132568823838106931,0.0338051618371416093915655,0.0320579283548515535854675,0.0302346570724024788679741,0.0283396726142594832275113,0.0263774697150546586716918,0.0243527025687108733381776,0.0222701738083832541592983,0.0201348231535302093723403,0.0179517157756973430850453,0.0157260304760247193219660,0.0134630478967186425980608,0.0111681394601311288185905,0.0088467598263639477230309,0.0065044579689783628561174,0.0041470332605624676352875,0.0017832807216964329472961}; /* n = 96 */ static double x96[48] = {0.0162767448496029695791346,0.0488129851360497311119582,0.0812974954644255589944713,0.1136958501106659209112081,0.1459737146548969419891073,0.1780968823676186027594026,0.2100313104605672036028472,0.2417431561638400123279319,0.2731988125910491414872722,0.3043649443544963530239298,0.3352085228926254226163256,0.3656968614723136350308956,0.3957976498289086032850002,0.4254789884073005453648192,0.4547094221677430086356761,0.4834579739205963597684056,0.5116941771546676735855097,0.5393881083243574362268026,0.5665104185613971684042502,0.5930323647775720806835558,0.6189258401254685703863693,0.6441634037849671067984124,0.6687183100439161539525572,0.6925645366421715613442458,0.7156768123489676262251441,0.7380306437444001328511657,0.7596023411766474987029704,0.7803690438674332176036045,0.8003087441391408172287961,0.8194003107379316755389996,0.8376235112281871214943028,0.8549590334346014554627870,0.8713885059092965028737748,0.8868945174024204160568774,0.9014606353158523413192327,0.9150714231208980742058845,0.9277124567223086909646905,0.9393703397527552169318574,0.9500327177844376357560989,0.9596882914487425393000680,0.9683268284632642121736594,0.9759391745851364664526010,0.9825172635630146774470458,0.9880541263296237994807628,0.9925439003237626245718923,0.9959818429872092906503991,0.9983643758631816777241494,0.9996895038832307668276901}; static double w96[48] = {0.0325506144923631662419614,0.0325161187138688359872055,0.0324471637140642693640128,0.0323438225685759284287748,0.0322062047940302506686671,0.0320344562319926632181390,0.0318287588944110065347537,0.0315893307707271685580207,0.0313164255968613558127843,0.0310103325863138374232498,0.0306713761236691490142288,0.03029991542
197
08275937940888,0.0298963441363283859843881,0.0294610899581679059704363,0.0289946141505552365426788,0.0284974110650853856455995,0.0279700076168483344398186,0.0274129627260292428234211,0.0268268667255917621980567,0.0262123407356724139134580,0.0255700360053493614987972,0.0249006332224836102883822,0.0242048417923646912822673,0.0234833990859262198422359,0.0227370696583293740013478,0.0219666444387443491947564,0.0211729398921912989876739,0.0203567971543333245952452,0.0195190811401450224100852,0.0186606796274114673851568,0.0177825023160452608376142,0.0168854798642451724504775,0.0159705629025622913806165,0.0150387210269949380058763,0.0140909417723148609158616,0.0131282295669615726370637,0.0121516046710883196351814,0.0111621020998384985912133,0.0101607705350084157575876,0.0091486712307833866325846,0.0081268769256987592173824,0.0070964707911538652691442,0.0060585455042359616833167,0.0050142027429275176924702,0.0039645543384446866737334,0.0029107318179349464084106,0.0018539607889469217323359,0.0007967920655520124294381}; /* n = 100 */ static double x100[50] = {0.0156289844215430828722167,0.0468716824215916316149239,0.0780685828134366366948174,0.1091892035800611150034260,0.1402031372361139732075146,0.1710800805386032748875324,0.2017898640957359972360489,0.2323024818449739696495100,0.2625881203715034791689293,0.2926171880384719647375559,0.3223603439005291517224766,0.3517885263724217209723438,0.3808729816246299567633625,0.4095852916783015425288684,0.4378974021720315131089780,0.4657816497733580422492166,0.4932107892081909335693088,0.5201580198817630566468157,0.5465970120650941674679943,0.5725019326213811913168704,0.5978474702471787212648065,0.6226088602037077716041908,0.6467619085141292798326303,0.6702830156031410158025870,0.6931491993558019659486479,0.7153381175730564464599671,0.7368280898020207055124277,0.7575981185197071760356680,0.7776279096494954756275514,0.7968978923903144763895729,0.8153892383391762543939888,0.8330838798884008235429158,0.8499645278795912842933626,0.8660146884971646234107400,0.8812186793850184155733168,0.8955616449707269866985210,0.9090295709825296904671263,0.9216092981453339526669513,0.9332885350430795459243337,0.9440558701362559779627747,0.9539007829254917428493369,0.9628136542558155272936593,0.9707857757637063319308979,0.9778093584869182885537811,0.9838775407060570154961002,0.9889843952429917480044187,0.9931249370374434596520099,0.9962951347331251491861317,0.9984919506395958184001634,0.9997137267734412336782285}; static double w100[50] = {0.0312554234538633569476425,0.0312248842548493577323765,0.031163
198
8356962099067838183,0.0310723374275665165878102,0.0309504788504909882340635,0.0307983790311525904277139,0.0306161865839804484964594,0.0304040795264548200165079,0.0301622651051691449190687,0.0298909795933328309168368,0.0295904880599126425117545,0.0292610841106382766201190,0.0289030896011252031348762,0.0285168543223950979909368,0.0281027556591011733176483,0.0276611982207923882942042,0.0271926134465768801364916,0.0266974591835709626603847,0.0261762192395456763423087,0.0256294029102081160756420,0.0250575444815795897037642,0.0244612027079570527199750,0.0238409602659682059625604,0.0231974231852541216224889,0.0225312202563362727017970,0.0218430024162473863139537,0.0211334421125276415426723,0.0204032326462094327668389,0.0196530874944353058653815,0.0188837396133749045529412,0.0180959407221281166643908,0.0172904605683235824393442,0.0164680861761452126431050,0.0156296210775460027239369,0.0147758845274413017688800,0.0139077107037187726879541,0.0130259478929715422855586,0.0121314576629794974077448,0.0112251140231859771172216,0.0103078025748689695857821,0.0093804196536944579514182,0.0084438714696689714026208,0.0074990732554647115788287,0.0065469484508453227641521,0.0055884280038655151572119,0.0046244500634221193510958,0.0036559612013263751823425,0.0026839253715534824194396,0.0017093926535181052395294,0.0007346344905056717304063}; /* n = 128 */ static double x128[64] = {0.0122236989606157641980521,0.0366637909687334933302153,0.0610819696041395681037870,0.0854636405045154986364980,0.1097942311276437466729747,0.1340591994611877851175753,0.1582440427142249339974755,0.1823343059853371824103826,0.2063155909020792171540580,0.2301735642266599864109866,0.2538939664226943208556180,0.2774626201779044028062316,0.3008654388776772026671541,0.3240884350244133751832523,0.3471177285976355084261628,0.3699395553498590266165917,0.3925402750332674427356482,0.4149063795522750154922739,0.4370245010371041629370429,0.4588814198335521954490891,0.4804640724041720258582757,0.5017595591361444642896063,0.5227551520511754784539479,0.5434383024128103634441936,0.5637966482266180839144308,0.5838180216287630895500389,0.6034904561585486242035732,0.6228021939105849107615396,0.6417416925623075571535249,0.6602976322726460521059468,0.6784589224477192593677557,0.6962147083695143323850866,0.7135543776835874133438599,0.7304675667419088064717369,0.7469441667970619811698824,0.7629743300440947227797691,0.7785484755064119668504941,0.7936572947621932902433329,0.8082917575079136601196422,0.8224431169556438424645942,0.8361029150609068471168753,0.8492629875779689691636001,0.8619154689395484605906323,0.8740527969580317
199
986954180,0.8856677173453972174082924,0.8967532880491581843864474,0.9073028834017568139214859,0.9173101980809605370364836,0.9267692508789478433346245,0.9356743882779163757831268,0.9440202878302201821211114,0.9518019613412643862177963,0.9590147578536999280989185,0.9656543664319652686458290,0.9717168187471365809043384,0.9771984914639073871653744,0.9820961084357185360247656,0.9864067427245862088712355,0.9901278184917343833379303,0.9932571129002129353034372,0.9957927585349811868641612,0.9977332486255140198821574,0.9990774599773758950119878,0.9998248879471319144736081}; static double w128[64] = {0.0244461801962625182113259,0.0244315690978500450548486,0.0244023556338495820932980,0.0243585572646906258532685,0.0243002001679718653234426,0.0242273192228152481200933,0.0241399579890192849977167,0.0240381686810240526375873,0.0239220121367034556724504,0.0237915577810034006387807,0.0236468835844476151436514,0.0234880760165359131530253,0.0233152299940627601224157,0.0231284488243870278792979,0.0229278441436868469204110,0.0227135358502364613097126,0.0224856520327449668718246,0.0222443288937997651046291,0.0219897106684604914341221,0.0217219495380520753752610,0.0214412055392084601371119,0.0211476464682213485370195,0.0208414477807511491135839,0.0205227924869600694322850,0.0201918710421300411806732,0.0198488812328308622199444,0.0194940280587066028230219,0.0191275236099509454865185,0.0187495869405447086509195,0.0183604439373313432212893,0.0179603271850086859401969,0.0175494758271177046487069,0.0171281354231113768306810,0.0166965578015892045890915,0.0162550009097851870516575,0.0158037286593993468589656,0.0153430107688651440859909,0.0148731226021473142523855,0.0143943450041668461768239,0.0139069641329519852442880,0.0134112712886163323144890,0.0129075627392673472204428,0.0123961395439509229688217,0.0118773073727402795758911,0.0113513763240804166932817,0.0108186607395030762476596,0.0102794790158321571332153,0.0097341534150068058635483,0.0091830098716608743344787,0.0086263777986167497049788,0.0080645898904860579729286,0.0074979819256347286876720,0.0069268925668988135634267,0.0063516631617071887872143,0.0057726375428656985893346,0.0051901618326763302050708,0.0046045842567029551182905,0.0040162549837386423131943,0.0034255260409102157743378,0.0028327514714579910952857,0.0022382884309626187436221,0.0016425030186690295387909,0.0010458126793403487793129,0.0004493809602920903763943}; /* n = 256 */ static double x256[128] = {0.0061239123751895295011702,0.0183708184788136651179263,0.0306149687799790293662786,0.0428545265363790983812423,0.05508765569463
200
39841045614,0.0673125211657164002422903,0.0795272891002329659032271,0.0917301271635195520311456,0.1039192048105094036391969,0.1160926935603328049407349,0.1282487672706070947420496,0.1403856024113758859130249,0.1525013783386563953746068,0.1645942775675538498292845,0.1766624860449019974037218,0.1887041934213888264615036,0.2007175933231266700680007,0.2127008836226259579370402,0.2246522667091319671478783,0.2365699497582840184775084,0.2484521450010566668332427,0.2602970699919425419785609,0.2721029478763366095052447,0.2838680076570817417997658,0.2955904844601356145637868,0.3072686197993190762586103,0.3189006618401062756316834,0.3304848656624169762291870,0.3420194935223716364807297,0.3535028151129699895377902,0.3649331078236540185334649,0.3763086569987163902830557,0.3876277561945155836379846,0.3988887074354591277134632,0.4100898214687165500064336,0.4212294180176238249768124,0.4323058260337413099534411,0.4433173839475273572169258,0.4542624399175899987744552,0.4651393520784793136455705,0.4759464887869833063907375,0.4866822288668903501036214,0.4973449618521814771195124,0.5079330882286160362319249,0.5184450196736744762216617,0.5288791792948222619514764,0.5392340018660591811279362,0.5495079340627185570424269,0.5596994346944811451369074,0.5698069749365687590576675,0.5798290385590829449218317,0.5897641221544543007857861,0.5996107353629683217303882,0.6093674010963339395223108,0.6190326557592612194309676,0.6286050494690149754322099,0.6380831462729113686686886,0.6474655243637248626170162,0.6567507762929732218875002,0.6659375091820485599064084,0.6750243449311627638559187,0.6840099204260759531248771,0.6928928877425769601053416,0.7016719143486851594060835,0.7103456833045433133945663,0.7189128934599714483726399,0.7273722596496521265868944,0.7357225128859178346203729,0.7439624005491115684556831,0.7520906865754920595875297,0.7601061516426554549419068,0.7680075933524456359758906,0.7757938264113257391320526,0.7834636828081838207506702,0.7910160119895459945467075,0.7984496810321707587825429,0.8057635748129986232573891,0.8129565961764315431364104,0.8200276660989170674034781,0.8269757238508125142890929,0.8337997271555048943484439,0.8404986523457627138950680,0.8470714945172962071870724,0.8535172676795029650730355,0.8598350049033763506961731,0.8660237584665545192975154,0.8720825999954882891300459,0.8780106206047065439864349,0.8838069310331582848598262,0.8894706617776108888286766,0.8950009632230845774412228,0.9003970057703035447716200,0.9056579799601446470826819,0.9107830965950650118909072,0.9157715868574903845266696,0.9206227024251464955050471,0.9253357155833162028727303,0.9299099193340056411802456,0.9343446275020030942924765,0.9386391748378148049819261,0.9427929171174624431830761,0.9468052312391274813720517,0.9506755153166282763638521,0.9544031887
201
697162417644479,0.9579876924111781293657904,0.9614284885307321440064075,0.9647250609757064309326123,0.9678769152284894549090038,0.9708835784807430293209233,0.9737445997043704052660786,0.9764595497192341556210107,0.9790280212576220388242380,0.9814496290254644057693031,0.9837240097603154961666861,0.9858508222861259564792451,0.9878297475648606089164877,0.9896604887450652183192437,0.9913427712075830869221885,0.9928763426088221171435338,0.9942609729224096649628775,0.9954964544810963565926471,0.9965826020233815404305044,0.9975192527567208275634088,0.9983062664730064440555005,0.9989435258434088565550263,0.9994309374662614082408542,0.9997684374092631861048786,0.9999560500189922307348012}; static double w256[128] = {0.0122476716402897559040703,0.0122458343697479201424639,0.0122421601042728007697281,0.0122366493950401581092426,0.0122293030687102789041463,0.0122201222273039691917087,0.0122091082480372404075141,0.0121962627831147135181810,0.0121815877594817721740476,0.0121650853785355020613073,0.0121467581157944598155598,0.0121266087205273210347185,0.0121046402153404630977578,0.0120808558957245446559752,0.0120552593295601498143471,0.0120278543565825711612675,0.0119986450878058119345367,0.0119676359049058937290073,0.0119348314595635622558732,0.0119002366727664897542872,0.0118638567340710787319046,0.0118256971008239777711607,0.0117857634973434261816901,0.0117440619140605503053767,0.0117005986066207402881898,0.0116553800949452421212989,0.0116084131622531057220847,0.0115597048540436357726687,0.0115092624770394979585864,0.0114570935980906391523344,0.0114032060430391859648471,0.0113476078955454919416257,0.0112903074958755095083676,0.0112313134396496685726568,0.0111706345765534494627109,0.0111082800090098436304608,0.0110442590908139012635176,0.0109785814257295706379882,0.0109112568660490397007968,0.0108422955111147959952935,0.0107717077058046266366536,0.0106995040389797856030482,0.0106256953418965611339617,0.0105502926865814815175336,0.0104733073841704030035696,0.0103947509832117289971017,0.0103146352679340150682607,0.0102329722564782196569549,0.0101497741990948656546341,0.0100650535763063833094610,0.0099788230970349101247339,0.0098910956966958286026307,0.0098018845352573278254988,0.0097112029952662799642497,0.0096190646798407278571622,0.0095254834106292848118297,0.0094304732257377527473528,0.0093340483776232697124660,0.0092362233309563026873787,0.0091370127604508064020005,0.0090364315486628736802278,0.0089344947837582075484084,0.0088312177572487500253183,0.0087266159616988071403366,0.0086207050884010143053688,0.0085135010250224906938384,0.0084050198532215357561803,0.0082952778462352254251714,0.0081842914664382699356198,0.0080720773628734995009470,0.0079586523687543483536132,0.00784
202
40334989397118668103,0.0077282379473815556311102,0.0076112830845456594616187,0.0074931864548058833585998,0.0073739657738123464375724,0.0072536389258339137838291,0.0071322239610753900716724,0.0070097390929698226212344,0.0068862026954463203467133,0.0067616333001737987809279,0.0066360495937810650445900,0.0065094704150536602678099,0.0063819147521078805703752,0.0062534017395424012720636,0.0061239506555679325423891,0.0059935809191153382211277,0.0058623120869226530606616,0.0057301638506014371773844,0.0055971560336829100775514,0.0054633085886443102775705,0.0053286415939159303170811,0.0051931752508692809303288,0.0050569298807868423875578,0.0049199259218138656695588,0.0047821839258926913729317,0.0046437245556800603139791,0.0045045685814478970686418,0.0043647368779680566815684,0.0042242504213815362723565,0.0040831302860526684085998,0.0039413976414088336277290,0.0037990737487662579981170,0.0036561799581425021693892,0.0035127377050563073309711,0.0033687685073155510120191,0.0032242939617941981570107,0.0030793357411993375832054,0.0029339155908297166460123,0.0027880553253277068805748,0.0026417768254274905641208,0.0024951020347037068508395,0.0023480529563273120170065,0.0022006516498399104996849,0.0020529202279661431745488,0.0019048808534997184044191,0.0017565557363307299936069,0.0016079671307493272424499,0.0014591373333107332010884,0.0013100886819025044578317,0.0011608435575677247239706,0.0010114243932084404526058,0.0008618537014200890378141,0.0007121541634733206669090,0.0005623489540314098028152,0.0004124632544261763284322,0.0002625349442964459062875,0.0001127890178222721755125}; /* n = 512 */ static double x512[256] = {0.0030649621851593961529232,0.0091947713864329108047442,0.0153242350848981855249677,0.0214531229597748745137841,0.0275812047119197840615246,0.0337082500724805951232271,0.0398340288115484476830396,0.0459583107468090617788760,0.0520808657521920701127271,0.0582014637665182372392330,0.0643198748021442404045319,0.0704358689536046871990309,0.0765492164062510452915674,0.0826596874448871596284651,0.0887670524624010326092165,0.0948710819683925428909483,0.1009715465977967786264323,0.1070682171195026611052004,0.1131608644449665349442888,0.1192492596368204011642726,0.1253331739174744696875513,0.1314123786777137080093018,0.1374866454852880630171099,0.1435557460934960331730353,0.1496194524497612685217272,0.1556775367042018762501969,0.1617297712181921097989489,0.1677759285729161198103670,0.1738157815779134454985394,0.1798491032796159253350647,0.1858756669698757062678115,0.1918952461944840310240859,0.1979076147616804833961808,0.2039125467506523717658375,0.2099098165
203
200239314947094,0.2158991987163350271904893,0.2218804682825090362529109,0.2278534004663095955103621,0.2338177708287858931763260,0.2397733552527061887852891,0.2457199299509792442100997,0.2516572714750633493170137,0.2575851567233626262808095,0.2635033629496102970603704,0.2694116677712385990250046,0.2753098491777350342234845,0.2811976855389846383013106,0.2870749556135979555970354,0.2929414385572244074855835,0.2987969139308507415853707,0.3046411617090842500066247,0.3104739622884204453906292,0.3162950964954948840736281,0.3221043455953188263048133,0.3279014912994984240551598,0.3336863157744371275728377,0.3394586016495210024715049,0.3452181320252866497799379,0.3509646904815714220351686,0.3566980610856456291665404,0.3624180284003264285948478,0.3681243774920730946589582,0.3738168939390633631820054,0.3794953638392505477003659,0.3851595738184011246011504,0.3908093110381124851478484,0.3964443632038105531190080,0.4020645185727269675414064,0.4076695659618555307670286,0.4132592947558876229222955,0.4188334949151262845483445,0.4243919569833786700527309,0.4299344720958265754056529,0.4354608319868747443376920,0.4409708289979766581310498,0.4464642560854375149423431,0.4519409068281941054521446,0.4574005754355712925046003,0.4628430567550148032795831,0.4682681462798000434299255,0.4736756401567166435172692,0.4790653351937284489919577,0.4844370288676086658851277,0.4897905193315498753147078,0.4951256054227486308513615,0.5004420866699643537454866,0.5057397633010522419821678,0.5110184362504699101074361,0.5162779071667574777562819,0.5215179784199908258105606,0.5267384531092077401231844,0.5319391350698066637637706,0.5371198288809177797701793,0.5422803398727461474300859,0.5474204741338866161668468,0.5525400385186102421644070,0.5576388406541219339368088,0.5627166889477890541289656,0.5677733925943407059267120,0.5728087615830374335557009,0.5778226067048110674604360,0.5828147395593744458765762,0.5877849725623007456415722,0.5927331189520721562306608,0.5976589927970976321572046,0.6025624090026994600382737,0.6074431833180683777981926,0.6123011323431869846644595,0.6171360735357211818019505,0.6219478252178793846326095,0.6267362065832392490988318,0.6315010377035416553494506,0.6362421395354516935575740,0.6409593339272863978194482,0.6456524436257089753330001,0.6503212922823892793136899,0.6549657044606302753737317,0.6595855056419602523685720,0.6641805222326905300017078,0.6687505815704384167754210,0.6732955119306151731807642,0.6778151425328787363350998,0.6823093035475509635996236,0.6867778261019991540425409,0.6912205422869816079558685,0.6956372851629569859851427,0.7000278887663572307915895,0.7043921881158238155354902,0.7087300192184070848475163,0.7130412190757284553416507,0.7173256256901052441189100,0.7215830780706378951153816,0.7258134162392593745610389,0.73001648
204
12367465082373380,0.7341921151286930346516885,0.7383401610114441496854630,0.7424604630179923197192207,0.7465528663238341416942072,0.7506172171527880300329109,0.7546533627827725118134392,0.7586611515515449130726824,0.7626404328624002206015913,0.7665910571898299050923647,0.7705128760851404930018538,0.7744057421820316760079998,0.7782695092021337484565606,0.7821040319605041647237048,0.7859091663710830099561901,0.7896847694521071791947507,0.7934306993314830614379285,0.7971468152521175267628422,0.8008329775772070161862372,0.8044890477954845355235412,0.8081148885264243560855026,0.8117103635254042266412553,0.8152753376888249026732770,0.8188096770591868005536242,0.8223132488301235858819787,0.8257859213513925068443721,0.8292275641338212850768968,0.8326380478542113781512150,0.8360172443601974294381733,0.8393650266750627227522641,0.8426812690025104608329811,0.8459658467313906883792422,0.8492186364403826820199251,0.8524395159026326312771384,0.8556283640903464362590494,0.8587850611793374495058711,0.8619094885535289911058997,0.8650015288094114678982387,0.8680610657604539292849800,0.8710879844414698938880857,0.8740821711129372830049576,0.8770435132652722985416439,0.8799718996230570848337538,0.8828672201492210155023745,0.8857293660491754482355527,0.8885582297749017921351663,0.8913537050289927340242104,0.8941156867686464718706125,0.8968440712096138052506156,0.8995387558300979345474886,0.9021996393746068223597927,0.9048266218577579723776075,0.9074196045680354827749729,0.9099784900714992329623006,0.9125031822154460643436214,0.9149935861320228175302595,0.9174496082417910902748409,0.9198711562572435822074657,0.9222581391862718942794141,0.9246104673355856526489486,0.9269280523140828285786768,0.9292108070361711277546193,0.9314586457250403242837002,0.9336714839158854164789745,0.9358492384590804834007204,0.9379918275233031229867813,0.9400991705986093544775539,0.9421711884994588697201555,0.9442078033676905198230562,0.9462089386754479255274304,0.9481745192280551015654245,0.9501044711668419871894147,0.9519987219719197769813274,0.9538572004649059479887372,0.9556798368115988811866200,0.9574665625246019772327448,0.9592173104658971684737507,0.9609320148493677311718534,0.9626106112432703039637754,0.9642530365726560206402068,0.9658592291217406674540047,0.9674291285362237773389233,0.9689626758255565756615864,0.9704598133651586944555050,0.9719204848985835745206522,0.9733446355396324773464471,0.9747322117744170315712560,0.9760831614633702416830300,0.9773974338432058899681861,0.9786749795288262664309572,0.9799157505151781656726285,0.9811197001790570947322311,0.9822867832808596419166429,0.9834169559662839640681455,0.9845101757679783590716126,0.9855664016071379024692622,0.9865855937950491429603684,0.9875677140345828729848910,0.9885127254216350200148487,0.98942
205
05924465157453777048,0.9902912809952868962106899,0.9911247583510480415528399,0.9919209931951714500244370,0.9926799556084865573546763,0.9934016170724147657859271,0.9940859504700558793702825,0.9947329300872282225027936,0.9953425316134657151476031,0.9959147321429772566997088,0.9964495101755774022837600,0.9969468456176038804367370,0.9974067197828498321611183,0.9978291153935628466036470,0.9982140165816127953876923,0.9985614088900397275573677,0.9988712792754494246541769,0.9991436161123782382453400,0.9993784092025992514480161,0.9995756497983108555936109,0.9997353306710426625827368,0.9998574463699794385446275,0.9999419946068456536361287,0.9999889909843818679872841}; static double w512[256] = {0.0061299051754057857591564,0.0061296748380364986664278,0.0061292141719530834395471,0.0061285231944655327693402,0.0061276019315380226384508,0.0061264504177879366912426,0.0061250686964845654506976,0.0061234568195474804311878,0.0061216148475445832082156,0.0061195428496898295184288,0.0061172409038406284754329,0.0061147090964949169991245,0.0061119475227879095684795,0.0061089562864885234199252,0.0061057354999954793256260,0.0061022852843330780981965,0.0060986057691466529805468,0.0060946970926976980917399,0.0060905594018586731119147,0.0060861928521074844014940,0.0060815976075216427620556,0.0060767738407720980583934,0.0060717217331167509334394,0.0060664414743936418598512,0.0060609332630138177841916,0.0060551973059538766317450,0.0060492338187481899521175,0.0060430430254808039978627,0.0060366251587770195404584,0.0060299804597946507400317,0.0060231091782149633972884,0.0060160115722332929281516,0.0060086879085493424136484,0.0060011384623571610896056,0.0059933635173348036527221,0.0059853633656336707715812,0.0059771383078675312031423,0.0059686886531012259272183,0.0059600147188390547233923,0.0059511168310128456267588,0.0059419953239697077107922,0.0059326505404594676575446,0.0059230828316217905872556,0.0059132925569729856313229,0.0059032800843924967444267,0.0058930457901090792634301,0.0058825900586866627324847,0.0058719132830099005255609,0.0058610158642694068093892,0.0058498982119466814015496,0.0058385607437987230901727,0.0058270038858423319934219,0.0058152280723381015486124,0.0058032337457741007324836,0.0057910213568492471257818,0.0057785913644563714469284,0.0057659442356649741911390,0.0057530804457036750229319,0.0057400004779423555815070,0.0057267048238739963699973,0.0057131939830962084110906,0.0056994684632924603629882,0.0056855287802130018011102,0.0056713754576554833823756,0.0056570090274452746202723,0.0056424300294154800102991,0.0056276390113866542566918,0.0056126365291462173626557,0.0055974231464275703576030,0.0055819994348889124461425,0.0055663659740917603747899,0.00555
206
05233514791708235538,0.0055344721623536666407146,0.0055182130098548677502395,0.0055017465049368275723757,0.0054850732663450758090285,0.0054681939205933684565648,0.0054511091019401459196852,0.0054338194523647001109732,0.0054163256215430514316688,0.0053986282668235365401123,0.0053807280532021078251738,0.0053626256532973455128155,0.0053443217473251833447318,0.0053258170230733487787774,0.0053071121758755186716175,0.0052882079085851914147269,0.0052691049315492765055207,0.0052498039625814025460136,0.0052303057269349446719890,0.0052106109572757724261988,0.0051907203936547190996206,0.0051706347834797735752665,0.0051503548814879957194620,0.0051298814497171563759039,0.0051092152574771030281542,0.0050883570813208522065339,0.0050673077050154097256505,0.0050460679195123198490183,0.0050246385229179444874178,0.0050030203204634735477834,0.0049812141244746675595135,0.0049592207543413337151533,0.0049370410364865364724225,0.0049146758043355438745290,0.0048921258982845107556462,0.0048693921656689000083132,0.0048464754607316430993636,0.0048233766445910410307843,0.0048000965852084069516609,0.0047766361573554516370718,0.0047529962425814130594576,0.0047291777291799312876071,0.0047051815121556699579709,0.0046810084931906855725376,0.0046566595806105458869828,0.0046321356893501986622283,0.0046074377409195920619320,0.0045825666633690479877601,0.0045575233912543896535753,0.0045323088656018247089130,0.0045069240338725852313010,0.0044813698499273259161146,0.0044556472739902818017469,0.0044297572726131868769073,0.0044037008186389549258496,0.0043774788911651239762643,0.0043510924755070657234522,0.0043245425631609613132305,0.0042978301517665448748000,0.0042709562450696162035304,0.0042439218528843240022977,0.0042167279910552210986262,0.0041893756814190930634598,0.0041618659517665616659011,0.0041341998358034646067195,0.0041063783731120129818357,0.0040784026091117279353449,0.0040502735950201579699371,0.0040219923878133783908191,0.0039935600501862743674273,0.0039649776505126091053562,0.0039362462628048786290012,0.0039073669666739546834366,0.0038783408472885172720108,0.0038491689953342783540510,0.0038198525069729982349166,0.0037903924838012961884344,0.0037607900328092568594835,0.0037310462663388340021755,0.0037011623020420531166926,0.0036711392628390145554094,0.0036409782768756986764252,0.0036106804774815746300758,0.0035802470031270143713799,0.0035496789973805134987000,0.0035189776088657205261605,0.0034881439912182762045767,0.0034571793030424645127888,0.0034260847078676769483860,0.0033948613741046917538288,0.0033635104750017697209450,0.0033320331886005682236783,0.0033004306976918751358177,0.0032687041897711642972145,0.0032368548569939741987234,0.0032048838961311115627642,0.0031727925085236815030060,0.0031405819000379459532169,0.0031082532810200120618074,0.00
207
30758078662503522550163,0.0030432468748981576780527,0.0030105715304755267298129,0.0029777830607914904130339,0.0029448826979058762279357,0.0029118716780830123435331,0.0028787512417452737868732,0.0028455226334264723964728,0.0028121871017250922921949,0.0027787458992573726197173,0.0027452002826102393336092,0.0027115515122940877888456,0.0026778008526954179163600,0.0026439495720293237639656,0.0026099989422918391896635,0.0025759502392121415000167,0.0025418047422046148318992,0.0025075637343207750815413,0.0024732285022010581903898,0.0024388003360264736029032,0.0024042805294701247170072,0.0023696703796485981535706,0.0023349711870732236769383,0.0023001842556012066042973,0.0022653108923866345474810,0.0022303524078313603367724,0.0021953101155357629823745,0.0021601853322493885355395,0.0021249793778214727179358,0.0020896935751513471947536,0.0020543292501387313744068,0.0020188877316339116255770,0.0019833703513878098109153,0.0019477784440019430461334,0.0019121133468782766036998,0.0018763764001689718921795,0.0018405689467260314557679,0.0018046923320508429542037,0.0017687479042436241015783,0.0017327370139527705642995,0.0016966610143241088445575,0.0016605212609500562072903,0.0016243191118186897474239,0.0015880559272627267421479,0.0015517330699084184928942,0.0015153519046243599371387,0.0014789137984702174059640,0.0014424201206453770259886,0.0014058722424375164225552,0.0013692715371711025869345,0.0013326193801558190401403,0.0012959171486349257824991,0.0012591662217335559930561,0.0012223679804069540808915,0.0011855238073886605549070,0.0011486350871386503607080,0.0011117032057914329649653,0.0010747295511041247428251,0.0010377155124045074300544,0.0010006624805390909706032,0.0009635718478212056798501,0.0009264450079791582697455,0.0008892833561045005372012,0.0008520882886004809402792,0.0008148612031307819965602,0.0007776034985686972438014,0.0007403165749469818962867,0.0007030018334087411433900,0.0006656606761599343409382,0.0006282945064244358390880,0.0005909047284032230162400,0.0005534927472403894647847,0.0005160599690007674370993,0.0004786078006679509066920,0.0004411376501795405636493,0.0004036509265333198797447,0.0003661490400356268530141,0.0003286334028523334162522,0.0002911054302514885125319,0.0002535665435705865135866,0.0002160181779769908583388,0.0001784618055459532946077,0.0001408990173881984930124,0.0001033319034969132362968,0.0000657657316592401958310,0.0000282526373739346920387}; /* n = 1024 */ static double x1024[512] = {0.0015332313560626384065387,0.0045996796509132604743248,0.0076660846940754867627839,0.0107324176515422803327458,0.01379864968998
208
44401539048,0.0168647519770217265449962,0.0199306956814939776907024,0.0229964519737322146859283,0.0260619920258297325581921,0.0291272870119131747190088,0.0321923081084135882953009,0.0352570264943374577920498,0.0383214133515377145376052,0.0413854398649847193632977,0.0444490772230372159692514,0.0475122966177132524285687,0.0505750692449610682823599,0.0536373663049299446784129,0.0566991590022410150066456,0.0597604185462580334848567,0.0628211161513580991486838,0.0658812230372023327000985,0.0689407104290065036692117,0.0719995495578116053446277,0.0750577116607543749280791,0.0781151679813377563695878,0.0811718897697013033399379,0.0842278482828915197978074,0.0872830147851321356094940,0.0903373605480943146797811,0.0933908568511667930531222,0.0964434749817259444449839,0.0994951862354057706638682,0.1025459619163678143852404,0.1055957733375709917393206,0.1086445918210413421754502,0.1116923886981416930665228,0.1147391353098412365177689,0.1177848030069850158450139,0.1208293631505633191883714,0.1238727871119809777282145,0.1269150462733265659711591,0.1299561120276415015747167,0.1329959557791890421802183,0.1360345489437231767245806,0.1390718629487574087024745,0.1421078692338334288514767,0.1451425392507896747338214,0.1481758444640297746894331,0.1512077563507908736360111,0.1542382464014118381930443,0.1572672861196013386077717,0.1602948470227058049622614,0.1633209006419772551419632,0.1663454185228409920472972,0.1693683722251631675310675,0.1723897333235182105457458,0.1754094734074561169859457,0.1784275640817695987127083,0.1814439769667610892475458,0.1844586836985096036255346,0.1874716559291374498981239,0.1904828653270767897777182,0.1934922835773360459175133,0.1964998823817661533215037,0.1995056334593266523810493,0.2025095085463516210358758,0.2055114793968154435588961,0.2085115177825984134657778,0.2115095954937521680517391,0.2145056843387649520596422,0.2174997561448267079850562,0.2204917827580939905255947,0.2234817360439547026834844,0.2264695878872926510320010,0.2294553101927519176581055,0.2324388748850010462953415,0.2354202539089970401627982,0.2383994192302491690277166,0.2413763428350825830111093,0.2443509967309017306575811,0.2473233529464535787923793,0.2502933835320906316905658,0.2532610605600337470850902,0.2562263561246347465424530,0.2591892423426388177365829,0.2621496913534467061535080,0.2651076753193766937613805,0.2680631664259263621824189,0.2710161368820341379053566,0.2739665589203406170790369,0.2769144047974496674298651,0.2798596467941893048479266,0.2828022572158723421886958,0.2857422083925568078394062,0.2886794726793061316013119,0.2916140224564490954412652,0.2945458301298395466682397,0.2974748681311158710926665,0.3004011089179602237287060,0.3033245249743575146018584,0.3062450888108541472266190,0.3091627729648165073212094,0.3120775500
209
006891993287636,0.3149893925102530283167230,0.3178982731128827248285835,0.3208041644558044102645582,0.3237070392143528003701590,0.3266068700922281444141618,0.3295036298217528976399056,0.3323972911641281245763845,0.3352878269096896307981228,0.3381752098781638207253743,0.3410594129189232790587667,0.3439404089112420734451077,0.3468181707645507759736923,0.3496926714186912011050938,0.3525638838441708576370887,0.3554317810424171123150528,0.3582963360460310626968790,0.3611575219190411168852009,0.3640153117571562777424605,0.3668696786880191292071420,0.3697205958714585223322883,0.3725680364997419586702471,0.3754119737978276686304337,0.3782523810236163824397703,0.3810892314682027913383487,0.3839224984561266966457784,0.3867521553456238443366159,0.3895781755288764427662286,0.3924005324322633611914264,0.3952191995166100067331951,0.3980341502774378774318886,0.4008453582452137890482864,0.4036527969855987732669841,0.4064564400996966449616823,0.4092562612243022361850445,0.4120522340321492945489319,0.4148443322321580436639788,0.4176325295696824033106488,0.4204167998267568670171117,0.4231971168223430347225035,0.4259734544125757982073747,0.4287457864910091769763965,0.4315140869888618022816824,0.4342783298752620469783905,0.4370384891574927989076034,0.4397945388812358755048319,0.4425464531308160773358662,0.4452942060294448782650898,0.4480377717394637499647905,0.4507771244625871184774399,0.4535122384401449505463744,0.4562430879533249674337895,0.4589696473234144839484647,0.4616918909120418704091584,0.4644097931214176352731591,0.4671233283945751261630457,0.4698324712156108470282980,0.4725371961099243891820077,0.4752374776444579739565725,0.4779332904279356047259052,0.4806246091111018260453658,0.4833114083869600876643171,0.4859936629910107111699206,0.4886713477014884570245255,0.4913444373395996897627612,0.4940129067697591391182235,0.4966767308998262548534419,0.4993358846813411530706387,0.5019903431097601517846292,0.5046400812246908935430768,0.5072850741101270528831987,0.5099252968946826264179220,0.5125607247518258033484145,0.5151913329001124142038603,0.5178170966034189556133159,0.5204379911711751889184691,0.5230539919585963104401304,0.5256650743669146912153147,0.5282712138436111840258187,0.5308723858826459955432696,0.5334685660246891214197081,0.5360597298573503421568799,0.5386458530154087775915395,0.5412269111810419978382210,0.5438028800840546885350993,0.5463737355021068682427603,0.5489394532609416558499039,0.5515000092346125858442412,0.5540553793457104693110943,0.5566055395655897985264809,0.5591504659145946930157566,0.5616901344622843849532002,0.5642245213276582417822586,0.5667536026793803239405196,0.5692773547360034755778519,0.5717957537661929461605442,0.5743087760889495408586850,0.5768163980738322976184566,0.5793185961411806888254667,0.58181534
210
67623363454697137,0.5843066264598643017272666,0.5867924118077737578782574,0.5892726794317383594853053,0.5917474060093159907610475,0.5942165682701680800580147,0.5966801429962784154186793,0.5991381070221714681281111,0.6015904372351302222163013,0.6040371105754135078618616,0.6064781040364728366534687,0.6089133946651687366701116,0.6113429595619865853458987,0.6137667758812519380899084,0.6161848208313453506363029,0.6185970716749166931046915,0.6210035057290989537555048,0.6234041003657215304299416,0.6257988330115230076688675,0.6281876811483634175098794,0.6305706223134359819666081,0.6329476340994783351992008,0.6353186941549832233898213,0.6376837801844086803419153,0.6400428699483876768269192,0.6423959412639372417070377,0.6447429720046670528676835,0.6470839401009874959981582,0.6494188235403171892641570,0.6517476003672899719207013,0.6540702486839613549191454,0.6563867466500144315669620,0.6586970724829652463040876,0.6610012044583676196647058,0.6632991209100174274984589,0.6655908002301563325302097,0.6678762208696749663426270,0.6701553613383155598710345,0.6724282002048740205051479,0.6746947160974014538975312,0.6769548877034051285838219,0.6792086937700488815250166,0.6814561131043529626873631,0.6836971245733933167806834,0.6859317071045003002812397,0.6881598396854568318705713,0.6903815013646959744270519,0.6925966712514979467122689,0.6948053285161865628996815,0.6970074523903250980984011,0.6992030221669115780303307,0.7013920172005734910243170,0.7035744169077619204963997,0.7057502007669450960906928,0.7079193483188013616608982,0.7100818391664115582779368,0.7122376529754508204546805,0.7143867694743797837842896,0.7165291684546352021941915,0.7186648297708199730232898,0.7207937333408925681355609,0.7229158591463558692887801,0.7250311872324454059827217,0.7271396977083169940167956,0.7292413707472337729927181,0.7313361865867526410034676,0.7334241255289100847554419,0.7355051679404074033764222,0.7375792942527953241676460,0.7396464849626580085640129,0.7417067206317964465721772,0.7437599818874112379620360,0.7458062494222847584928838,0.7478455039949627094612890,0.7498777264299350488635483,0.7519028976178163024713854,0.7539209985155252531253957,0.7559320101464640065565832,0.7579359136006964320521972,0.7599326900351259762879594,0.7619223206736728486546595,0.7639047868074505764130149,0.7658800697949419280166093,0.7678481510621742029486694,0.7698090121028938864243967,0.7717626344787406673165402,0.7737089998194208176678866,0.7756480898228799321603470,0.7775798862554750259163361,0.7795043709521459890141759,0.7814215258165863961053031,0.7833313328214136695271245,0.7852337740083385943114429,0.7871288314883341834944720,0.7890164874418038921405657,0.7908967241187491784979139,0.7927695238389364107105941,0.7946348689920631175175217,0.7964927420379235813750136,0.79834
211
31255065737724458586,0.8001860019984956219039900,0.8020213541847606330100649,0.8038491648071928284194859,0.8056694166785310321906380,0.8074820926825904849673728,0.8092871757744237908160400,0.8110846489804811942036542,0.8128744953987701856100790,0.8146566981990144342734272,0.8164312406228120465742028,0.8181981059837931485700490,0.8199572776677767911993239,0.8217087391329271766780945,0.8234524739099092046215225,0.8251884656020433364270094,0.8269166978854597764628854,0.8286371545092519686128428,0.8303498192956294067327593,0.8320546761400697575830038,0.8337517090114702948057846,0.8354409019522986425235764,0.8371222390787428271411563,0.8387957045808606359402829,0.8404612827227282810625704,0.8421189578425883674826439,0.8437687143529971635802028,0.8454105367409711729261812,0.8470444095681330059047621,0.8486703174708565497995875,0.8502882451604114359791023,0.8518981774231068028225812,0.8535000991204343530350070,0.8550939951892107040056078,0.8566798506417190298715048,0.8582576505658499939545848,0.8598273801252419702463831,0.8613890245594205526224495,0.8629425691839373504743648,0.8644879993905080694542896,0.8660253006471498760336444,0.8675544584983180445842596,0.8690754585650418856970762,0.8705882865450599544602407,0.8720929282129545374252050,0.8735893694202854169962281,0.8750775960957229119854680,0.8765575942451801930826613,0.8780293499519448719952049,0.8794928493768098630212838,0.8809480787582035158255322,0.8823950244123190181935674,0.8838336727332430675485994,0.8852640101930838100201983,0.8866860233420980458621863,0.8880996988088177000235219,0.8895050233001755566829532,0.8909019836016302565651375,0.8922905665772905558628607,0.8936707591700388455969280,0.8950425484016539302522575,0.8964059213729330645356690,0.8977608652638132471078410,0.8991073673334917701488930,0.9004454149205460236240486,0.9017749954430525531228459,0.9030960963987053701523781,0.9044087053649335137720782,0.9057128099990178624646022,0.9070083980382071951444166,0.9082954572998335002127549,0.9095739756814265315746820,0.9108439411608276105410847,0.9121053417963026725455006,0.9133581657266545576127977,0.9146024011713345435238301,0.9158380364305531206273175,0.9170650598853900072573273,0.9182834599979034047218800,0.9194932253112384908353520,0.9206943444497351509745089,0.9218868061190349456451742,0.9230705991061873135537215,0.9242457122797550091847637,0.9254121345899187738936182,0.9265698550685812395293315,0.9277188628294700636112689,0.9288591470682402950895005,0.9299906970625759697264543,0.9311135021722909341445515,0.9322275518394288975917975,0.9333328355883627104845635,0.9344293430258928687940732,0.9355170638413452433503852,0.9365959878066680331449597,0.9376661047765279417201973,0.9387274046884055757416456,0.9397798775626900648558921,0.9408235135027729019444869,0.94
212
18583026951410028915762,0.9428842354094689849902736,0.9439013019987106631201510,0.9449094928991897628355911,0.9459087986306898495121205,0.9468992097965434727052183,0.9478807170837205248834878,0.9488533112629158137054760,0.9498169831886358470168335,0.9507717237992848297519245,0.9517175241172498719314184,0.9526543752489854069548347,0.9535822683850968193944507,0.9545011948004232815044368,0.9554111458541197976665483,0.9563121129897384560011695,0.9572040877353088863799924,0.9580870617034179240840996,0.9589610265912884783587268,0.9598259741808576051234879,0.9606818963388537831043733,0.9615287850168733926613630,0.9623666322514563965930439,0.9631954301641612222071790,0.9640151709616388439537466,0.9648258469357060659245549,0.9656274504634180035311332,0.9664199740071397636802195,0.9672034101146173227737943,0.9679777514190476018682591,0.9687429906391477383350273,0.9694991205792235533724866,0.9702461341292372147270016,0.9709840242648740939883669,0.9717127840476088178328839,0.9724324066247705125950353,0.9731428852296072415565604,0.9738442131813496343496072,0.9745363838852737078785517,0.9752193908327628781730396,0.9758932276013691625928266,0.9765578878548735718130775,0.9772133653433456910269459,0.9778596539032024498104955,0.9784967474572660801033674,0.9791246400148212617670490,0.9797433256716714551911835,0.9803527986101944204270933,0.9809530530993969223366037,0.9815440834949686212533729,0.9821258842393351486632952,0.9826984498617103674201996,0.9832617749781478160230522,0.9838158542915913364912672,0.9843606825919248853856025,0.9848962547560215275335618,0.9854225657477916120303537,0.9859396106182301300994116,0.9864473845054632544104222,0.9869458826347940594679517,0.9874351003187474227003598,0.9879150329571141058970610,0.9883856760369940166627304,0.9888470251328386495802522,0.9892990759064927068006818,0.9897418241072348978090276,0.9901752655718179181502248,0.9905993962245076069415402,0.9910142120771212830473891,0.9914197092290652598522332,0.9918158838673715386394944,0.9922027322667336806727008,0.9925802507895418581838653,0.9929484358859170846092543,0.9933072840937446245820355,0.9936567920387065844051246,0.9939969564343136839997662,0.9943277740819362116746914,0.9946492418708341635125525,0.9949613567781865697596566,0.9952641158691200113800912,0.9955575162967363309635588,0.9958415553021395435525955,0.9961162302144619548145649,0.9963815384508894965215124,0.9966374775166862927999356,0.9968840450052184754903082,0.9971212385979772738362093,0.9973490560646014135491635,0.9975674952628988745188845,0.9977765541388680773265018,0.9979762307267185998745420,0.9981665231488915727109186,0.9983474296160799746514418,0.9985189484272491654281575,0.9986810779696581776171579,0.9988338167188825964389443,0.9989771632388403756649803,0.9991111161818228462260355,0
213
.9992356742885348165163858,0.9993508363881507486653971,0.9994566013984000492749057,0.9995529683257070064969677,0.9996399362654382464576482,0.9997175044023747284307007,0.9997856720116889628341744,0.9998444384611711916084367,0.9998938032169419878731474,0.9999337658606177711221103,0.9999643261538894550943330,0.9999854843850284447675914,0.9999972450545584403516182}; static double w1024[512] = {0.0030664603092439082115513,0.0030664314747171934849726,0.0030663738059349007324470,0.0030662873034393008056861,0.0030661719680437936084028,0.0030660278008329004477528,0.0030658548031622538363679,0.0030656529766585847450783,0.0030654223232197073064431,0.0030651628450145009692318,0.0030648745444828901040266,0.0030645574243358210601357,0.0030642114875552366740338,0.0030638367373940482295700,0.0030634331773761048702058,0.0030630008112961604635720,0.0030625396432198379186545,0.0030620496774835909559465,0.0030615309186946633309249,0.0030609833717310455112352,0.0030604070417414288079918,0.0030598019341451569616257,0.0030591680546321751827342,0.0030585054091629766484119,0.0030578140039685464545661,0.0030570938455503030247440,0.0030563449406800369760227,0.0030555672963998474425352,0.0030547609200220758572342,0.0030539258191292371925135,0.0030530620015739486603347,0.0030521694754788558725307,0.0030512482492365564619779,0.0030502983315095211653578,0.0030493197312300123682482,0.0030483124576000001133114,0.0030472765200910755723677,0.0030462119284443619831693,0.0030451186926704230517109,0.0030439968230491688209395,0.0030428463301297590067471,0.0030416672247305038021562,0.0030404595179387621506312,0.0030392232211108374894710,0.0030379583458718709642643,0.0030366649041157321154111,0.0030353429080049070377385,0.0030339923699703840142628,0.0030326133027115366251721,0.0030312057191960043331307,0.0030297696326595705460252,0.0030283050566060381583022,0.0030268120048071025720655,0.0030252904913022221991274,0.0030237405303984864452325,0.0030221621366704811776946,0.0030205553249601516777118,0.0030189201103766630786495,0.0030172565082962582916016,0.0030155645343621134195681,0.0030138442044841906616068,0.0030120955348390887083441,0.0030103185418698906302495,0.0030085132422860092601062,0.0030066796530630300711306,0.0030048177914425515522176,0.0030029276749320230818149,0.0030010093213045803019478,0.0029990627485988779939449,0.0029970879751189204574353,0.0029950850194338893942123,0.0029930539003779692985814,0.0029909946370501703558363,0.0029889072488141488505262,0.0029867917552980250862041,0.0029846481763941988183689,0.0029824765322591622023349,0.0029802768433133102577897,0.0029780491302407488518214,0.0029757934139891002022209,0.0029735097157693059028890,0.0029711980570554274731990,0.002968858459584444
214
4331918,0.0029664909453560499065010,0.0029640955366324437529314,0.0029616722559381232326340,0.0029592211260596712038487,0.0029567421700455418562030,0.0029542354112058439815854,0.0029517008731121217846274,0.0029491385795971332348581,0.0029465485547546259626151,0.0029439308229391107008170,0.0029412854087656322747309,0.0029386123371095381418860,0.0029359116331062444843108,0.0029331833221509998552933,0.0029304274298986463828860,0.0029276439822633785324025,0.0029248330054184994301727,0.0029219945257961747508486,0.0029191285700871841705750,0.0029162351652406703883623,0.0029133143384638857180205,0.0029103661172219362530391,0.0029073905292375236068160,0.0029043876024906842306667,0.0029013573652185263120627,0.0028982998459149642555740,0.0028952150733304507490135,0.0028921030764717064173001,0.0028889638846014470665859,0.0028857975272381085212091,0.0028826040341555690560623,0.0028793834353828694269858,0.0028761357612039305018167,0.0028728610421572684947521,0.0028695593090357078067012,0.0028662305928860914743281,0.0028628749250089892305081,0.0028594923369584031789413,0.0028560828605414710856927,0.0028526465278181672904478,0.0028491833711010012402964,0.0028456934229547136488796,0.0028421767161959702837564,0.0028386332838930533848701,0.0028350631593655507170153,0.0028314663761840422592303,0.0028278429681697845340603,0.0028241929693943925796601,0.0028205164141795195677262,0.0028168133370965340702726,0.0028130837729661949782821,0.0028093277568583240752928,0.0028055453240914762689974,0.0028017365102326074839556,0.0027979013510967402185435,0.0027940398827466267692845,0.0027901521414924101257281,0.0027862381638912825390663,0.0027822979867471417676962,0.0027783316471102450029635,0.0027743391822768604783394,0.0027703206297889167653083,0.0027662760274336497592617,0.0027622054132432473587211,0.0027581088254944918412282,0.0027539863027083999392661,0.0027498378836498606195970,0.0027456636073272705694208,0.0027414635129921673927833,0.0027372376401388605206822,0.0027329860285040598383428,0.0027287087180665020331547,0.0027244057490465746667821,0.0027200771619059379749851,0.0027157229973471443987056,0.0027113432963132558499974,0.0027069380999874587163979,0.0027025074497926766073634,0.0026980513873911808464073,0.0026935699546841987126055,0.0026890631938115194351518,0.0026845311471510979446691,0.0026799738573186563850015,0.0026753913671672833892344,0.0026707837197870311237119,0.0026661509585045101038391,0.0026614931268824817854798,0.0026568102687194489357814,0.0026521024280492437872770,0.0026473696491406139791397,0.0026426119764968062894804,0.0026378294548551481626046,0.0026330221291866270351630,0.0026281900446954674651512,0.0026233332468187060677353,0.0026184517812257642618999,0.0026135456938180188319369,0.0026086150307283703078113,0.0026036598383208
215
091684657,0.0025986801631899798721388,0.0025936760521607427178014,0.0025886475522877335418257,0.0025835947108549212540321,0.0025785175753751632172710,0.0025734161935897584747222,0.0025682906134679988291122,0.0025631408832067177780710,0.0025579670512298373098703,0.0025527691661879125638030,0.0025475472769576743594882,0.0025423014326415695994010,0.0025370316825672995489502,0.0025317380762873559984451,0.0025264206635785553113127,0.0025210794944415703629476,0.0025157146191004603745948,0.0025103260880021986466869,0.0025049139518161981960773,0.0024994782614338353016280,0.0024940190679679709626349,0.0024885364227524702745874,0.0024830303773417197267843,0.0024775009835101424263432,0.0024719482932517112531633,0.0024663723587794599504176,0.0024607732325249921551741,0.0024551509671379883737605,0.0024495056154857109065099,0.0024438372306525067265426,0.0024381458659393083172574,0.0024324315748631324732279,0.0024266944111565770692147,0.0024209344287673158020275,0.0024151516818575909099866,0.0024093462248037038747545,0.0024035181121955041103265,0.0023976673988358756439882,0.0023917941397402217940673,0.0023858983901359478493246,0.0023799802054619417548485,0.0023740396413680528093376,0.0023680767537145683786720,0.0023620915985716886306938,0.0023560842322189992961374,0.0023500547111449424606655,0.0023440030920462853929883,0.0023379294318275874140606,0.0023318337876006648123684,0.0023257162166840538103394,0.0023195767766024715869239,0.0023134155250862753614165,0.0023072325200709195436049,0.0023010278196964109553481,0.0022948014823067621287099,0.0022885535664494426857857,0.0022822841308748288053830,0.0022759932345356507817318,0.0022696809365864386804193,0.0022633472963829660967620,0.0022569923734816920218464,0.0022506162276392008214839,0.0022442189188116403333494,0.0022378005071541580875846,0.0022313610530203356561684,0.0022249006169616211363732,0.0022184192597267597736437,0.0022119170422612227292520,0.0022053940257066339981005,0.0021988502714001954820607,0.0021922858408741102242558,0.0021857007958550038097087,0.0021790951982633439377969,0.0021724691102128581719720,0.0021658225940099498722195,0.0021591557121531123157498,0.0021524685273323410114303,0.0021457611024285442134846,0.0021390335005129516400021,0.0021322857848465214018174,0.0021255180188793451473363,0.0021187302662500514289029,0.0021119225907852072963166,0.0021050950564987181231273,0.0020982477275912256713511,0.0020913806684495044002679,0.0020844939436458560249764,0.0020775876179375023304007,0.0020706617562659762464561,0.0020637164237565111901030,0.0020567516857174286800274,0.0020497676076395242297101,0.0020427642551954515246552,0.0020357416942391048895728,0.0020286999908050000513193,0.0020216392111076532034194,0.0020145594215409583780096,0.0020074606886775631310555,0.0020003430792
216
682425467160,0.0019932066602412715667394,0.0019860514987017956507927,0.0019788776619311997736447,0.0019716852173864757651327,0.0019644742326995879988655,0.0019572447756768374356240,0.0019499969142982240274419,0.0019427307167168074883601,0.0019354462512580664378677,0.0019281435864192559230531,0.0019208227908687633255086,0.0019134839334454626590447,0.0019061270831580672642844,0.0018987523091844809062265,0.0018913596808711472808775,0.0018839492677323979370705,0.0018765211394497986196010,0.0018690753658714940398285,0.0018616120170115510799024,0.0018541311630493004367905,0.0018466328743286767122991,0.0018391172213575569552912,0.0018315842748070976623218,0.0018240341055110702429247,0.0018164667844651949558009,0.0018088823828264733221690,0.0018012809719125190225581,0.0017936626232008872833327,0.0017860274083284027592567,0.0017783753990904859184165,0.0017707066674404779358362,0.0017630212854889641021349,0.0017553193255030957535871,0.0017476008599059107299616,0.0017398659612756523665312,0.0017321147023450870266539,0.0017243471560008201813452,0.0017165633952826110422716,0.0017087634933826857546100,0.0017009475236450491562317,0.0016931155595647951096823,0.0016852676747874154134422,0.0016774039431081072989678,0.0016695244384710795200224,0.0016616292349688570408253,0.0016537184068415843295541,0.0016457920284763272637533,0.0016378501744063736542136,0.0016298929193105323938983,0.0016219203380124312385075,0.0016139325054798132252838,0.0016059294968238317366751,0.0015979113872983442154825,0.0015898782522992045381361,0.0015818301673635540527516,0.0015737672081691112886347,0.0015656894505334603439125,0.0015575969704133379579831,0.0015494898439039192754876,0.0015413681472381023085203,0.0015332319567857911038062,0.0015250813490531776215856,0.0015169164006820223329593,0.0015087371884489335424584,0.0015005437892646454426166,0.0014923362801732949073323,0.0014841147383516970308228,0.0014758792411086194189814,0.0014676298658840552399621,0.0014593666902484950408286,0.0014510897919021973371136,0.0014427992486744579821480,0.0014344951385228783230315,0.0014261775395326321501237,0.0014178465299157314469528,0.0014095021880102909474427,0.0014011445922797915073771,0.0013927738213123422970256,0.0013843899538199418218713,0.0013759930686377377783877,0.0013675832447232857518263,0.0013591605611558067629844,0.0013507250971354436709363,0.0013422769319825164387192,0.0013338161451367762689788,0.0013253428161566586165863,0.0013168570247185350852537,0.0013083588506159642151809,0.0012998483737589411687807,0.0012913256741731463215379,0.0012827908319991927650686,0.0012742439274918727294554,0.0012656850410194029319476,0.0012571142530626688591208,0.0012485316442144679896043,0.0012399372951787519644928,0.0012313312867698677125706,0.0012227136999117975374834,0.0012140846
217
156373981740056,0.0012054441150876388205601,0.0011967922795108381551550,0.0011881291902619003419159,0.0011794549288015500353964,0.0011707695766955663898644,0.0011620732156140160807669,0.0011533659273304853455891,0.0011446477937213110513287,0.0011359188967648107958214,0.0011271793185405120501566,0.0011184291412283803494364,0.0011096684471080465391373,0.0011008973185580330843445,0.0010921158380549794491381,0.0010833240881728665534171,0.0010745221515822403144596,0.0010657101110494342805238,0.0010568880494357913638046,0.0010480560496968846800697,0.0010392141948817375023057,0.0010303625681320423357186,0.0010215012526813791214350,0.0010126303318544325762649,0.0010037498890662086758941,0.0009948600078212502888805,0.0009859607717128519688418,0.0009770522644222739122264,0.0009681345697179550890732,0.0009592077714547255541688,0.0009502719535730179460261,0.0009413272000980781811114,0.0009323735951391753507612,0.0009234112228888108282347,0.0009144401676219265933610,0.0009054605136951127822476,0.0008964723455458144695262,0.0008874757476915376906225,0.0008784708047290547115472,0.0008694576013336085537138,0.0008604362222581167813022,0.0008514067523323745586954,0.0008423692764622569855308,0.0008333238796289207169173,0.0008242706468880048763834,0.0008152096633688312691343,0.0008061410142736039032099,0.0007970647848766078261514,0.0007879810605234072847989,0.0007788899266300432158601,0.0007697914686822300749096,0.0007606857722345520114971,0.0007515729229096583980656,0.0007424530063974587204051,0.0007333261084543168373926,0.0007241923149022446178008,0.0007150517116280949619884,0.0007059043845827542163241,0.0006967504197803339882351,0.0006875899032973623698204,0.0006784229212719745780188,0.0006692495599031030193850,0.0006600699054496667875923,0.0006508840442297606018626,0.0006416920626198431946113,0.0006324940470539251567018,0.0006232900840227562488244,0.0006140802600730121876541,0.0006048646618064809156059,0.0005956433758792483631993,0.0005864164890008837132649,0.0005771840879336241764943,0.0005679462594915592881427,0.0005587030905398147360662,0.0005494546679937357307118,0.0005402010788180699282026,0.0005309424100261499182844,0.0005216787486790752896494,0.0005124101818848942860548,0.0005031367967977850677401,0.0004938586806172365939677,0.0004845759205872291441124,0.0004752886039954144966810,0.0004659968181722957880391,0.0004567006504904070755681,0.0004474001883634926336095,0.0004380955192456860150653,0.0004287867306306889171352,0.0004194739100509498966958,0.0004101571450768429896514,0.0004008365233158462997325,0.0003915121324117206363681,0.0003821840600436882993131,0.0003728523939256121308821,0.0003635172218051749865499,0.0003541786314630598135175,0.0003448367107121305776064,0.0003354915473966143456333,0.0003261432293912849189248,0.00031679
218
18446006485317858,0.0003074374809581322877037,0.0002980802264252762217455,0.0002887201689909301727620,0.0002793573966704570567274,0.0002699919975049447012834,0.0002606240595604292032823,0.0002512536709271339139118,0.0002418809197187298044384,0.0002325058940716253739001,0.0002231286821442978268308,0.0002137493721166826096154,0.0002043680521896465790359,0.0001949848105845827899210,0.0001855997355431850062940,0.0001762129153274925249194,0.0001668244382203495280013,0.0001574343925265138930609,0.0001480428665748079976500,0.0001386499487219861751244,0.0001292557273595155266326,0.0001198602909254695827354,0.0001104637279257437565603,0.0001010661269730276014588,0.0000916675768613669107254,0.0000822681667164572752810,0.0000728679863190274661367,0.0000634671268598044229933,0.0000540656828939400071988,0.0000446637581285753393838,0.0000352614859871986975067,0.0000258591246764618586716,0.0000164577275798968681068,0.0000070700764101825898713}; /* n = 3 */ static double x3[2] = {0.0000000000000000000000000,0.7745966692414833770358531}; static double w3[2] = {0.8888888888888888888888889,0.5555555555555555555555556}; /* n = 5 */ static double x5[3] = {0.0000000000000000000000000,0.5384693101056830910363144,0.9061798459386639927976269}; static double w5[3] = {0.5688888888888888888888889,0.4786286704993664680412915,0.2369268850561890875142640}; /* n = 7 */ static double x7[4] = {0.0000000000000000000000000,0.4058451513773971669066064,0.7415311855993944398638648,0.9491079123427585245261897}; static double w7[4] = {0.4179591836734693877551020,0.3818300505051189449503698,0.2797053914892766679014678,0.1294849661688696932706114}; /* n = 9 */ static double x9[5] = {0.0000000000000000000000000,0.3242534234038089290385380,0.6133714327005903973087020,0.8360311073266357942994298,0.9681602395076260898355762};
219
static double w9[5] = {0.3302393550012597631645251,0.3123470770400028400686304,0.2606106964029354623187429,0.1806481606948574040584720,0.0812743883615744119718922}; /* n = 11 */ static double x11[6] = {0.0000000000000000000000000,0.2695431559523449723315320,0.5190961292068118159257257,0.7301520055740493240934163,0.8870625997680952990751578,0.9782286581460569928039380}; static double w11[6] = {0.2729250867779006307144835,0.2628045445102466621806889,0.2331937645919904799185237,0.1862902109277342514260976,0.1255803694649046246346943,0.0556685671161736664827537}; /* n = 13 */ static double x13[7] = {0.0000000000000000000000000,0.2304583159551347940655281,0.4484927510364468528779129,0.6423493394403402206439846,0.8015780907333099127942065,0.9175983992229779652065478,0.9841830547185881494728294}; static double w13[7] = {0.2325515532308739101945895,0.2262831802628972384120902,0.2078160475368885023125232,0.1781459807619457382800467,0.1388735102197872384636018,0.0921214998377284479144218,0.0404840047653158795200216}; /* n = 15 */ static double x15[8] = {0.0000000000000000000000000,0.2011940939974345223006283,0.3941513470775633698972074,0.5709721726085388475372267,0.7244177313601700474161861,0.8482065834104272162006483,0.9372733924007059043077589,0.9879925180204854284895657}; static double w15[8] = {0.2025782419255612728806202,0.1984314853271115764561183,0.1861610000155622110268006,0.1662692058169939335532009,0.1395706779261543144478048,0.1071592204671719350118695,0.0703660474881081247092674,0.0307532419961172683546284}; /* n = 17 */ static double x17[9] = {0.0000000000000000000000000,0.1784841814958478558506775,0.3512317634538763152971855,0.5126905370864769678862466,0.65767115921669
220
07658503022,0.7815140038968014069252301,0.8802391537269859021229557,0.9506755217687677612227170,0.9905754753144173356754340}; static double w17[9] = {0.1794464703562065254582656,0.1765627053669926463252710,0.1680041021564500445099707,0.1540457610768102880814316,0.1351363684685254732863200,0.1118838471934039710947884,0.0850361483171791808835354,0.0554595293739872011294402,0.0241483028685479319601100}; /* n = 19 */ static double x19[10] = {0.0000000000000000000000000,0.1603586456402253758680961,0.3165640999636298319901173,0.4645707413759609457172671,0.6005453046616810234696382,0.7209661773352293786170959,0.8227146565371428249789225,0.9031559036148179016426609,0.9602081521348300308527788,0.9924068438435844031890177}; static double w19[10] = {0.1610544498487836959791636,0.1589688433939543476499564,0.1527660420658596667788554,0.1426067021736066117757461,0.1287539625393362276755158,0.1115666455473339947160239,0.0914900216224499994644621,0.0690445427376412265807083,0.0448142267656996003328382,0.0194617882297264770363120}; /* Merge all together */ typedef struct tagGLAW{ int n; double* x; double* w; }GLAW; static GLAW glaw[] = { {2,x2,w2}, {3,x3,w3}, {4,x4,w4}, {5,x5,w5}, {6,x6,w6}, {7,x7,w7}, {8,x8,w8}, {9,x9,w9}, {10,x10,w10}, {11,x11,w11}, {12,x12,w12}, {13,x13,w13}, {14,x14,w14},
221
{15,x15,w15}, {16,x16,w16}, {17,x17,w17}, {18,x18,w18}, {19,x19,w19}, {20,x20,w20}, {32,x32,w32}, {64,x64,w64}, {96,x96,w96}, {100,x100,w100}, {128,x128,w128}, {256,x256,w256}, {512,x512,w512}, {1024,x1024,w1024} }; static const int GLAWSIZE = sizeof(glaw)/sizeof(glaw[0]); /* Gauss-Legendre n-points quadrature, exact for polynomial of degree <=2n-1 1. n - even: int(f(t),t=a..b) = A*sum(w[i]*f(A*x[i]+B),i=0..n-1) = A*sum(w[k]*[f(B+A*x[k])+f(B-A*x[k])],k=0..n/2-1) A = (b-a)/2, B = (a+b)/2 2. n - odd: int(f(t),t=a..b) = A*sum(w[i]*f(A*x[i]+B),i=0..n-1) = A*w[0]*f(B)+A*sum(w[k]*[f(B+A*x[k])+f(B-A*x[k])],k=1..(n-1)/2) A = (b-a)/2, B = (a+b)/2 */ double gauss_legendre(int n, double (*f)(double,void*), void* data, double a, double b) { double* x = NULL; double* w = NULL; double A,B,Ax,s;
222
int i, dtbl, m; m = (n+1)>>1; /* Load appropriate predefined table */ dtbl = 0; for (i = 0; i<GLAWSIZE;i++) { if(n==glaw[i].n) { x = glaw[i].x; w = glaw[i].w; break; } } /* Generate new if non-predefined table is required */ /* with precision of 1e-10 */ if(NULL==x) { dtbl = 1; x = (double*)malloc(m*sizeof(double)); w = (double*)malloc(m*sizeof(double)); gauss_legendre_tbl(n,x,w,1e-10); } A = 0.5*(b-a); B = 0.5*(b+a); if(n&1) /* n - odd */ { s = w[0]*((*f)(B,data)); for (i=1;i<m;i++) { Ax = A*x[i]; s += w[i]*((*f)(B+Ax,data)+(*f)(B-Ax,data)); } }else{ /* n - even */
223
s = 0.0; for (i=0;i<m;i++) { Ax = A*x[i]; s += w[i]*((*f)(B+Ax,data)+(*f)(B-Ax,data)); } } if (dtbl) { free(x); free(w); } return A*s; } /* 2D Numerical computation of int(f(x,y),x=a..b,y=c..d) by Gauss-Legendre n-th order high precision quadrature [in]n - quadrature order [in]f - integrand [in]data - pointer on user-defined data which will be passed to f every time it called (as third parameter). [in][a,b] - interval of integration return: -computed integral value or -1.0 if n order quadrature is not supported 1. n - even: int(f(t,p),t=a..b,p=c..d) = C*A*sum(w[i]*w[j]*f(A*x[i]+B,C*y[j]+D),i=0..n-1,j=0..n-1) = C*A*sum(w[k]*w[l]*[f(B+A*x[k],C*y[l]+D)+f(B-A*x[k],C*y[l]+D)],k=0..n/2-1,l=0..n-1) = C*A*sum(w[k]*w[l]*[f(B+A*x[k],C*y[l]+D)+f(B+A*x[k],D-C*y[l])+ +f(B-A*x[k],C*y[l]+D)+f(B-A*x[k],D-C*y[l])],k=0..n/2-1,l=0..n/2-1) A = (b-a)/2 B = (a+b)/2 C = (d-c)/2 D = (d+c)/2
224
2. n - odd: int(f(t,p),t=a..b,p=c..d) = C*A*sum(w[i]*w[j]*f(A*x[i]+B,C*y[j]+D),i=0..n-1,j=0..n-1) = C*A*[w[0]*w[0]*f(B,D)+sum(w[0]*w[j]*(f(B,C*y[j]+D)+f(B,D-C*y[j])),j=1..(n-1)/2)+ +sum(w[i]*w[0]*(f(B+A*x[i],D)+f(B-A*x[i],D)),i=1..(n-1)/2)+ +sum(w[k]*w[l]*[f(B+A*x[k],C*y[l]+D)+f(B+A*x[k],D-C*y[l])+ +f(B-A*x[k],C*y[l]+D)+f(B-A*x[k],D-C*y[l])],k=1..(n-1)/2,l=1..(n-1)/2)] A = (b-a)/2, B = (a+b)/2 C = (d-c)/2 D = (d+c)/2 */ double gauss_legendre_2D_cube(int n, double (*f)(double,double,void*), void* data, double a, double b, double c, double d) { double* x = NULL; double* w = NULL; double A,B,C,D,Ax,Cy,s,t; int i,j, dtbl, m; m = (n+1)>>1; /* Load appropriate predefined table */ dtbl = 0; for (i = 0; i<GLAWSIZE;i++) { if(n==glaw[i].n) { x = glaw[i].x; w = glaw[i].w; break; } } /* Generate new if non-predefined table is required */ /* with precision of 1e-10 */ if(NULL==x) {
225
dtbl = 1; x = (double*)malloc(m*sizeof(double)); w = (double*)malloc(m*sizeof(double)); gauss_legendre_tbl(n,x,w,1e-10); } A = 0.5*(b-a); B = 0.5*(b+a); C = 0.5*(d-c); D = 0.5*(d+c); if(n&1) /* n - odd */ { s = w[0]*w[0]*(*f)(B,D,data); for (j=1,t=0.0;j<m;j++) { Cy = C*x[j]; t += w[j]*((*f)(B,D+Cy,data)+(*f)(B,D-Cy,data)); } s += w[0]*t; for (i=1,t=0.0;i<m;i++) { Ax = A*x[i]; t += w[i]*((*f)(B+Ax,D,data)+(*f)(B-Ax,D,data)); } s += w[0]*t; for (i=1;i<m;i++) { Ax = A*x[i]; for (j=1;j<m;j++) { Cy = C*x[j]; s += w[i]*w[j]*( (*f)(B+Ax,D+Cy,data)+(*f)(Ax+B,D-Cy,data)+(*f)(B-Ax,D+Cy,data)+(*f)(B-Ax,D-Cy,data)); } }
226
}else{ /* n - even */ s = 0.0; for (i=0;i<m;i++) { Ax = A*x[i]; for (j=0;j<m;j++) { Cy = C*x[j]; s += w[i]*w[j]*( (*f)(B+Ax,D+Cy,data)+(*f)(Ax+B,D-Cy,data)+(*f)(B-Ax,D+Cy,data)+(*f)(B-Ax,D-Cy,data)); } } } if (dtbl) { free(x); free(w); } return C*A*s; } /* Computing of abscissas and weights for Gauss-Legendre quadrature for any(reasonable) order n [in] n - order of quadrature [in] eps - required precision (must be eps>=macheps(double), usually eps = 1e-10 is ok) [out]x - abscisass, size = (n+1)>>1 [out]w - weights, size = (n+1)>>1 */ /* Look up table for fast calculation of Legendre polynomial for n<1024 */ /* ltbl[k] = 1.0 - 1.0/(double)k; */ static double ltbl[1024] = {0.00000000000000000000,0.00000000000000000000,0.50000000000000000000,0.66666666666666674000,0.75000000000000000000,0.80000000000000004000,0.83333333333333337000,0.85714285714285721000,0.87500000000000000000,0.88888888888888884000,0.90000000000000002000,0.90909090909090906000,0.91666666666666663000,0.92307692307692313000,0.92857142857142860000,0.93333333333333335000,0.937500000000000000
227
00,0.94117647058823528000,0.94444444444444442000,0.94736842105263164000,0.94999999999999996000,0.95238095238095233000,0.95454545454545459000,0.95652173913043481000,0.95833333333333337000,0.95999999999999996000,0.96153846153846156000,0.96296296296296302000,0.96428571428571430000,0.96551724137931039000,0.96666666666666667000,0.96774193548387100000,0.96875000000000000000,0.96969696969696972000,0.97058823529411764000,0.97142857142857142000,0.97222222222222221000,0.97297297297297303000,0.97368421052631582000,0.97435897435897434000,0.97499999999999998000,0.97560975609756095000,0.97619047619047616000,0.97674418604651159000,0.97727272727272729000,0.97777777777777775000,0.97826086956521741000,0.97872340425531912000,0.97916666666666663000,0.97959183673469385000,0.97999999999999998000,0.98039215686274506000,0.98076923076923073000,0.98113207547169812000,0.98148148148148151000,0.98181818181818181000,0.98214285714285710000,0.98245614035087714000,0.98275862068965514000,0.98305084745762716000,0.98333333333333328000,0.98360655737704916000,0.98387096774193550000,0.98412698412698418000,0.98437500000000000000,0.98461538461538467000,0.98484848484848486000,0.98507462686567160000,0.98529411764705888000,0.98550724637681164000,0.98571428571428577000,0.98591549295774650000,0.98611111111111116000,0.98630136986301364000,0.98648648648648651000,0.98666666666666669000,0.98684210526315785000,0.98701298701298701000,0.98717948717948723000,0.98734177215189878000,0.98750000000000004000,0.98765432098765427000,0.98780487804878048000,0.98795180722891562000,0.98809523809523814000,0.98823529411764710000,0.98837209302325579000,0.98850574712643680000,0.98863636363636365000,0.98876404494382020000,0.98888888888888893000,0.98901098901098905000,0.98913043478260865000,0.98924731182795700000,0.98936170212765961000,0.98947368421052628000,0.98958333333333337000,0.98969072164948457000,0.98979591836734693000,0.98989898989898994000,0.98999999999999999000,0.99009900990099009000,0.99019607843137258000,0.99029126213592233000,0.99038461538461542000,0.99047619047619051000,0.99056603773584906000,0.99065420560747663000,0.99074074074074070000,0.99082568807339455000,0.99090909090909096000,0.99099099099099097000,0.99107142857142860000,0.99115044247787609000,0.99122807017543857000,0.99130434782608701000,0.99137931034482762000,0.99145299145299148000,0.99152542372881358000,0.99159663865546221000,0.99166666666666670000,0.99173553719008267000,0.99180327868852458000,0.99186991869918695000,0.99193548387096775000,0.99199999999999999000,0.99206349206349209000,0.99212598425196852000,0.99218750000000000000,0.99224806201550386000,0.99230769230769234000,0.99236641221374045000,0.99242424242424243000,0.99248120300751874000,0.99253731343283580000,0.99259259259259258000,0.99264705882352944000,0.99270072992700731000,0.99275
228
362318840576000,0.99280575539568350000,0.99285714285714288000,0.99290780141843971000,0.99295774647887325000,0.99300699300699302000,0.99305555555555558000,0.99310344827586206000,0.99315068493150682000,0.99319727891156462000,0.99324324324324320000,0.99328859060402686000,0.99333333333333329000,0.99337748344370858000,0.99342105263157898000,0.99346405228758172000,0.99350649350649356000,0.99354838709677418000,0.99358974358974361000,0.99363057324840764000,0.99367088607594933000,0.99371069182389937000,0.99375000000000002000,0.99378881987577639000,0.99382716049382713000,0.99386503067484666000,0.99390243902439024000,0.99393939393939390000,0.99397590361445787000,0.99401197604790414000,0.99404761904761907000,0.99408284023668636000,0.99411764705882355000,0.99415204678362579000,0.99418604651162790000,0.99421965317919070000,0.99425287356321834000,0.99428571428571433000,0.99431818181818177000,0.99435028248587576000,0.99438202247191010000,0.99441340782122900000,0.99444444444444446000,0.99447513812154698000,0.99450549450549453000,0.99453551912568305000,0.99456521739130432000,0.99459459459459465000,0.99462365591397850000,0.99465240641711228000,0.99468085106382975000,0.99470899470899465000,0.99473684210526314000,0.99476439790575921000,0.99479166666666663000,0.99481865284974091000,0.99484536082474229000,0.99487179487179489000,0.99489795918367352000,0.99492385786802029000,0.99494949494949492000,0.99497487437185927000,0.99500000000000000000,0.99502487562189057000,0.99504950495049505000,0.99507389162561577000,0.99509803921568629000,0.99512195121951219000,0.99514563106796117000,0.99516908212560384000,0.99519230769230771000,0.99521531100478466000,0.99523809523809526000,0.99526066350710896000,0.99528301886792447000,0.99530516431924887000,0.99532710280373837000,0.99534883720930234000,0.99537037037037035000,0.99539170506912444000,0.99541284403669728000,0.99543378995433796000,0.99545454545454548000,0.99547511312217196000,0.99549549549549554000,0.99551569506726456000,0.99553571428571430000,0.99555555555555553000,0.99557522123893805000,0.99559471365638763000,0.99561403508771928000,0.99563318777292575000,0.99565217391304350000,0.99567099567099571000,0.99568965517241381000,0.99570815450643779000,0.99572649572649574000,0.99574468085106382000,0.99576271186440679000,0.99578059071729963000,0.99579831932773111000,0.99581589958159000000,0.99583333333333335000,0.99585062240663902000,0.99586776859504134000,0.99588477366255146000,0.99590163934426235000,0.99591836734693873000,0.99593495934959353000,0.99595141700404854000,0.99596774193548387000,0.99598393574297184000,0.99600000000000000000,0.99601593625498008000,0.99603174603174605000,0.99604743083003955000,0.99606299212598426000,0.99607843137254903000,0.99609375000000000000,0.99610894941634243000,0.99612403100775193000,0.99613899613899
229
615000,0.99615384615384617000,0.99616858237547889000,0.99618320610687028000,0.99619771863117867000,0.99621212121212122000,0.99622641509433962000,0.99624060150375937000,0.99625468164794007000,0.99626865671641796000,0.99628252788104088000,0.99629629629629635000,0.99630996309963105000,0.99632352941176472000,0.99633699633699635000,0.99635036496350360000,0.99636363636363634000,0.99637681159420288000,0.99638989169675085000,0.99640287769784175000,0.99641577060931896000,0.99642857142857144000,0.99644128113879005000,0.99645390070921991000,0.99646643109540634000,0.99647887323943662000,0.99649122807017543000,0.99650349650349646000,0.99651567944250874000,0.99652777777777779000,0.99653979238754320000,0.99655172413793103000,0.99656357388316152000,0.99657534246575341000,0.99658703071672350000,0.99659863945578231000,0.99661016949152548000,0.99662162162162160000,0.99663299663299665000,0.99664429530201337000,0.99665551839464883000,0.99666666666666670000,0.99667774086378735000,0.99668874172185429000,0.99669966996699666000,0.99671052631578949000,0.99672131147540988000,0.99673202614379086000,0.99674267100977199000,0.99675324675324672000,0.99676375404530748000,0.99677419354838714000,0.99678456591639875000,0.99679487179487181000,0.99680511182108622000,0.99681528662420382000,0.99682539682539684000,0.99683544303797467000,0.99684542586750791000,0.99685534591194969000,0.99686520376175547000,0.99687499999999996000,0.99688473520249221000,0.99689440993788825000,0.99690402476780182000,0.99691358024691357000,0.99692307692307691000,0.99693251533742333000,0.99694189602446481000,0.99695121951219512000,0.99696048632218848000,0.99696969696969695000,0.99697885196374625000,0.99698795180722888000,0.99699699699699695000,0.99700598802395213000,0.99701492537313430000,0.99702380952380953000,0.99703264094955490000,0.99704142011834318000,0.99705014749262533000,0.99705882352941178000,0.99706744868035191000,0.99707602339181289000,0.99708454810495628000,0.99709302325581395000,0.99710144927536237000,0.99710982658959535000,0.99711815561959649000,0.99712643678160917000,0.99713467048710602000,0.99714285714285711000,0.99715099715099720000,0.99715909090909094000,0.99716713881019825000,0.99717514124293782000,0.99718309859154930000,0.99719101123595510000,0.99719887955182074000,0.99720670391061450000,0.99721448467966578000,0.99722222222222223000,0.99722991689750695000,0.99723756906077343000,0.99724517906336085000,0.99725274725274726000,0.99726027397260275000,0.99726775956284153000,0.99727520435967298000,0.99728260869565222000,0.99728997289972898000,0.99729729729729732000,0.99730458221024254000,0.99731182795698925000,0.99731903485254692000,0.99732620320855614000,0.99733333333333329000,0.99734042553191493000,0.99734748010610075000,0.99735449735449733000,0.99736147757255933000,0.99736842105263157000,0.9
230
9737532808398954000,0.99738219895287961000,0.99738903394255873000,0.99739583333333337000,0.99740259740259740000,0.99740932642487046000,0.99741602067183466000,0.99742268041237114000,0.99742930591259638000,0.99743589743589745000,0.99744245524296671000,0.99744897959183676000,0.99745547073791352000,0.99746192893401020000,0.99746835443037973000,0.99747474747474751000,0.99748110831234260000,0.99748743718592969000,0.99749373433583965000,0.99750000000000005000,0.99750623441396513000,0.99751243781094523000,0.99751861042183620000,0.99752475247524752000,0.99753086419753090000,0.99753694581280783000,0.99754299754299758000,0.99754901960784315000,0.99755501222493892000,0.99756097560975610000,0.99756690997566910000,0.99757281553398058000,0.99757869249394671000,0.99758454106280192000,0.99759036144578317000,0.99759615384615385000,0.99760191846522783000,0.99760765550239239000,0.99761336515513122000,0.99761904761904763000,0.99762470308788598000,0.99763033175355453000,0.99763593380614657000,0.99764150943396224000,0.99764705882352944000,0.99765258215962438000,0.99765807962529274000,0.99766355140186913000,0.99766899766899764000,0.99767441860465111000,0.99767981438515085000,0.99768518518518523000,0.99769053117782913000,0.99769585253456217000,0.99770114942528731000,0.99770642201834858000,0.99771167048054921000,0.99771689497716898000,0.99772209567198178000,0.99772727272727268000,0.99773242630385484000,0.99773755656108598000,0.99774266365688491000,0.99774774774774777000,0.99775280898876406000,0.99775784753363228000,0.99776286353467558000,0.99776785714285710000,0.99777282850779514000,0.99777777777777776000,0.99778270509977829000,0.99778761061946908000,0.99779249448123619000,0.99779735682819382000,0.99780219780219781000,0.99780701754385970000,0.99781181619256021000,0.99781659388646293000,0.99782135076252720000,0.99782608695652175000,0.99783080260303691000,0.99783549783549785000,0.99784017278617709000,0.99784482758620685000,0.99784946236559136000,0.99785407725321884000,0.99785867237687365000,0.99786324786324787000,0.99786780383795304000,0.99787234042553197000,0.99787685774946921000,0.99788135593220340000,0.99788583509513740000,0.99789029535864981000,0.99789473684210528000,0.99789915966386555000,0.99790356394129975000,0.99790794979079500000,0.99791231732776620000,0.99791666666666667000,0.99792099792099798000,0.99792531120331951000,0.99792960662525876000,0.99793388429752061000,0.99793814432989691000,0.99794238683127567000,0.99794661190965095000,0.99795081967213117000,0.99795501022494892000,0.99795918367346936000,0.99796334012219956000,0.99796747967479671000,0.99797160243407712000,0.99797570850202433000,0.99797979797979797000,0.99798387096774188000,0.99798792756539234000,0.99799196787148592000,0.99799599198396793000,0.99800000000000000000,0.99800399201596801000,0.9980079681
231
2749004000,0.99801192842942343000,0.99801587301587302000,0.99801980198019802000,0.99802371541501977000,0.99802761341222879000,0.99803149606299213000,0.99803536345776034000,0.99803921568627452000,0.99804305283757344000,0.99804687500000000000,0.99805068226120852000,0.99805447470817121000,0.99805825242718449000,0.99806201550387597000,0.99806576402321079000,0.99806949806949807000,0.99807321772639690000,0.99807692307692308000,0.99808061420345484000,0.99808429118773945000,0.99808795411089868000,0.99809160305343514000,0.99809523809523815000,0.99809885931558939000,0.99810246679316883000,0.99810606060606055000,0.99810964083175802000,0.99811320754716981000,0.99811676082862522000,0.99812030075187974000,0.99812382739212002000,0.99812734082397003000,0.99813084112149530000,0.99813432835820892000,0.99813780260707630000,0.99814126394052050000,0.99814471243042668000,0.99814814814814812000,0.99815157116451014000,0.99815498154981552000,0.99815837937384899000,0.99816176470588236000,0.99816513761467895000,0.99816849816849818000,0.99817184643510060000,0.99817518248175185000,0.99817850637522765000,0.99818181818181817000,0.99818511796733211000,0.99818840579710144000,0.99819168173598549000,0.99819494584837543000,0.99819819819819822000,0.99820143884892087000,0.99820466786355477000,0.99820788530465954000,0.99821109123434704000,0.99821428571428572000,0.99821746880570406000,0.99822064056939497000,0.99822380106571940000,0.99822695035460995000,0.99823008849557526000,0.99823321554770317000,0.99823633156966496000,0.99823943661971826000,0.99824253075571179000,0.99824561403508771000,0.99824868651488619000,0.99825174825174823000,0.99825479930191974000,0.99825783972125437000,0.99826086956521742000,0.99826388888888884000,0.99826689774696709000,0.99826989619377160000,0.99827288428324701000,0.99827586206896557000,0.99827882960413084000,0.99828178694158076000,0.99828473413379071000,0.99828767123287676000,0.99829059829059830000,0.99829351535836175000,0.99829642248722317000,0.99829931972789121000,0.99830220713073003000,0.99830508474576274000,0.99830795262267347000,0.99831081081081086000,0.99831365935919059000,0.99831649831649827000,0.99831932773109244000,0.99832214765100669000,0.99832495812395305000,0.99832775919732442000,0.99833055091819700000,0.99833333333333329000,0.99833610648918469000,0.99833887043189373000,0.99834162520729686000,0.99834437086092720000,0.99834710743801658000,0.99834983498349839000,0.99835255354200991000,0.99835526315789469000,0.99835796387520526000,0.99836065573770494000,0.99836333878887074000,0.99836601307189543000,0.99836867862969003000,0.99837133550488599000,0.99837398373983743000,0.99837662337662336000,0.99837925445705022000,0.99838187702265369000,0.99838449111470118000,0.99838709677419357000,0.99838969404186795000,0.99839228295819937000,0.9983948635634029000
232
0,0.99839743589743590000,0.99839999999999995000,0.99840255591054317000,0.99840510366826152000,0.99840764331210186000,0.99841017488076311000,0.99841269841269842000,0.99841521394611732000,0.99841772151898733000,0.99842022116903628000,0.99842271293375395000,0.99842519685039366000,0.99842767295597479000,0.99843014128728413000,0.99843260188087779000,0.99843505477308292000,0.99843749999999998000,0.99843993759750393000,0.99844236760124616000,0.99844479004665632000,0.99844720496894412000,0.99844961240310082000,0.99845201238390091000,0.99845440494590421000,0.99845679012345678000,0.99845916795069334000,0.99846153846153851000,0.99846390168970811000,0.99846625766871167000,0.99846860643185298000,0.99847094801223246000,0.99847328244274813000,0.99847560975609762000,0.99847792998477924000,0.99848024316109418000,0.99848254931714719000,0.99848484848484853000,0.99848714069591527000,0.99848942598187307000,0.99849170437405732000,0.99849397590361444000,0.99849624060150377000,0.99849849849849848000,0.99850074962518742000,0.99850299401197606000,0.99850523168908822000,0.99850746268656720000,0.99850968703427723000,0.99851190476190477000,0.99851411589895989000,0.99851632047477745000,0.99851851851851847000,0.99852071005917165000,0.99852289512555392000,0.99852507374631272000,0.99852724594992637000,0.99852941176470589000,0.99853157121879588000,0.99853372434017595000,0.99853587115666176000,0.99853801169590639000,0.99854014598540142000,0.99854227405247808000,0.99854439592430855000,0.99854651162790697000,0.99854862119013066000,0.99855072463768113000,0.99855282199710560000,0.99855491329479773000,0.99855699855699853000,0.99855907780979825000,0.99856115107913668000,0.99856321839080464000,0.99856527977044474000,0.99856733524355301000,0.99856938483547930000,0.99857142857142855000,0.99857346647646217000,0.99857549857549854000,0.99857752489331442000,0.99857954545454541000,0.99858156028368794000,0.99858356940509918000,0.99858557284299854000,0.99858757062146897000,0.99858956276445698000,0.99859154929577465000,0.99859353023909991000,0.99859550561797750000,0.99859747545582045000,0.99859943977591037000,0.99860139860139863000,0.99860335195530725000,0.99860529986053004000,0.99860724233983289000,0.99860917941585536000,0.99861111111111112000,0.99861303744798890000,0.99861495844875348000,0.99861687413554634000,0.99861878453038677000,0.99862068965517237000,0.99862258953168048000,0.99862448418156813000,0.99862637362637363000,0.99862825788751719000,0.99863013698630132000,0.99863201094391241000,0.99863387978142082000,0.99863574351978168000,0.99863760217983655000,0.99863945578231295000,0.99864130434782605000,0.99864314789687925000,0.99864498644986455000,0.99864682002706362000,0.99864864864864866000,0.99865047233468285000,0.99865229110512133000,0.99865410497981155000,0.99865591397849462000,0.998657
233
71812080539000,0.99865951742627346000,0.99866131191432395000,0.99866310160427807000,0.99866488651535379000,0.99866666666666670000,0.99866844207723038000,0.99867021276595747000,0.99867197875166003000,0.99867374005305043000,0.99867549668874167000,0.99867724867724872000,0.99867899603698806000,0.99868073878627972000,0.99868247694334655000,0.99868421052631584000,0.99868593955321949000,0.99868766404199472000,0.99868938401048490000,0.99869109947643975000,0.99869281045751634000,0.99869451697127942000,0.99869621903520212000,0.99869791666666663000,0.99869960988296491000,0.99870129870129876000,0.99870298313878081000,0.99870466321243523000,0.99870633893919791000,0.99870801033591727000,0.99870967741935479000,0.99871134020618557000,0.99871299871299868000,0.99871465295629824000,0.99871630295250324000,0.99871794871794872000,0.99871959026888601000,0.99872122762148341000,0.99872286079182626000,0.99872448979591832000,0.99872611464968153000,0.99872773536895676000,0.99872935196950441000,0.99873096446700504000,0.99873257287705952000,0.99873417721518987000,0.99873577749683939000,0.99873737373737370000,0.99873896595208067000,0.99874055415617125000,0.99874213836477987000,0.99874371859296485000,0.99874529485570895000,0.99874686716791983000,0.99874843554443049000,0.99875000000000003000,0.99875156054931336000,0.99875311720698257000,0.99875466998754669000,0.99875621890547261000,0.99875776397515525000,0.99875930521091816000,0.99876084262701359000,0.99876237623762376000,0.99876390605686027000,0.99876543209876545000,0.99876695437731200000,0.99876847290640391000,0.99876998769987702000,0.99877149877149873000,0.99877300613496933000,0.99877450980392157000,0.99877600979192172000,0.99877750611246940000,0.99877899877899878000,0.99878048780487805000,0.99878197320341044000,0.99878345498783450000,0.99878493317132444000,0.99878640776699024000,0.99878787878787878000,0.99878934624697335000,0.99879081015719473000,0.99879227053140096000,0.99879372738238847000,0.99879518072289153000,0.99879663056558365000,0.99879807692307687000,0.99879951980792314000,0.99880095923261392000,0.99880239520958081000,0.99880382775119614000,0.99880525686977295000,0.99880668257756566000,0.99880810488676997000,0.99880952380952381000,0.99881093935790721000,0.99881235154394299000,0.99881376037959668000,0.99881516587677721000,0.99881656804733732000,0.99881796690307334000,0.99881936245572611000,0.99882075471698117000,0.99882214369846878000,0.99882352941176467000,0.99882491186839018000,0.99882629107981225000,0.99882766705744430000,0.99882903981264637000,0.99883040935672518000,0.99883177570093462000,0.99883313885647607000,0.99883449883449882000,0.99883585564610011000,0.99883720930232556000,0.99883855981416958000,0.99883990719257543000,0.99884125144843572000,0.99884259259259256000,0.99884393063583810000,0.998845265588914
234
51000,0.99884659746251436000,0.99884792626728114000,0.99884925201380903000,0.99885057471264371000,0.99885189437428246000,0.99885321100917435000,0.99885452462772051000,0.99885583524027455000,0.99885714285714289000,0.99885844748858443000,0.99885974914481190000,0.99886104783599083000,0.99886234357224113000,0.99886363636363640000,0.99886492622020429000,0.99886621315192747000,0.99886749716874290000,0.99886877828054299000,0.99887005649717520000,0.99887133182844245000,0.99887260428410374000,0.99887387387387383000,0.99887514060742411000,0.99887640449438198000,0.99887766554433222000,0.99887892376681620000,0.99888017917133254000,0.99888143176733779000,0.99888268156424576000,0.99888392857142860000,0.99888517279821631000,0.99888641425389757000,0.99888765294771964000,0.99888888888888894000,0.99889012208657046000,0.99889135254988914000,0.99889258028792915000,0.99889380530973448000,0.99889502762430937000,0.99889624724061810000,0.99889746416758540000,0.99889867841409696000,0.99889988998899892000,0.99890109890109891000,0.99890230515916578000,0.99890350877192979000,0.99890470974808321000,0.99890590809628010000,0.99890710382513659000,0.99890829694323147000,0.99890948745910579000,0.99891067538126366000,0.99891186071817195000,0.99891304347826082000,0.99891422366992400000,0.99891540130151846000,0.99891657638136511000,0.99891774891774887000,0.99891891891891893000,0.99892008639308860000,0.99892125134843579000,0.99892241379310343000,0.99892357373519913000,0.99892473118279568000,0.99892588614393130000,0.99892703862660948000,0.99892818863879962000,0.99892933618843682000,0.99893048128342243000,0.99893162393162394000,0.99893276414087517000,0.99893390191897657000,0.99893503727369537000,0.99893617021276593000,0.99893730074388953000,0.99893842887473461000,0.99893955461293749000,0.99894067796610164000,0.99894179894179891000,0.99894291754756870000,0.99894403379091867000,0.99894514767932485000,0.99894625922023184000,0.99894736842105258000,0.99894847528916930000,0.99894957983193278000,0.99895068205666315000,0.99895178197064993000,0.99895287958115186000,0.99895397489539750000,0.99895506792058519000,0.99895615866388310000,0.99895724713242962000,0.99895833333333328000,0.99895941727367321000,0.99896049896049899000,0.99896157840083077000,0.99896265560165975000,0.99896373056994814000,0.99896480331262938000,0.99896587383660806000,0.99896694214876036000,0.99896800825593390000,0.99896907216494846000,0.99897013388259526000,0.99897119341563789000,0.99897225077081198000,0.99897330595482547000,0.99897435897435893000,0.99897540983606559000,0.99897645854657113000,0.99897750511247441000,0.99897854954034726000,0.99897959183673468000,0.99898063200815490000,0.99898167006109984000,0.99898270600203454000,0.99898373983739841000,0.99898477157360410000,0.99898580121703850000,0.99898682877406286000,0.99
235
898785425101211000,0.99898887765419619000,0.99898989898989898000,0.99899091826437947000,0.99899193548387100000,0.99899295065458205000,0.99899396378269623000,0.99899497487437183000,0.99899598393574296000,0.99899699097291872000,0.99899799599198402000,0.99899899899899902000,0.99900000000000000000,0.99900099900099903000,0.99900199600798401000,0.99900299102691925000,0.99900398406374502000,0.99900497512437814000,0.99900596421471177000,0.99900695134061568000,0.99900793650793651000,0.99900891972249750000,0.99900990099009901000,0.99901088031651830000,0.99901185770750989000,0.99901283316880551000,0.99901380670611439000,0.99901477832512320000,0.99901574803149606000,0.99901671583087515000,0.99901768172888017000,0.99901864573110888000,0.99901960784313726000,0.99902056807051909000,0.99902152641878672000,0.99902248289345064000}; void gauss_legendre_tbl(int n, double* x, double* w, double eps) { double x0, x1, dx; /* Abscissas */ double w0, w1, dw; /* Weights */ double P0, P_1, P_2; /* Legendre polynomial values */ double dpdx; /* Legendre polynomial derivative */ int i, j, k, m; /* Iterators */ double t0, t1, t2, t3; m = (n+1)>>1; t0 = (1.0-(1.0-1.0/(double)n)/(8.0*(double)n*(double)n)); t1 = 1.0/(4.0*(double)n+2.0); for (i = 1; i <= m; i++) { /* Find i-th root of Legendre polynomial */ /* Initial guess */ x0 = cos(PI*(double)((i<<2)-1)*t1)*t0; /* Newton iterations, at least one */ j = 0; dx = dw = DBL_MAX; do { /* Compute Legendre polynomial value at x0 */ P_1 = 1.0; P0 = x0;
236
#if 0 /* Simple, not optimized version */ for (k = 2; k <= n; k++) { P_2 = P_1; P_1 = P0; t2 = x0*P_1; t3 = (double)(k-1)/(double)k; P0 = t2 + t3*(t2 - P_2); } #else /* Optimized version using lookup tables */ if (n<1024) { /* Use fast algorithm for small n*/ for (k = 2; k <= n; k++) { P_2 = P_1; P_1 = P0; t2 = x0*P_1; P0 = t2 + ltbl[k]*(t2 - P_2); } }else{ /* Use general algorithm for other n */ for (k = 2; k < 1024; k++) { P_2 = P_1; P_1 = P0; t2 = x0*P_1; P0 = t2 + ltbl[k]*(t2 - P_2); } for (k = 1024; k <= n; k++) { P_2 = P_1; P_1 = P0; t2 = x0*P_1;
237
t3 = (double)(k-1)/(double)k; P0 = t2 + t3*(t2 - P_2); } } #endif /* Compute Legendre polynomial derivative at x0 */ dpdx = ((x0*P0-P_1)*(double)n)/(x0*x0-1.0); /* Newton step */ x1 = x0-P0/dpdx; /* Weight computing */ w1 = 2.0/((1.0-x1*x1)*dpdx*dpdx); /* Compute weight w0 on first iteration, needed for dw */ if (j==0) w0 = 2.0/((1.0-x0*x0)*dpdx*dpdx); dx = x0-x1; dw = w0-w1; x0 = x1; w0 = w1; j++; } while((FABS(dx)>eps || FABS(dw)>eps) && j<100); x[(m-1)-(i-1)] = x1; w[(m-1)-(i-1)] = w1; } return; } double fk1(double x, double origin, double radius, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE) { double realde=d[position_Layer]; double realzp=position_x; double realzm=realde-realzp;
238
complex <double> kx,ke,kp,km,kze,kzp,kzm; complex <double> de,zp,zm; complex <double> c2j(0,2); complex <double> cj(0,1); complex <double> c1(1,0); complex <double> cx(x,0); // x is the coutour integal angle from pi to 2pi complex <double> aTM,aTMp,aTMm,aTE,aTEp,aTEm; double K[10]={0}; de=complex <double> (realde,0); zp=complex <double> (realzp,0); zm=complex <double> (realzm,0); complex <double> kk (2*PI/lambda,0); complex <double> korigin (origin,0); complex <double> kradius (radius,0); ke=kk*n[position_Layer]; kp=kk*n[0]; km=kk*n[NLayer+1]; kx=korigin+kradius*exp(cj*cx);// kx is the complex value of the point kze=sqrt(ke*ke-kx*kx); kzp=sqrt(kp*kp-kx*kx); kzm=sqrt(km*km-kx*kx); Calculate_Matrix(lambda,kx,position_Layer, NLayer,d, n,TM,TE); aTMp=TM[1]*exp(c2j*kze*zp); aTMm=TM[3]*exp(c2j*kze*zm); aTM=aTMp*aTMm; aTEp=TE[1]*exp(c2j*kze*zp); aTEm=TE[3]*exp(c2j*kze*zm); aTE=aTEp*aTEm; K[1]=0.75*real(kx*kx/(ke*ke*ke*kze)*(c1+aTMp)*(c1+aTMm)/(c1-aTM)*kradius*exp(cj*cx)*cj*(c1+c1)*kx); // addition 2kdk=2k*kr*exp(i*theta)*i d theta K[2]=0; K[3]=0.375*real(kze/(ke*ke*ke)*(c1-aTMp)*(c1-aTMm)/(c1-aTM)*kradius*exp(cj*cx)*cj*(c1+c1)*kx);
239
K[4]=0.375*real(c1/(ke*kze)*(c1+aTEp)*(c1+aTEm)/(c1-aTE)*kradius*exp(cj*cx)*cj*(c1+c1)*kx); K[5]=K[1]/3.0+2.0*K[3]/3.0; K[6]=K[2]/3.0+2.0*K[4]/3.0; K[7]=K[5]+K[6]; return K[7]; } double MyGauss1(int order, double kbegin, double kend, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE) { double* x = NULL; double* w = NULL; double A,B,Ax,s; int i, dtbl, m; double origin=0.5*(kbegin+kend); double radius=0.5*(kend-kbegin); double a=PI; double b=2*PI; m = (order+1)>>1; /* Load appropriate predefined table */ dtbl = 0; for (i = 0; i<GLAWSIZE;i++) { if(order==glaw[i].n) { x = glaw[i].x; w = glaw[i].w; break; } } /* Generate new if non-predefined table is required */ /* with precision of 1e-10 */ if(NULL==x) { dtbl = 1; x = (double*)malloc(m*sizeof(double));
240
w = (double*)malloc(m*sizeof(double)); gauss_legendre_tbl(order,x,w,1e-10); } A = 0.5*(b-a); B = 0.5*(b+a); if(order&1) /* n - odd */ { //s = w[0]*((*f)(B,data)); s = w[0]*fk1(B, origin, radius,lambda, position_Layer,position_x, NLayer,d, n, TM,TE); for (i=1;i<m;i++) { Ax = A*x[i]; //s += w[i]*((*f)(B+Ax,data)+(*f)(B-Ax,data)); s += w[i]*(fk1(B+Ax, origin, radius, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)+fk1(B-Ax,origin, radius, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)); } }else{ /* n - even */ s = 0.0; for (i=0;i<m;i++) { Ax = A*x[i]; //s += w[i]*((*f)(B+Ax,data)+(*f)(B-Ax,data)); s += w[i]*(fk1(B+Ax, origin, radius, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)+fk1(B-Ax,origin, radius, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)); } } if (dtbl) { free(x); free(w); } return A*s; }
241
double fk2(double x, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE) { double realde=d[position_Layer]; double realzp=position_x; double realzm=realde-realzp; complex <double> kx,ke,kp,km,kze,kzp,kzm; complex <double> de,zp,zm; complex <double> c2j(0,2); complex <double> cj(0,1); complex <double> c1(1,0); complex <double> aTM,aTMp,aTMm,aTE,aTEp,aTEm; double K[10]={0}; de=complex <double> (realde,0); zp=complex <double> (realzp,0); zm=complex <double> (realzm,0); complex <double> kk (2*PI/lambda,0); ke=kk*n[position_Layer]; kp=kk*n[0]; km=kk*n[NLayer+1]; kx=complex <double> (x,0); // kx is the complex value of the point kze=sqrt(ke*ke-kx*kx); kzp=sqrt(kp*kp-kx*kx); kzm=sqrt(km*km-kx*kx); Calculate_Matrix(lambda,kx,position_Layer, NLayer,d, n,TM,TE); aTMp=TM[1]*exp(c2j*kze*zp); aTMm=TM[3]*exp(c2j*kze*zm); aTM=aTMp*aTMm; aTEp=TE[1]*exp(c2j*kze*zp);
242
aTEm=TE[3]*exp(c2j*kze*zm); aTE=aTEp*aTEm; K[1]=0.75*real(kx*kx/(ke*ke*ke*kze)*(c1+aTMp)*(c1+aTMm)/(c1-aTM)*(c1+c1)*kx); //additional 2k*dk // and I put the additional abs() function to make sure it is positive, which is not the same as the original paper // maybe the complex calculation in the paper, it not the defaul calculation in the C++ // for example, sqrt(-1) can be +1j or -1j, but c++ alwasy give +1j, which can be different when consider the real part or imaginary part // and the problem mostly come from dipole lies in a material have non-zero k, or dipole is close to a non-zero k, so i suggest put the organic material k==0 all the times K[2]=0; K[3]=0.375*real(kze/(ke*ke*ke)*(c1-aTMp)*(c1-aTMm)/(c1-aTM)*(c1+c1)*kx); K[4]=0.375*real(c1/(ke*kze)*(c1+aTEp)*(c1+aTEm)/(c1-aTE)*(c1+c1)*kx); K[5]=K[1]/3.0+2.0*K[3]/3.0; K[6]=K[2]/3.0+2.0*K[4]/3.0; K[7]=K[5]+K[6]; return K[7]; } double MyGauss2(int order, double kbegin, double kend, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE) { double* x = NULL; double* w = NULL; double A,B,Ax,s; int i, dtbl, m; m = (order+1)>>1; /* Load appropriate predefined table */ dtbl = 0; for (i = 0; i<GLAWSIZE;i++) {
243
if(order==glaw[i].n) { x = glaw[i].x; w = glaw[i].w; break; } } /* Generate new if non-predefined table is required */ /* with precision of 1e-10 */ if(NULL==x) { dtbl = 1; x = (double*)malloc(m*sizeof(double)); w = (double*)malloc(m*sizeof(double)); gauss_legendre_tbl(order,x,w,1e-10); } A = 0.5*(kend-kbegin); B = 0.5*(kend+kbegin); if(order&1) /* n - odd */ { //s = w[0]*((*f)(B,data)); s = w[0]*fk2(B,lambda,position_Layer,position_x, NLayer,d, n, TM,TE); for (i=1;i<m;i++) { Ax = A*x[i]; //s += w[i]*((*f)(B+Ax,data)+(*f)(B-Ax,data)); s += w[i]*( fk2(B+Ax, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)+fk2(B-Ax, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)); } }else{ /* n - even */ s = 0.0; for (i=0;i<m;i++) { Ax = A*x[i]; //s += w[i]*((*f)(B+Ax,data)+(*f)(B-Ax,data));
244
s += w[i]*( fk2(B+Ax, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)+fk2(B-Ax, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)); } } if (dtbl) { free(x); free(w); } return A*s; } double fk3(double x, double origin, double radius, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE) { double realde=d[position_Layer]; double realzp=position_x; double realzm=realde-realzp; complex <double> kx,ke,kp,km,kze,kzp,kzm; complex <double> de,zp,zm; complex <double> c2j(0,2); complex <double> cj(0,1); complex <double> c1(1,0); complex <double> cx(x,0); // x is the coutour integal angle from pi to 2pi complex <double> aTM,aTMp,aTMm,aTE,aTEp,aTEm; double KPT[10]={0}; de=complex <double> (realde,0); zp=complex <double> (realzp,0); zm=complex <double> (realzm,0); complex <double> kk (2*PI/lambda,0); complex <double> korigin (origin,0); complex <double> kradius (radius,0);
245
ke=kk*n[position_Layer]; kp=kk*n[0]; km=kk*n[NLayer+1]; kx=korigin+kradius*exp(cj*cx);// kx is the complex value of the point kze=sqrt(ke*ke-kx*kx); kzp=sqrt(kp*kp-kx*kx); kzm=sqrt(km*km-kx*kx); Calculate_Matrix(lambda,kx,position_Layer, NLayer,d, n,TM,TE); aTMp=TM[1]*exp(c2j*kze*zp); aTMm=TM[3]*exp(c2j*kze*zm); aTM=aTMp*aTMm; aTEp=TE[1]*exp(c2j*kze*zp); aTEm=TE[3]*exp(c2j*kze*zm); aTE=aTEp*aTEm; // kpt seems can not calculate with the "Complex" gauss quadrature , maybe because it is not complex analytical KPT[1]=0.75*real(kx*kx/(ke*ke*ke*kze)*kradius*exp(cj*cx)*cj*(c1+c1)*kx*0.5*norm((c1+aTMm)/(c1-aTM))*norm(TM[2])*abs(kzp/kze)*norm(n[position_Layer]/n[0]));//additional 2k*dk KPT[2]=0; KPT[3]=0.375*real(kze/(ke*ke*ke)*kradius*exp(cj*cx)*cj*(c1+c1)*kx*0.5*norm((c1-aTMm)/(c1-aTM))*norm(TM[2])*abs(kzp/kze)*norm(n[position_Layer]/n[0])); KPT[4]=0.375*real(c1/(ke*kze)*kradius*exp(cj*cx)*cj*(c1+c1)*kx*0.5*norm((c1+aTEm)/(c1-aTE))*norm(TE[2])*abs(kzp/kze)); KPT[5]=KPT[1]/3.0+2.0*KPT[3]/3.0; KPT[6]=KPT[2]/3.0+2.0*KPT[4]/3.0; KPT[7]=KPT[5]+KPT[6]; return KPT[7]; }
246
double MyGauss3(int order, double kbegin, double kend, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE) { double* x = NULL; double* w = NULL; double A,B,Ax,s; int i, dtbl, m; double origin=0.5*(kbegin+kend); double radius=0.5*(kend-kbegin); double a=PI; double b=2*PI; m = (order+1)>>1; /* Load appropriate predefined table */ dtbl = 0; for (i = 0; i<GLAWSIZE;i++) { if(order==glaw[i].n) { x = glaw[i].x; w = glaw[i].w; break; } } /* Generate new if non-predefined table is required */ /* with precision of 1e-10 */ if(NULL==x) { dtbl = 1; x = (double*)malloc(m*sizeof(double)); w = (double*)malloc(m*sizeof(double)); gauss_legendre_tbl(order,x,w,1e-10); } A = 0.5*(b-a); B = 0.5*(b+a);
247
if(order&1) /* n - odd */ { //s = w[0]*((*f)(B,data)); s = w[0]*fk3(B, origin, radius,lambda, position_Layer,position_x, NLayer,d, n, TM,TE); for (i=1;i<m;i++) { Ax = A*x[i]; //s += w[i]*((*f)(B+Ax,data)+(*f)(B-Ax,data)); s += w[i]*(fk3(B+Ax, origin, radius, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)+fk3(B-Ax,origin, radius, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)); } }else{ /* n - even */ s = 0.0; for (i=0;i<m;i++) { Ax = A*x[i]; //s += w[i]*((*f)(B+Ax,data)+(*f)(B-Ax,data)); s += w[i]*(fk3(B+Ax, origin, radius, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)+fk3(B-Ax,origin, radius, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)); } } if (dtbl) { free(x); free(w); } return A*s; } double fk4(double x, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE) { double realde=d[position_Layer]; double realzp=position_x;
248
double realzm=realde-realzp; complex <double> kx,ke,kp,km,kze,kzp,kzm; complex <double> de,zp,zm; complex <double> c2j(0,2); complex <double> cj(0,1); complex <double> c1(1,0); complex <double> aTM,aTMp,aTMm,aTE,aTEp,aTEm; double KPT[10]={0}; de=complex <double> (realde,0); zp=complex <double> (realzp,0); zm=complex <double> (realzm,0); complex <double> kk (2*PI/lambda,0); ke=kk*n[position_Layer]; kp=kk*n[0]; km=kk*n[NLayer+1]; kx=complex <double> (x,0); // kx is the complex value of the point kze=sqrt(ke*ke-kx*kx); kzp=sqrt(kp*kp-kx*kx); kzm=sqrt(km*km-kx*kx); Calculate_Matrix(lambda,kx,position_Layer, NLayer,d, n,TM,TE); aTMp=TM[1]*exp(c2j*kze*zp); aTMm=TM[3]*exp(c2j*kze*zm); aTM=aTMp*aTMm; aTEp=TE[1]*exp(c2j*kze*zp); aTEm=TE[3]*exp(c2j*kze*zm); aTE=aTEp*aTEm; KPT[1]=0.75*real(kx*kx/(ke*ke*ke*kze)*(c1+c1)*kx)*0.5*norm((c1+aTMm)/(c1-aTM))*norm(TM[2])*abs(kzp/kze)*norm(n[position_Layer]/n[0]);//additional 2k*dk KPT[2]=0;
249
KPT[3]=0.375*real(kze/(ke*ke*ke)*(c1+c1)*kx)*0.5*norm((c1-aTMm)/(c1-aTM))*norm(TM[2])*abs(kzp/kze)*norm(n[position_Layer]/n[0]); KPT[4]=0.375*real(c1/(ke*kze)*(c1+c1)*kx)*0.5*norm((c1+aTEm)/(c1-aTE))*norm(TE[2])*abs(kzp/kze); KPT[5]=KPT[1]/3.0+2.0*KPT[3]/3.0; KPT[6]=KPT[2]/3.0+2.0*KPT[4]/3.0; KPT[7]=KPT[5]+KPT[6]; return KPT[7]; } double MyGauss4(int order, double kbegin, double kend, double lambda, int position_Layer,double position_x,int NLayer,double *d, complex <double> *n, complex <double> *TM,complex <double> *TE) { double* x = NULL; double* w = NULL; double A,B,Ax,s; int i, dtbl, m; m = (order+1)>>1; /* Load appropriate predefined table */ dtbl = 0; for (i = 0; i<GLAWSIZE;i++) { if(order==glaw[i].n) { x = glaw[i].x; w = glaw[i].w; break; } } /* Generate new if non-predefined table is required */ /* with precision of 1e-10 */ if(NULL==x) { dtbl = 1; x = (double*)malloc(m*sizeof(double));
250
w = (double*)malloc(m*sizeof(double)); gauss_legendre_tbl(order,x,w,1e-10); } A = 0.5*(kend-kbegin); B = 0.5*(kend+kbegin); if(order&1) /* n - odd */ { //s = w[0]*((*f)(B,data)); s = w[0]*fk4(B,lambda,position_Layer,position_x, NLayer,d, n, TM,TE); for (i=1;i<m;i++) { Ax = A*x[i]; //s += w[i]*((*f)(B+Ax,data)+(*f)(B-Ax,data)); s += w[i]*( fk4(B+Ax, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)+fk4(B-Ax, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)); } }else{ /* n - even */ s = 0.0; for (i=0;i<m;i++) { Ax = A*x[i]; //s += w[i]*((*f)(B+Ax,data)+(*f)(B-Ax,data)); s += w[i]*( fk4(B+Ax, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)+fk4(B-Ax, lambda, position_Layer,position_x, NLayer,d, n, TM,TE)); } } if (dtbl) { free(x); free(w); } return A*s; }
int main()
251
{ double pi = 3.14159265359;; int theta=0,deltatheta=0; double CIExyz[100][3]={0},CF[100][3]={0}, PL[100][50]={0}, F[100][50]={0},Etot[100][50]={0},Esubstrate[100][50]={0}, Effisub[100][50]={0}, factor[100][50]={0},wv[100]={0}; double Psubstrate[100][200]={0},Pair[100][200]={0}; double ModeAir[100][50]={0},ModeSubstrate[100][50]={0},ModeWaveGuide[100][50]={0},ModePlasmon[100][50]={0}; int i=0,j=0; double totalwv[10]={0}; double Eoutsubstrate[100]={0},Eoutair[100]={0}; double result[50]={0}; complex<double> n[100][50]; complex <double> TM[50],TE[50]; double realk0=0; double realkr=2*realk0; double realkmin=40*realkr; double final[100]={0}; //----------------------------------- OLED structure --------------------------- // maximum 50 emitters string PLname[50]; int position_Layer[50]={0}; double position_x[50]={0}; // maximum 50 layers string layername[50]; double d[50]={0}; string line; int NLayer=0; int NEmitter=0; // the relative non_radiative_rate, assuming radiative_rate=1
252
// the cavity modified factor = (1)/(non_rad_rate+F*rad_rate) double nonrad=0; ifstream myfile("input.txt"); if (myfile.is_open()) { getline(myfile,line); getline(myfile,line); myfile >> nonrad; getline(myfile,line); getline(myfile,line); getline(myfile,line); myfile >> NLayer; getline(myfile,line); getline(myfile,line); getline(myfile,line); myfile >> layername[0]; getline(myfile,line); getline(myfile,line); for( i=1;i<=NLayer;i++) { getline(myfile,line); myfile >> layername[i]; getline(myfile,line); myfile >> d[i]; getline(myfile,line); getline(myfile,line); } getline(myfile,line); myfile >> layername[NLayer+1]; getline(myfile,line); getline(myfile,line); getline(myfile,line); myfile >> NEmitter; getline(myfile,line); getline(myfile,line);
253
for( i=1;i<=NEmitter;i++) { getline(myfile,line); myfile >> PLname[i]; getline(myfile,line); myfile >> position_Layer[i]; getline(myfile,line); myfile >> position_x[i]; getline(myfile,line); getline(myfile,line); } cout << "finish reading input.txt..." << endl; } else { cout << "Unable to open input.txt" << endl; } Read(CIExyz,CF,n,wv,PL, PLname, NEmitter, layername, NLayer); cout << "finish reading PL and material..." << endl; //--------------------------------------------------------------------------- //writing R_T.txt, which include the transmission and reflection of the stack // calculate the light injection from the substrate into the OLED stack // the reflection/transmission at 0,30,60 degrees and over all angles ofstream outfile; complex <double> kx,kzbegin,kzend,kbegin,kend,k0; kx=complex<double> (0,0); double temp1,temp2,temp3,temp4; double total1,total2,total3,total4; outfile.open("R_T.txt"); outfile << "lambda(nm)(theta=0)" << " " << "R_TM" << " " << "T_TM" << " " << "R_TE" << " " << "T_TE" << " ";
254
outfile << "lambda(nm)(theta=30)" << " " << "R_TM" << " " << "T_TM" << " " << "R_TE" << " " << "T_TE" << " "; outfile << "lambda(nm)(theta=60)" << " " << "R_TM" << " " << "T_TM" << " " << "R_TE" << " " << "T_TE" << " "; outfile << "lambda(nm)(all_theta)" << " " << "R_TM" << " " << "T_TM" << " " << "R_TE" << " " << "T_TE" << " "; outfile << endl ; for( i=0;i<=80;i++) { k0=complex<double>(2*pi/wv[i],0); kbegin=k0*n[i][0]; kend=k0*n[i][NLayer+1]; theta=0; kx=complex<double>(2*pi/wv[i]*sin(theta*pi/180.0),0); kx=kx*n[i][0]; kzbegin=sqrt(kbegin*kbegin-kx*kx); kzend=sqrt(kend*kend-kx*kx); Calculate_Matrix(wv[i], kx, position_Layer[1], NLayer,d,n[i],TM,TE); if(abs(imag(kzend))<1.0e-9) {
outfile << wv[i] << " " << norm(TM[5]) << " " << norm(TM[6])*norm(n[i][0]/n[i][NLayer+1])*abs(kzend/kzbegin)<< " " << norm(TE[5]) << " " << norm(TE[6])*abs(kzend/kzbegin) << " " ;
} else { outfile << wv[i] << " " << norm(TM[5]) << " " << 0 << " " << norm(TE[5]) << " " << 0 << " " ; } theta=30; kx=complex<double>(2*pi/wv[i]*sin(theta*pi/180.0),0); kx=kx*n[i][0]; kzbegin=sqrt(kbegin*kbegin-kx*kx); kzend=sqrt(kend*kend-kx*kx); Calculate_Matrix(wv[i], kx, position_Layer[1], NLayer,d,n[i],TM,TE); if(abs(imag(kzend))<1.0e-9) {
255
outfile << wv[i] << " " << norm(TM[5]) << " " << norm(TM[6])*norm(n[i][0]/n[i][NLayer+1])*abs(kzend/kzbegin)<< " " << norm(TE[5]) << " " << norm(TE[6])*abs(kzend/kzbegin) << " " ; } else { outfile << wv[i] << " " << norm(TM[5]) << " " << 0 << " " << norm(TE[5]) << " " << 0 << " " ; } theta=60; kx=complex<double>(2*pi/wv[i]*sin(theta*pi/180.0),0); kx=kx*n[i][0]; kzbegin=sqrt(kbegin*kbegin-kx*kx); kzend=sqrt(kend*kend-kx*kx); Calculate_Matrix(wv[i], kx, position_Layer[1], NLayer,d,n[i],TM,TE); if(abs(imag(kzend))<1.0e-9) { outfile << wv[i] << " " << norm(TM[5]) << " " << norm(TM[6])*norm(n[i][0]/n[i][NLayer+1])*abs(kzend/kzbegin)<< " " << norm(TE[5]) << " " << norm(TE[6])*abs(kzend/kzbegin) << " " ; } else { outfile << wv[i] << " " << norm(TM[5]) << " " << 0 << " " << norm(TE[5]) << " " << 0 << " " ; } deltatheta=1; total1=0;total2=0;total3=0;total4=0; for(theta=0;theta<=89;theta=theta+deltatheta) { kx=complex<double>(2*pi/wv[i]*sin(theta*pi/180.0),0); kx=kx*n[i][0]; kzbegin=sqrt(kbegin*kbegin-kx*kx); kzend=sqrt(kend*kend-kx*kx); Calculate_Matrix(wv[i], kx, position_Layer[1], NLayer,d,n[i],TM,TE); if(abs(imag(kzend))<1.0e-9) {
256
temp1= norm(TM[5]);temp2= norm(TM[6])*norm(n[i][0]/n[i][NLayer+1])*abs(kzend/kzbegin); temp3= norm(TE[5]); temp4= norm(TE[6])*abs(kzend/kzbegin); } else { temp1= norm(TM[5]);temp2= 0; temp3= norm(TE[5]); temp4= 0; } total1+=temp1*sin(theta*pi/180.0)*deltatheta*pi/180.0; total2+=temp2*sin(theta*pi/180.0)*deltatheta*pi/180.0; total3+=temp3*sin(theta*pi/180.0)*deltatheta*pi/180.0; total4+=temp4*sin(theta*pi/180.0)*deltatheta*pi/180.0; } outfile << wv[i] << " " << total1 << " " << total2 << " "<< total3 << " "<< total4<< " "; outfile << endl; } outfile.close(); cout << "finish writing R_T.txt..." << endl; //--------------------------------------------------------------------------- // writing Spectrum.txt //calculate the EL spectrum over all angles, and at 0,10,20....80,90 degrees // also calcualte the out-coupling efficiency at each wavelength // all calculations are done for the substrate and the air, respectively deltatheta=10; outfile.open("Spectrum.txt"); outfile << "lambda(nm)" << " " ; outfile << "PL_total" <<" " ; outfile << "Etot_total" <<" " ; outfile << "Esubstrate_total" <<" " ; outfile << "Eair_total" << " "; outfile << "Etot/PL" << " "; outfile << "Esubstrate/Etot" << " "; outfile << "Eair/Etot" << " "; outfile << "lambda(nm)" << " "; for( theta=0;theta<=91;theta+=deltatheta) {
257
outfile << "substrate_theta_" << theta << " "; } outfile << "lambda(nm)" << " "; for( theta=0;theta<=91;theta+=deltatheta) { outfile << "air_theta_" << theta << " "; } for(j=1;j<=NEmitter;j++) { outfile << "F_" << j <<" " ; } for(j=1;j<=NEmitter;j++) { outfile << "PL_" << j <<" " ; } for(j=1;j<=NEmitter;j++) { outfile << "Etot_" << j <<" " ; } for(j=1;j<=NEmitter;j++) { outfile << "Esubstrate_" << j <<" " ; } outfile << endl; for( i=0;i<=80;i++) { theta=0; realk0=2*pi/wv[i]*real(n[i][0]); realkr=2*realk0; realkmin=40*realkr; Etot[i][0]=0; Esubstrate[i][0]=0; PL[i][0]=0; //--------------------------------------------------------------------------- for(j=1;j<=NEmitter;j++)
258
{ result[2]=MyGauss4(1024, 0,realk0, wv[i], position_Layer[j], position_x[j], NLayer,d, n[i], TM,TE); result[3]=MyGauss1(256,0,2*realkr,wv[i],position_Layer[j],position_x[j],NLayer,d,n[i],TM,TE) +MyGauss2(256,2*realkr,realkmin, wv[i],position_Layer[j],position_x[j],NLayer,d,n[i],TM,TE) +Etotal2(realkmin,wv[i],position_Layer[j],position_x[j],NLayer,d,n[i],TM,TE); result[10]=MyGauss1(256,0,2*pi/wv[i]*1.0,wv[i],position_Layer[j],position_x[j],NLayer,d,n[i],TM,TE); // into air result[11]=MyGauss1(256,2*pi/wv[i]*1.0,2*pi/wv[i]*1.5, wv[i], position_Layer[j], position_x[j], NLayer,d, n[i], TM,TE); // into substrate result[12]=MyGauss1(256,2*pi/wv[i]*1.5,2*pi/wv[i]*1.7, wv[i], position_Layer[j], position_x[j], NLayer,d, n[i], TM,TE); // into substrate result[13]=MyGauss2(256,2*pi/wv[i]*1.7,2*pi/wv[i]*30, wv[i], position_Layer[j], position_x[j], NLayer,d, n[i], TM,TE)+Etotal2(2*pi/wv[i]*30,wv[i],position_Layer[j],position_x[j],NLayer,d,n[i],TM,TE);; // into substrate F[i][j]=result[3]; factor[i][j]=1.0/(nonrad+result[3]); Etot[i][j]=result[3]*factor[i][j]*PL[i][j]; Esubstrate[i][j]=result[2]*factor[i][j]*PL[i][j]; Effisub[i][j]=result[2]/result[3]; ModeAir[i][j]=result[10]*factor[i][j]*PL[i][j]; ModeSubstrate[i][j]=result[11]*factor[i][j]*PL[i][j]; ModeWaveGuide[i][j]=result[12]*factor[i][j]*PL[i][j]; ModePlasmon[i][j]=result[13]*factor[i][j]*PL[i][j]; Etot[i][0]+=Etot[i][j]; Esubstrate[i][0]+=Esubstrate[i][j]; PL[i][0]+=PL[i][j]; ModeAir[i][0]+= ModeAir[i][j]; ModeSubstrate[i][0]+= ModeSubstrate[i][j];
259
ModeWaveGuide[i][0]+= ModeWaveGuide[i][j]; ModePlasmon[i][0]+= ModePlasmon[i][j]; } Effisub[i][0]=Esubstrate[i][0]/Etot[i][0]; Eoutsubstrate[i]=0; Eoutair[i]=0; deltatheta=1; for(theta=0;theta<90;theta+=deltatheta) // not calculting theta=90 { Psubstrate[i][theta]=0; for(j=1;j<=NEmitter;j++) { Calculate_P (wv[i], theta*pi/180.0,position_Layer[j],position_x[j], NLayer,d, n[i],TM,TE,result); Psubstrate[i][theta]+=result[1]*factor[i][j]*PL[i][j]; // sum of all j emitters for, each theta, each wavelength Pair[i][theta]+=result[4]*factor[i][j]*PL[i][j]; } Eoutsubstrate[i]+=Psubstrate[i][theta]*2*pi*sin(theta*pi/180.0)*deltatheta*pi/180.0; Eoutair[i]+=Pair[i][theta]*2*pi*sin(theta*pi/180.0)*deltatheta*pi/180.0; } outfile << wv[i] << " " << PL[i][0] << " " << Etot[i][0]<< " " << Eoutsubstrate[i] << " " << Eoutair[i] << " " << Etot[i][0]/PL[i][0] << " " << Eoutsubstrate[i]/Etot[i][0] << " " << Eoutair[i]/Etot[i][0] << " " ; outfile << wv[i] << " "; deltatheta=10; for(theta=0;theta<=91;theta+=deltatheta) { outfile << Psubstrate[i][theta] << " " ;} outfile << wv[i] << " "; for(theta=0;theta<=91;theta+=deltatheta) { outfile << Pair[i][theta] << " " ;} for(j=1;j<=NEmitter;j++) { outfile << F[i][j] <<" " ;}
260
for(j=1;j<=NEmitter;j++) { outfile << PL[i][j] <<" " ;} for(j=1;j<=NEmitter;j++) { outfile << Etot[i][j] <<" " ;} for(j=1;j<=NEmitter;j++) { outfile << Esubstrate[i][j] <<" " ;} outfile << endl; } outfile.close(); cout << "finish writing Spectrum.txt..." << endl; //--------------------------------------------------------------------------- // writing Angular.txt // calculate the angular dependence of the color point and luminance // all calclations are done in the substrate and in the air, respectively outfile.open("Angular.txt"); outfile << "theta" " "<< "PL/(2*pi)" << " " << "P(substrate)" << " " << "P(air)" << " "<< "theta" <<" "; outfile << "Lum(PL_total)/pi" <<" "<< "PL_total_CIEx" << " " << "PL_total_CIEy" <<" " ; outfile<< "Lum(substrate)" << " " "substrate_CIEx" << " "<< "substrate_CIEy" << " " << "Lum(air)" << " " << "air_CIEx" << " "<< "air_CIEy" <<" " << "Lum(red)" << " " << "red_CIEx" << " " << "red_CIEy" << " " << "Lum(green)" << " " << "green_CIEx" << " " << "green_CIEy" << " " << "Lum(blue)" << " " << "blue_CIEx" << " " << "blue_CIEy" << " " <<endl; double PLlum[50]={0},PLx[50]={0},PLy[50]={0}; double substratelum,airlum,redlum,redx,redy,greenlum,greenx,greeny,bluelum,bluex,bluey; double substratex=0,substratey=0,airx=0,airy=0; double R[100]={0},G[100]={0},B[100]={0}; double x=0,y=0,z=0,total=0; for(j=0;j<=NEmitter;j++) { x=0;y=0;z=0;total=0; for(i=0;i<=80;i++) { x+=CIExyz[i][0]*PL[i][j];
261
y+=CIExyz[i][1]*PL[i][j]; z+=CIExyz[i][2]*PL[i][j]; } total=x+y+z; PLlum[j]=y/pi; PLx[j]=x/total; PLy[j]=y/total; } totalwv[0]=0; totalwv[1]=0; totalwv[2]=0; totalwv[6]=0; totalwv[7]=0; for(i=0;i<=80;i++) { totalwv[0]+=Etot[i][0]; totalwv[1]+=Esubstrate[i][0]; totalwv[2]+=PL[i][0]; totalwv[6]+=Eoutsubstrate[i]; totalwv[7]+=Eoutair[i]; } deltatheta=3; double temp; for( theta=0;theta<90;theta+=deltatheta) { totalwv[3]=0; totalwv[4]=0; for(i=0;i<=80;i++) { realk0=2*pi/wv[i]*real(n[i][0]); realkr=2*realk0; realkmin=40*realkr; Psubstrate[i][theta]=0; Pair[i][theta]=0; for(j=1;j<=NEmitter;j++)
262
{ Calculate_P (wv[i], theta*pi/180.0,position_Layer[j],position_x[j], NLayer,d, n[i],TM,TE,result); totalwv[3]+=result[1]*factor[i][j]*PL[i][j]; // P theta in substrate, all wavelength, each theta, all emitters totalwv[4]+=result[4]*factor[i][j]*PL[i][j]; // P theta in air Psubstrate[i][theta]+=result[1]*factor[i][j]*PL[i][j]; // P theta in substrate, each theta, each wavelength, all emitters Pair[i][theta]+=result[4]*factor[i][j]*PL[i][j]; // P theta in air } temp=sin(theta*pi/180.0)*1.0/1.5; // calculate the path in CF temp=sqrt(1.0-temp*temp); temp=1.0/temp; R[i]=Pair[i][theta]*pow(CF[i][0],temp); G[i]=Pair[i][theta]*pow(CF[i][1],temp); B[i]=Pair[i][theta]*pow(CF[i][2],temp); } outfile << theta << " " << totalwv[2]/(2*pi) << " " << totalwv[3] << " " << totalwv[4] << " "; x=0;y=0;z=0;total=0; for(i=0;i<=80;i++) { x+=CIExyz[i][0]*Psubstrate[i][theta]; y+=CIExyz[i][1]*Psubstrate[i][theta]; z+=CIExyz[i][2]*Psubstrate[i][theta]; } total=x+y+z; substratelum=y; substratex=x/total; substratey=y/total; x=0;y=0;z=0;total=0; for(i=0;i<=80;i++) { x+=CIExyz[i][0]*Pair[i][theta]; y+=CIExyz[i][1]*Pair[i][theta];
263
z+=CIExyz[i][2]*Pair[i][theta]; } total=x+y+z; airlum=y; // get the lum per solid angle airx=x/total; airy=y/total; LumColor(CIExyz,R, redlum, redx, redy); LumColor(CIExyz,G, greenlum, greenx, greeny); LumColor(CIExyz,B, bluelum, bluex, bluey); if( theta==0) { final[1]= airlum/cos(theta*pi/180.0); final[2]=airx; final[3]=airy; final[4]=redlum/cos(theta*pi/180.0); final[5]=redx; final[6]=redy; final[7]=greenlum/cos(theta*pi/180.0); final[8]=greenx; final[9]=greeny; final[10]=bluelum/cos(theta*pi/180.0); final[11]=bluex; final[12]=bluey; } if( theta==60) { final[21]= airlum/cos(theta*pi/180.0); final[22]=airx; final[23]=airy; final[24]=redlum/cos(theta*pi/180.0); final[25]=redx; final[26]=redy; final[27]=greenlum/cos(theta*pi/180.0);
264
final[28]=greenx; final[29]=greeny; final[30]=bluelum/cos(theta*pi/180.0); final[31]=bluex; final[32]=bluey; } outfile << theta <<" "; outfile << PLlum[0] << " " << PLx[0] << " " << PLy[0] << " "; outfile << substratelum/cos(theta*pi/180.0) << " " << substratex<< " " << substratey << " "<< airlum/cos(theta*pi/180.0) << " " <<airx<< " " << airy << " " << redlum/cos(theta*pi/180.0) << " " << redx<< " " << redy << " "<< greenlum/cos(theta*pi/180.0) << " " << greenx<< " " << greeny << " "<< bluelum/cos(theta*pi/180.0) << " " << bluex<< " " << bluey << " " <<endl; } outfile.close(); cout << "finish writing Angular.txt..." << endl; //--------------------------------------------------------------------------------------------- // writing Modes.txt // calculate the mode contribution from the dipole emission // assuming that the in-plane wave vector projection kaapa // k0=2pi/lambda // 0<kappa<k0 air mode // k0<kappa<1.5k0 glass/substrate mode // 1.50<kappa<1.7k0 organic mode // 1.7k0<kappa<infinite surface plasmon mode // also calculate the mode contribution at each wavlength final[0]=totalwv[7]/totalwv[0]; // power EQE final[39]=0;final[40]=0;final[41]=0;final[42]=0;final[43]=0; for(i=0;i<=80;i++) { final[39]+=Etot[i][0]; final[40]+=ModeAir[i][0]; final[41]+=ModeSubstrate[i][0]; final[42]+=ModeWaveGuide[i][0];
265
final[43]+=ModePlasmon[i][0]; } outfile.open("Modes.txt"); outfile << "lambda(nm)" << " " <<"PL" << " " << "Etot" << " " << "Esubstrate" << " " << "ModeAir" << " "<< "ModeSubstrate" << " "<< "ModeWaveGuide" << " " << "ModePlasmon" << " " << "Eoutinair/Etot" << " " << "ModeAir/Etot" << " " << "ModeSubstrate/Etot" << " "<<"ModeWaveGuide/Etot" <<" "<< "ModePlasmon/Etot" <<endl; i=0; outfile << wv[i] << " " << PL[i][0] << " "<< Etot[i][0] << " "<< Esubstrate[i][0] << " "<<ModeAir[i][0] << " "<< ModeSubstrate[i][0] << " "<< ModeWaveGuide[i][0] << " "<< ModePlasmon[i][0] << " " << final[0] << " " <<final[40]/final[39]<< " " <<final[41]/final[39]<< " " <<final[42]/final[39] << " " <<final[43]/final[39] << endl; for(i=1;i<=80;i++) { outfile << wv[i] << " " << PL[i][0] << " "<< Etot[i][0] << " "<< Esubstrate[i][0] << " "<<ModeAir[i][0] << " "<< ModeSubstrate[i][0] << " "<< ModeWaveGuide[i][0] << " "<< ModePlasmon[i][0] << " " << endl; } outfile.close(); cout <<"finish writing Modes.txt... " << endl << endl; //--------------------------------------------------------------------------- // display the useful information, and write the information in result.txt // show the wavelength,peak and width // the OLED outcoupling peak and width double PsubstrateEff[100]={0},PairEff[100]={0}; for( i=0;i<=80;i++) { PsubstrateEff[i]=Psubstrate[i][0]/PL[i][0]; PairEff[i]=Pair[i][0]/PL[i][0]; } cout << "PL=" << totalwv[2] << endl; cout << "Etot=" << totalwv[0] << endl;
266
cout << "Eoutsubstrate=" << totalwv[6] << endl; cout << "Eoutair=" << totalwv[7] << endl; cout << endl; cout << "Etot/PL=" << totalwv[0]/totalwv[2] << endl ; cout << "Eoutsubstrate/PL=" << totalwv[6]/totalwv[2] << endl ; cout << "Eoutair/PL=" << totalwv[7]/totalwv[2]<< endl ; cout << endl; cout << "Eoutsubstrate/Etot=" << totalwv[6]/totalwv[0] << endl ; cout << "Eoutair/Etot=" << totalwv[7]/totalwv[0]<< endl ; cout << endl; cout << "air(0)=(" << final[2] <<"," << final[3] <<")" <<endl; cout << "air(60)=(" << final[22] <<"," << final[23] <<")" <<endl; cout << "deltauv=" << deltauv(final[2],final[3],final[22],final[23]) <<endl; cout << endl; cout << "Lum(0)=" << final[1] << endl; cout << "Lum(60)=" << final[21] << endl; cout << "Lum(60)/Lum(0)=" << final[21]/final[1] << endl; cout << endl; cout << "(peak,width)" << endl; cout << "PL=( " << findpeak(wv,PL) <<" nm, " << findwidth(wv,PL) << " nm)" <<endl; cout << "Total_substrate=( " << findpeak3(wv,Eoutsubstrate) <<" nm, " << findwidth3(wv,Eoutsubstrate) << " nm)" <<endl; cout << "Total_air=( " << findpeak3(wv,Eoutair) <<" nm, " << findwidth3(wv,Eoutair) <<" nm)" <<endl << endl; cout << "Normal_substrate=(" << findpeak2(wv,Psubstrate) <<" nm, " <<findwidth2(wv,Psubstrate) <<" nm)" <<endl; cout << "Normal_air=(" << findpeak2(wv,Pair) <<" nm, " <<findwidth2(wv,Pair) << " nm)" <<endl << endl; cout << "Normal output/PL efficiency:" << endl; cout << "Eff_substrate=("<< findpeak3(wv,PsubstrateEff) <<" nm, " <<findwidth3(wv,PsubstrateEff) <<" nm)" <<endl; cout << "Eff_air=(" << findpeak3(wv,PairEff) <<" nm, " <<findwidth3(wv,PairEff) <<" nm)" <<endl; //---------------------------------------------------------------------------
267
outfile.open("result.txt"); outfile << "PL=" << totalwv[2] << endl; outfile << "Etot=" << totalwv[0] << endl; outfile << "Eoutsubstrate=" << totalwv[6] << endl; outfile << "Eoutair=" << totalwv[7] << endl; outfile << endl; outfile << "Etot/PL=" << totalwv[0]/totalwv[2] << endl ; outfile << "Eoutsubstrate/PL=" << totalwv[6]/totalwv[2] << endl ; outfile << "Eoutair/PL=" << totalwv[7]/totalwv[2]<< endl ; outfile << endl; outfile << "Eoutsubstrate/Etot=" << totalwv[6]/totalwv[0] << endl ; outfile << "Eoutair/Etot=" << totalwv[7]/totalwv[0]<< endl ; outfile << endl; outfile << "air(0)=(" << final[2] <<"," << final[3] <<")" <<endl; outfile << "air(60)=(" << final[22] <<"," << final[23] <<")" <<endl; outfile << "deltauv=" << deltauv(final[2],final[3],final[22],final[23]) <<endl; outfile << endl; outfile << "Lum(0)=" << final[1] << endl; outfile << "Lum(60)=" << final[21] << endl; outfile << "Lum(60)/Lum(0)=" << final[21]/final[1] << endl; outfile << endl; outfile << "(peak,width)" << endl; outfile << "PL=( " << findpeak(wv,PL) <<" nm, " << findwidth(wv,PL) << " nm)" <<endl; outfile << "Total_substrate=( " << findpeak3(wv,Eoutsubstrate) <<" nm, " << findwidth3(wv,Eoutsubstrate) << " nm)" <<endl; outfile << "Total_air=( " << findpeak3(wv,Eoutair) <<" nm, " << findwidth3(wv,Eoutair) <<" nm)" <<endl << endl; outfile << "Normal_substrate=(" << findpeak2(wv,Psubstrate) <<" nm, " <<findwidth2(wv,Psubstrate) <<" nm)" <<endl; outfile << "Normal_air=(" << findpeak2(wv,Pair) <<" nm, " <<findwidth2(wv,Pair) << " nm)" <<endl << endl; outfile << "Normal output/PL efficiency:" << endl;
268
outfile << "Eff_substrate=("<< findpeak3(wv,PsubstrateEff) <<" nm, " <<findwidth3(wv,PsubstrateEff) <<" nm)" <<endl; outfile << "Eff_air=(" << findpeak3(wv,PairEff) <<" nm, " <<findwidth3(wv,PairEff) <<" nm)" <<endl; getchar(); return 0; }
269
B.2 Sample input (input.txt)
========================================= nonrad=(the relative non_radiative_rate, assuming radiative_rate=1) 0 ========================================= NLayer= 5 Layer 0: glass Layer 1: ITO 100 Layer 2: n=1.7 69 Layer 3: n=1.7 20 Layer 4: n=1.7 69 Layer 5: Al 100 Layer 6: air ========================================= NEmitter= 1 Emitter 1: PL_red 3 10 ========================================
270
B.3 Sample input (Al.txt)
lambda(nm) n k 380 0.442168 4.61474 385 0.454122 4.67866 390 0.466095 4.74084 395 0.478073 4.80105 400 0.490123 4.8606 405 0.502471 4.92014 410 0.514861 4.98033 415 0.527196 5.04178 420 0.539393 5.10508 425 0.551729 5.16803 430 0.56433 5.22952 435 0.577197 5.28952 440 0.590531 5.34753 445 0.604087 5.4073 450 0.617921 5.46933 455 0.632065 5.52964 460 0.64627 5.59015 465 0.660457 5.65359 470 0.674848 5.71603 475 0.689515 5.77714 480 0.704641 5.8385 485 0.720042 5.89999 490 0.735933 5.95972 495 0.751983 6.01888 500 0.76864 6.07814 505 0.785439 6.13743 510 0.802831 6.1986 515 0.820383 6.26027 520 0.838673 6.32327 525 0.857309 6.38691 530 0.876416 6.4472 535 0.896032 6.50387 540 0.915959 6.56164 545 0.937245 6.62425 550 0.95853 6.68685 555 0.980983 6.74732 560 1.00375 6.80723 565 1.02654 6.86636 570 1.04943 6.92357 575 1.07231 6.98078
271
580 1.09693 7.03627 585 1.12242 7.0909 590 1.14791 7.14552 595 1.17231 7.201 600 1.19662 7.25656 605 1.22101 7.31214 610 1.24746 7.36835 615 1.27392 7.42457 620 1.3004 7.48075 625 1.32872 7.53424 630 1.35704 7.58773 635 1.38536 7.64123 640 1.41499 7.69247 645 1.44487 7.74328 650 1.47476 7.79409 655 1.50528 7.84639 660 1.53646 7.90024 665 1.56764 7.9541 670 1.59882 8.00795 675 1.63617 8.06166 680 1.67376 8.11537 685 1.71135 8.16908 690 1.75028 8.22088 695 1.79347 8.26662 700 1.83666 8.31235 705 1.87985 8.35808 710 1.92667 8.40305 715 1.98188 8.44626 720 2.03709 8.48946 725 2.0923 8.53267 730 2.1483 8.57154 735 2.20936 8.58284 740 2.27042 8.59415 745 2.33148 8.60546 750 2.39254 8.61677 755 2.44345 8.61696 760 2.4903 8.6127 765 2.53715 8.60844 770 2.58399 8.60418 775 2.63061 8.59946 780 2.66463 8.56945
272
B.4 Sample input (PL_red.txt)
lambda(nm) PL_red 380 1.45519E-11 385 4.07157E-11 390 1.1148E-10 395 2.98691E-10 400 7.83146E-10 405 2.00935E-09 410 5.045E-09 415 1.23954E-08 420 2.98023E-08 425 7.01187E-08 430 1.6144E-07 435 3.63731E-07 440 8.01941E-07 445 1.73021E-06 450 3.65297E-06 455 7.54721E-06 460 1.52588E-05 465 3.01888E-05 470 5.84475E-05 475 0.000110733 480 0.000205297 485 0.00037246 490 0.000661258 495 0.001148825 500 0.001953125 505 0.003249368 510 0.005290061 515 0.008427819 520 0.013139006 525 0.020044844 530 0.029925103 535 0.043718115 540 0.0625 545 0.08743623 550 0.11970041 555 0.160358752 560 0.210224104 565 0.269690199 570 0.338563887 575 0.415919145
273
580 0.5 585 0.588198496 590 0.677127773 595 0.762799075 600 0.840896415 605 0.907126088 610 0.957603281 615 0.989228013 620 1 625 0.989228013 630 0.957603281 635 0.907126088 640 0.840896415 645 0.762799075 650 0.677127773 655 0.588198496 660 0.5 665 0.415919145 670 0.338563887 675 0.269690199 680 0.210224104 685 0.160358752 690 0.11970041 695 0.08743623 700 0.0625 705 0.043718115 710 0.029925103 715 0.020044844 720 0.013139006 725 0.008427819 730 0.005290061 735 0.003249368 740 0.001953125 745 0.001148825 750 0.000661258 755 0.00037246 760 0.000205297 765 0.000110733 770 5.84475E-05 775 3.01888E-05 780 1.52588E-05
274
Appendix C
Program for the Power Consumption Model of
OLED Screens
275
C.1 Codes
//------------------------------------------------------------------- // OLED screens power model: // C++ codes to calculate the power consumption of OLED screens //------------------------------------------------------------------- #include <math.h> #include <cmath> #include <iostream> #include <fstream> #include <string> #include <sstream> #include <stdlib.h> #include <stdio.h> using namespace std; void ColorRatio(double* CIEx, double* CIEy, double* Ratio) // function to break the target color into RGB ratios { double rR_x,rR_z,rG_x,rG_z,rB_x,rB_z,rM_x,rM_z; // R G B => TargetW (3-RGB panel) // CIE [0,1,2] red, green, blue of 3-RGB panel // CIE[3] TargetW for 3-RGB panel rR_x=CIEx[0]/CIEy[0]; rR_z=(1-CIEx[0]-CIEy[0])/CIEy[0]; rG_x=CIEx[1]/CIEy[1]; rG_z=(1-CIEx[1]-CIEy[1])/CIEy[1]; rB_x=CIEx[2]/CIEy[2]; rB_z=(1-CIEx[2]-CIEy[2])/CIEy[2]; rM_x=CIEx[3]/CIEy[3]; rM_z=(1-CIEx[3]-CIEy[3])/CIEy[3]; Ratio[0]=((rM_x-rB_x)*(rG_z-rB_z)-(rM_z-rB_z)*(rG_x-rB_x))/((rR_x-rB_x)*(rG_z-
rB_z)-(rR_z-rB_z)*(rG_x-rB_x)); Ratio[1]=((rM_x-rB_x)-Ratio[0]*(rR_x-rB_x))/(rG_x-rB_x); Ratio[2]=1-Ratio[0]-Ratio[1]; // R G B => EmitW (4-RGBW panel)
// Ratio [4,5,6] R,G,B ratio for EmitW in 4-RGBW panel // used when normalize the color to white OLED
// CIE [4,5,6] red, green, blue of 4-RGBW panel
276
// CIE[7] EmitW color for 4-RGBW panel rR_x=CIEx[4]/CIEy[4]; rR_z=(1-CIEx[4]-CIEy[4])/CIEy[4]; rG_x=CIEx[5]/CIEy[5]; rG_z=(1-CIEx[5]-CIEy[5])/CIEy[5]; rB_x=CIEx[6]/CIEy[6]; rB_z=(1-CIEx[6]-CIEy[6])/CIEy[6]; rM_x=CIEx[7]/CIEy[7]; rM_z=(1-CIEx[7]-CIEy[7])/CIEy[7]; Ratio[4]=((rM_x-rB_x)*(rG_z-rB_z)-(rM_z-rB_z)*(rG_x-rB_x))/((rR_x-rB_x)*(rG_z-rB_z)-(rR_z-rB_z)*(rG_x-rB_x)); Ratio[5]=((rM_x-rB_x)-Ratio[4]*(rR_x-rB_x))/(rG_x-rB_x); Ratio[6]=1-Ratio[4]-Ratio[5]; // R G B => TargetW (4-RGBW panel)
// Ratio [14,15,16] R,G,B ratio for TargetW in 4-RGBW panel // ratio info to calculate the max lum for each color channel in display
// CIE [4,5,6] red, green, blue of 4-RGBW panel // CIE[8] TargetW color for 4-RGBW panel rR_x=CIEx[4]/CIEy[4]; rR_z=(1-CIEx[4]-CIEy[4])/CIEy[4]; rG_x=CIEx[5]/CIEy[5]; rG_z=(1-CIEx[5]-CIEy[5])/CIEy[5]; rB_x=CIEx[6]/CIEy[6]; rB_z=(1-CIEx[6]-CIEy[6])/CIEy[6]; rM_x=CIEx[8]/CIEy[8]; rM_z=(1-CIEx[8]-CIEy[8])/CIEy[8]; Ratio[14]=((rM_x-rB_x)*(rG_z-rB_z)-(rM_z-rB_z)*(rG_x-rB_x))/((rR_x-rB_x)*(rG_z-rB_z)-(rR_z-rB_z)*(rG_x-rB_x)); Ratio[15]=((rM_x-rB_x)-Ratio[14]*(rR_x-rB_x))/(rG_x-rB_x); Ratio[16]=1-Ratio[14]-Ratio[15]; }
277
int main() { double DisplaySize=40; // unit inch int height=1920,width=1080; // screen resolution double Polarizer=0.42; // 42% light transmission of the polarizer double PeakNit=400; // screen peak lumiannce, unit nit
double Gamma=2.2; // gamma correction curve, relate the digital level to luminance
int R=250,G=166,B=188; // digital value of the pixel, (0-255) string ColorName[10]={"Red","Green","Blue","TargetWhite","Red","Green","Blue","EmitWhite","TargetWhite"}; double CIEx[10]={0},CIEy[10]={0},Eff[10]={0},V[10]={0},Ratio[30]={0}; CIEx[0]=0.64;CIEy[0]=0.36; // 3-RGB red CIEx[1]=0.31;CIEy[1]=0.63; // 3-RGB green CIEx[2]=0.14;CIEy[2]=0.12; // 3-RGB blue CIEx[3]=0.313;CIEy[3]=0.329; // 3-RGB target white CIEx[4]=0.66;CIEy[4]=0.33; // 4-RGBW red CIEx[5]=0.23;CIEy[5]=0.70; // 4-RGBW green CIEx[6]=0.14;CIEy[6]=0.07; // 4-RGBW blue CIEx[7]=0.33;CIEy[7]=0.33; // 4-RGBW emit white CIEx[8]=0.313;CIEy[8]=0.329; // 4-RGBW target white // efficiency, unit cd/A Eff[0]=30; Eff[1]=85; Eff[2]=10; Eff[4]=10; Eff[5]=20; Eff[6]=3; Eff[7]=57; // toal voltage drop on OLED and TFT, unit V V[0]=10; V[1]=10; V[2]=10; V[4]=14; V[5]=14; V[6]=14; V[7]=14; double PixelArea=DisplaySize*DisplaySize*2.54*2.54
/(height*height+width*width)/10000; // Pixel Area, unit m^2 double PixelLum[10]={0},ScreenLum[10]={0}; // unit cd double PixelCurrent[10]={0},ScreenCurrent[10]={0}; // unit A double PixelPower[10]={0},ScreenPower[10]={0}; // unit W
//---------------------------------------------- end read inputs ------------------
278
// calculate color channel ratio ColorRatio(CIEx, CIEy, Ratio); //3-RGB panel // each color channel PixelLum[0]=PeakNit*PixelArea*Ratio[0]*pow(R*1.0/255.0,Gamma); PixelLum[1]=PeakNit*PixelArea*Ratio[1]*pow(G*1.0/255.0,Gamma); PixelLum[2]=PeakNit*PixelArea*Ratio[2]*pow(B*1.0/255.0,Gamma); for(int i=0;i<=2;i++) { PixelCurrent[i]=PixelLum[i]/Eff[i]/Polarizer; PixelPower[i]=PixelCurrent[i]*V[i]; } // the sum of all color channels PixelLum[3]=PixelLum[0]+PixelLum[1]+PixelLum[2]; PixelCurrent[3]=PixelCurrent[0]+PixelCurrent[1]+PixelCurrent[2]; PixelPower[3]=PixelPower[0]+PixelPower[1]+PixelPower[2]; // 4-RGBW panel
// calcualte the luminance contribution of each color channel // without the contribution from the EmitWhite channel
double Rlm=PeakNit*PixelArea*Ratio[14]*pow(R*1.0/255.0,Gamma); double Glm=PeakNit*PixelArea*Ratio[15]*pow(G*1.0/255.0,Gamma); double Blm=PeakNit*PixelArea*Ratio[16]*pow(B*1.0/255.0,Gamma); // normalized the luminance of R G B back to EmitWhite // determine the maximum EmitWhite lumiannce contribution double min=Rlm/Ratio[4]; if( Glm/Ratio[5] < min) {min=Glm/Ratio[5];} if( Blm/Ratio[6] < min) {min=Blm/Ratio[6];} // each color channel PixelLum[7]=min; // emit white luminance PixelLum[4]=Rlm-PixelLum[7]*Ratio[4]; PixelLum[5]=Glm-PixelLum[7]*Ratio[5]; PixelLum[6]=Blm-PixelLum[7]*Ratio[6]; for(int i=4;i<=7;i++) { PixelCurrent[i]=PixelLum[i]/Eff[i]/Polarizer; PixelPower[i]=PixelCurrent[i]*V[i]; }
279
// the sum of all color channels PixelLum[8]=PixelLum[4]+PixelLum[5]+PixelLum[6]+PixelLum[7]; PixelCurrent[8]=PixelCurrent[4]+PixelCurrent[5]+PixelCurrent[6]+PixelCurrent[7]; PixelPower[8]=PixelPower[4]+PixelPower[5]+PixelPower[6]+PixelPower[7]; // the screen power consumption // assuming that each pixel display the same digital value (R,G,B) for(int i=0;i<=8;i++) { ScreenLum[i]=PixelLum[i]*height*width; ScreenCurrent[i]=PixelCurrent[i]*height*width; ScreenPower[i]=PixelPower[i]*height*width; } //-------------------------------------------------------------------- cout << "3-RGB ScreenPower=" <<ScreenPower[3] <<" W" <<endl; cout << "4-RGBW ScreenPower=" << ScreenPower[8] << " W" <<endl; //-------------------------------------------------------------------- getchar(); return 0; }
280
Appendix D
Program for the Simulation of OPV devices
(Optical Part, Exciton Part and Electrical Part)
281
D.1 Flow diagram
282
D.2 Codes
//---------------------------------------------------------------------------------------------- // OPV model: // C++ codes to calculate the photon absorption, excition dissociation, // charge carrier generation and transport in OPV devices //---------------------------------------------------------------------------------------------- #include <cmath> #include <iostream> #include <fstream> #include <string> #include <sstream> #include <complex> using namespace std; void Write_Files (int NJ, int N, int check, double* p,double* n,double* un, double* up, double* F, double* Fint, double* jt, double* jp, double*jn, double* jpdrift, double* jpdiff, double* jndrift, double* jndiff, double* G, double *R, double* U,double* P,double* X, double* Xnew,double* result) { ofstream myfile; ostringstream ss; int j; ss << "Vstep" << NJ << ".dat"; myfile.open( ss.str().c_str() ); myfile << "Number" << " " <<"check" << " " << "Holes(1/cm3)" << " " << "Electrons(1/cm3)" << " " << "F(V/cm)"<< " " << "Fint(V/cm)" << " " << "jt(mA/cm2)" << " " << "jp(mA/cm2)" << " " << "jn(mA/cm2)" << " " << "jpdrift(mA/cm2)" << " " << "jpdiff(mA/cm2)" << " " << "jndrift(mA/cm2)" << " " << "jndiff(mA/cm2)" << " " << "G(1/cm3)"<< " " << "R(1/cm3)" << " " << "up(cm2/Vs)" << " "<< "un(cm2/Vs)" <<" " << "netGenration(1/cm3)" << " " << "Probability" << " " << "X[](1/cm3)" <<" " << "Xnew[](1/cm3)" <<" " << "result[](mA/cm2)"<<endl; for(j=0;j<=N+1;j++) { myfile << j << " " << check << " " << p[j] << " " << n[j] << " " << F[j]<< " " << Fint[j] << " " << jt[j] << " " << jp[j] << " " << jn[j] << " " << jpdrift[j] << " " << jpdiff[j] << " " << jndrift[j] << " " << jndiff[j] << " " << G[j] <<" " << R[j] << " " <<" "
283
<< up[j] << " " << un[j] << " " << U[j]<<" " << P[j] << " " << X[j] << " " << Xnew[j] << " " << result[j] <<endl; } myfile.close(); } double Calculate_E(double* p,double* n,double* un,double* un0, double* Fn0, double* up,double* up0, double* Fp0, double* F,double *Fint,double* Dn, double* Dp,double Vbi, double V, int N, double dl,double ts_factor,double e, double diel_0, double diel_r) { int i; int j; for (i=0;i<=N;i++) { Fint[i]=0; for(j=0;j<=N+1;j++) { if (j<=i) Fint[i]=Fint[i]+dl*e*(p[j]-n[j])/(2*diel_0*diel_r); if (j>i) Fint[i]=Fint[i]-dl*e*(p[j]-n[j])/(2*diel_0*diel_r); } } for (i=1;i<=N;i++) { F[i]=(Fint[i-1]+Fint[i])/2; } double VF=0; for (i=1;i<=N;i++) { VF=VF+F[i]*dl; } VF=Vbi+VF; n[0]=n[0]+(VF-V)*diel_0*diel_r/(e*dl*N*dl); p[N+1]=p[N+1]+(VF-V)*diel_0*diel_r/(e*dl*N*dl);
// adjust electrons on ITO and holes on Al if(n[0]<p[0]) {p[0]=p[0]-n[0];n[0]=0;}
// balance the holes and electrons on the electrodes
284
else {n[0]=n[0]-p[0];p[0]=0;} if(n[N+1]<p[N+1]) {p[N+1]=p[N+1]-n[N+1];n[N+1]=0;} else {n[N+1]=n[N+1]-p[N+1];p[N+1]=0;} for (i=1;i<=N;i++) { F[i]=F[i]-(VF-V)/(N*dl); } for (i=1;i<=N;i++) { un[i]=un0[i]*exp(Fn0[i]*sqrt(abs(F[i]))); Dn[i]=un[i]*0.026; up[i]=up0[i]*exp(Fp0[i]*sqrt(abs(F[i]))); Dp[i]=up[i]*0.026; } double uFmax,x,dt; uFmax=0; for (i=1;i<=N;i++) { x=abs(un[i]*F[i]); if (uFmax<=x) uFmax=x; x=abs(up[i]*F[i]); if (uFmax<=x) uFmax=x; x=abs(Dn[i]/dl); if (uFmax<=x) uFmax=x; x=abs(Dp[i]/dl); if (uFmax<=x) uFmax=x; } dt=dl/(uFmax*ts_factor); return dt; } double kd(double u, double a, double er, double E) { E=abs(E); double e=1.6e-19; double e0=8.854e-14; double kT=0.026;
285
double R=e*u/(e0*er); double pi=3.1415926; double Eb=e/(4*pi*er*e0*a*1.0e-7); double b=E*e/(8*pi*er*e0*kT*kT); double kdiss; kdiss=3*R*exp(-Eb/kT)*(1+b+(b*b)/3)/(4*pi*a*a*a*1.0e-21); return kdiss; } int move(double* p,double* n, double* pnew, double* nnew, double *X, double* Xnew, double kf, double a,double* un, double* up, double* F, double* Fint, double* Dn, double* Dp, double* G,double* result, double* jp, double*jn, double* jt,double* jpdrift, double* jpdiff, double* jndrift, double* jndiff, double* R,double* interRnp, double* interRpn,double* U,double* P, double dt, int Nmax, double converge,int N, double dl,double e, double diel_0,double diel_r,double* current,double Nc, double Nv, double Eg) { int j; int check=1; double dp=0,dn=0; double nisquare=Nc*Nv*exp(-Eg/0.026); for(j=2;j<=N-1;j++) { pnew[j]=p[j]+dt*((Dp[j+1]*p[j+1]+Dp[j-1]*p[j-1]-2*Dp[j]*p[j])/(dl*dl)-p[j]*up[j]*abs(F[j])/dl); if (F[j+1]<0) pnew[j]=pnew[j]+dt*p[j+1]*up[j+1]*abs(F[j+1])/dl; if (F[j-1]>0) pnew[j]=pnew[j]+dt*p[j-1]*up[j-1]*abs(F[j-1])/dl; nnew[j]=n[j]+dt*((Dn[j+1]*n[j+1]+Dn[j-1]*n[j-1]-2*Dn[j]*n[j])/(dl*dl)-n[j]*un[j]*abs(F[j])/dl); if (F[j+1]>0) nnew[j]=nnew[j]+dt*n[j+1]*un[j+1]*abs(F[j+1])/dl; if (F[j-1]<0) nnew[j]=nnew[j]+dt*n[j-1]*un[j-1]*abs(F[j-1])/dl; } j=1; pnew[j]=p[j]+dt*(Dp[j+1]*p[j+1]-Dp[j]*p[j])/(dl*dl); if (F[j+1]<0) pnew[j]=pnew[j]+dt*p[j+1]*up[j+1]*abs(F[j+1])/dl;
286
if (F[j]>0) pnew[j]=pnew[j]-dt*p[j]*up[j]*abs(F[j])/dl; nnew[j]=n[j]+dt*(Dn[j+1]*n[j+1]-Dn[j]*n[j])/(dl*dl); if (F[j+1]>0) nnew[j]=nnew[j]+dt*n[j+1]*un[j+1]*abs(F[j+1])/dl; if (F[j]<0) nnew[j]=nnew[j]-dt*n[j]*un[j]*abs(F[j])/dl; j=N; pnew[j]=p[j]+dt*(Dp[j-1]*p[j-1]-Dp[j]*p[j])/(dl*dl); if (F[j-1]>0) pnew[j]=pnew[j]+dt*p[j-1]*up[j-1]*abs(F[j-1])/dl; if (F[j]<0) pnew[j]=pnew[j]-dt*p[j]*up[j]*abs(F[j])/dl; nnew[j]=n[j]+dt*(Dn[j-1]*n[j-1]-Dn[j]*n[j])/(dl*dl); if (F[j-1]<0) nnew[j]=nnew[j]+dt*n[j-1]*un[j-1]*abs(F[j-1])/dl; if (F[j]>0) nnew[j]=nnew[j]-dt*n[j]*un[j]*abs(F[j])/dl; for(j=1;j<=N;j++) {
if (n[j]*p[j]>nisquare) R[j]=e*(un[j]+up[j])*(p[j]*n[j]-nisquare)/(diel_r*diel_0);
else R[j]=0; Xnew[j]=X[j]+dt*(G[j]/(dl*e*1000)-kf*X[j]-kd(un[j]+up[j],a,diel_r,F[j])*X[j]+R[j]); pnew[j]=pnew[j]-R[j]*dt+kd(un[j]+up[j],a,diel_r,F[j])*X[j]*dt; nnew[j]=nnew[j]-R[j]*dt+kd(un[j]+up[j],a,diel_r,F[j])*X[j]*dt; P[j]=kd(un[j]+up[j],a,diel_r,F[j])/(kd(un[j]+up[j],a,diel_r,F[j])+kf); U[j]=P[j]*G[j]/(dl*e*1000)-(1-P[j])*R[j]; } p[0]=p[0]+(n[1]-nnew[1]); n[0]=n[0]+(p[1]-pnew[1]); p[N+1]=p[N+1]+(n[N]-nnew[N]); n[N+1]=n[N+1]+(p[N]-pnew[N]); for (j=1;j<=N && check==1; j++) { if (abs(Xnew[j]-X[j])>abs(converge*dt*Xnew[j])) check=0; } for (j=2;j<=N-1 && check==1; j++)
287
{ if (abs(p[j]-pnew[j])>abs(converge*dt*pnew[j])) check=0; if (abs(n[j]-nnew[j])>abs(converge*dt*nnew[j])) check=0; } if (check==1) //calculate current { jp[0]=(p[1]-pnew[1])*dl*e*1000/dt; jn[0]=-(n[1]-nnew[1])*dl*e*1000/dt; jt[0]=jp[0]+jn[0]; jp[N]=-(p[N]-pnew[N])*dl*e*1000/dt; jn[N]=(n[N]-nnew[N])*dl*e*1000/dt; jt[N]=jp[N]+jn[N];
if (abs(jt[0]-jt[N])>abs(converge*(abs(jt[N])+abs(jt[0])))) check=0; // check again if the electron current equal the hole current
for(j=1;j<=N-1;j++) { dp=dt*(Dp[j]*p[j]-Dp[j+1]*p[j+1])/(dl*dl); jpdiff[j]=dp*dl*e*1000/dt; dp=0; if(F[j]>0) dp=dt*p[j]*up[j]*abs(F[j])/dl; if (F[j+1]<0) dp=dp-dt*p[j+1]*up[j+1]*abs(F[j+1])/dl; jpdrift[j]=dp*dl*e*1000/dt; dn=dt*(Dn[j]*n[j]-Dn[j+1]*n[j+1])/(dl*dl); jndiff[j]=-dn*dl*e*1000/dt; dn=0; if(F[j]<0) dn=dt*n[j]*un[j]*abs(F[j])/dl; if (F[j+1]>0) dn=dn-dt*n[j+1]*un[j+1]*abs(F[j+1])/dl; jndrift[j]=-dn*dl*e*1000/dt; jp[j]=jpdiff[j]+jpdrift[j]; jn[j]=jndiff[j]+jndrift[j]; jt[j]=jp[j]+jn[j]; } }
288
for(j=2;j<=N-1;j++) // notice that, for j=1 and N , it is the thermal equilibium, no change is made { p[j]=pnew[j]; n[j]=nnew[j]; X[j]=Xnew[j]; } X[1]=Xnew[1]; X[N]=Xnew[N]; return check; } void data(int* lamda, double* AM, double* ITOnr, double* ITOni, double* C60nr, double* C60ni,double* Alnr,double* Alni) { // wavelenth unit nm lamda[ 1 ]= 300 ; lamda[ 2 ]= 310 ; lamda[ 3 ]= 320 ; lamda[ 4 ]= 330 ; lamda[ 5 ]= 340 ; lamda[ 6 ]= 350 ; lamda[ 7 ]= 360 ; lamda[ 8 ]= 370 ; lamda[ 9 ]= 380 ; lamda[ 10 ]= 390 ; lamda[ 11 ]= 400 ; lamda[ 12 ]= 410 ; lamda[ 13 ]= 420 ; lamda[ 14 ]= 430 ; lamda[ 15 ]= 440 ; lamda[ 16 ]= 450 ; lamda[ 17 ]= 460 ; lamda[ 18 ]= 470 ; lamda[ 19 ]= 480 ; lamda[ 20 ]= 490 ; lamda[ 21 ]= 500 ; lamda[ 22 ]= 510 ;
289
lamda[ 23 ]= 520 ; lamda[ 24 ]= 530 ; lamda[ 25 ]= 540 ; lamda[ 26 ]= 550 ; lamda[ 27 ]= 560 ; lamda[ 28 ]= 570 ; lamda[ 29 ]= 580 ; lamda[ 30 ]= 590 ; lamda[ 31 ]= 600 ; lamda[ 32 ]= 610 ; lamda[ 33 ]= 620 ; lamda[ 34 ]= 630 ; lamda[ 35 ]= 640 ; lamda[ 36 ]= 650 ; lamda[ 37 ]= 660 ; lamda[ 38 ]= 670 ; lamda[ 39 ]= 680 ; lamda[ 40 ]= 690 ; lamda[ 41 ]= 700 ; lamda[ 42 ]= 710 ; lamda[ 43 ]= 720 ; lamda[ 44 ]= 730 ; lamda[ 45 ]= 740 ; lamda[ 46 ]= 750 ; lamda[ 47 ]= 760 ; lamda[ 48 ]= 770 ; lamda[ 49 ]= 780 ; lamda[ 50 ]= 790 ; lamda[ 51 ]= 800 ; lamda[ 52 ]= 810 ; lamda[ 53 ]= 820 ; lamda[ 54 ]= 830 ; lamda[ 55 ]= 840 ; lamda[ 56 ]= 850 ; lamda[ 57 ]= 860 ; lamda[ 58 ]= 870 ; lamda[ 59 ]= 880 ; lamda[ 60 ]= 890 ; lamda[ 61 ]= 900 ; //AM 1.5 flux unit mW/cm^2*eV
290
AM[ 1 ]= 0.000246895 ; AM[ 2 ]= 0.01273475 ; AM[ 3 ]= 0.052972903 ; AM[ 4 ]= 0.125450565 ; AM[ 5 ]= 0.137590323 ; AM[ 6 ]= 0.149026613 ; AM[ 7 ]= 0.173662258 ; AM[ 8 ]= 0.225303145 ; AM[ 9 ]= 0.214752097 ; AM[ 10 ]= 0.25066621 ; AM[ 11 ]= 0.359387097 ; AM[ 12 ]= 0.346681452 ; AM[ 13 ]= 0.38043871 ; AM[ 14 ]= 0.303295645 ; AM[ 15 ]= 0.478996774 ; AM[ 16 ]= 0.565947581 ; AM[ 17 ]= 0.567246774 ; AM[ 18 ]= 0.571466935 ; AM[ 19 ]= 0.62636129 ; AM[ 20 ]= 0.641109677 ; AM[ 21 ]= 0.623024194 ; AM[ 22 ]= 0.636718548 ; AM[ 23 ]= 0.638929032 ; AM[ 24 ]= 0.660191935 ; AM[ 25 ]= 0.645604839 ; AM[ 26 ]= 0.683020161 ; AM[ 27 ]= 0.665677419 ; AM[ 28 ]= 0.681058065 ; AM[ 29 ]= 0.702548387 ; AM[ 30 ]= 0.652283065 ; AM[ 31 ]= 0.713854839 ; AM[ 32 ]= 0.722456452 ; AM[ 33 ]= 0.73695 ; AM[ 34 ]= 0.707429032 ; AM[ 35 ]= 0.740129032 ; AM[ 36 ]= 0.71258871 ; AM[ 37 ]= 0.744735484 ; AM[ 38 ]= 0.767041935 ; AM[ 39 ]= 0.766041935 ; AM[ 40 ]= 0.657781452 ; AM[ 41 ]= 0.723879032 ; AM[ 42 ]= 0.754375 ; AM[ 43 ]= 0.572225806 ;
291
AM[ 44 ]= 0.664358871 ; AM[ 45 ]= 0.727766129 ; AM[ 46 ]= 0.746431452 ; AM[ 47 ]= 0.163056774 ; AM[ 48 ]= 0.720819355 ; AM[ 49 ]= 0.731941935 ; AM[ 50 ]= 0.695072581 ; AM[ 51 ]= 0.691935484 ; AM[ 52 ]= 0.689741129 ; AM[ 53 ]= 0.569952903 ; AM[ 54 ]= 0.613135726 ; AM[ 55 ]= 0.688054839 ; AM[ 56 ]= 0.612630645 ; AM[ 57 ]= 0.685336774 ; AM[ 58 ]= 0.678845565 ; AM[ 59 ]= 0.666791613 ; AM[ 60 ]= 0.663143306 ; AM[ 61 ]= 0.538983871 ; //ITO,C60,Al nr,ni ITOnr[ 1 ]= 2.200 ; ITOnr[ 2 ]= 2.176 ; ITOnr[ 3 ]= 2.152 ; ITOnr[ 4 ]= 2.128 ; ITOnr[ 5 ]= 2.104 ; ITOnr[ 6 ]= 2.080 ; ITOnr[ 7 ]= 2.060 ; ITOnr[ 8 ]= 2.040 ; ITOnr[ 9 ]= 2.020 ; ITOnr[ 10 ]= 2.000 ; ITOnr[ 11 ]= 1.980 ; ITOnr[ 12 ]= 1.966 ; ITOnr[ 13 ]= 1.952 ; ITOnr[ 14 ]= 1.938 ; ITOnr[ 15 ]= 1.924 ; ITOnr[ 16 ]= 1.910 ; ITOnr[ 17 ]= 1.900 ; ITOnr[ 18 ]= 1.890 ; ITOnr[ 19 ]= 1.880 ; ITOnr[ 20 ]= 1.870 ; ITOnr[ 21 ]= 1.860 ; ITOnr[ 22 ]= 1.848 ;
292
ITOnr[ 23 ]= 1.836 ; ITOnr[ 24 ]= 1.824 ; ITOnr[ 25 ]= 1.812 ; ITOnr[ 26 ]= 1.800 ; ITOnr[ 27 ]= 1.792 ; ITOnr[ 28 ]= 1.784 ; ITOnr[ 29 ]= 1.776 ; ITOnr[ 30 ]= 1.768 ; ITOnr[ 31 ]= 1.760 ; ITOnr[ 32 ]= 1.752 ; ITOnr[ 33 ]= 1.744 ; ITOnr[ 34 ]= 1.736 ; ITOnr[ 35 ]= 1.728 ; ITOnr[ 36 ]= 1.720 ; ITOnr[ 37 ]= 1.706 ; ITOnr[ 38 ]= 1.692 ; ITOnr[ 39 ]= 1.678 ; ITOnr[ 40 ]= 1.664 ; ITOnr[ 41 ]= 1.650 ; ITOnr[ 42 ]= 1.640 ; ITOnr[ 43 ]= 1.630 ; ITOnr[ 44 ]= 1.620 ; ITOnr[ 45 ]= 1.610 ; ITOnr[ 46 ]= 1.600 ; ITOnr[ 47 ]= 1.594 ; ITOnr[ 48 ]= 1.588 ; ITOnr[ 49 ]= 1.582 ; ITOnr[ 50 ]= 1.576 ; ITOnr[ 51 ]= 1.570 ; ITOnr[ 52 ]= 1.556 ; ITOnr[ 53 ]= 1.542 ; ITOnr[ 54 ]= 1.528 ; ITOnr[ 55 ]= 1.514 ; ITOnr[ 56 ]= 1.500 ; ITOnr[ 57 ]= 1.488 ; ITOnr[ 58 ]= 1.476 ; ITOnr[ 59 ]= 1.464 ; ITOnr[ 60 ]= 1.452 ; ITOnr[ 61 ]= 1.440 ; ITOni[ 1 ]= 0.050 ; ITOni[ 2 ]= 0.038 ; ITOni[ 3 ]= 0.032 ;
293
ITOni[ 4 ]= 0.028 ; ITOni[ 5 ]= 0.024 ; ITOni[ 6 ]= 0.020 ; ITOni[ 7 ]= 0.018 ; ITOni[ 8 ]= 0.014 ; ITOni[ 9 ]= 0.012 ; ITOni[ 10 ]= 0.010 ; ITOni[ 11 ]= 0.008 ; ITOni[ 12 ]= 0.005 ; ITOni[ 13 ]= 0.003 ; ITOni[ 14 ]= 0.001 ; ITOni[ 15 ]= 0.001 ; ITOni[ 16 ]= 0.001 ; ITOni[ 17 ]= 0.001 ; ITOni[ 18 ]= 0.001 ; ITOni[ 19 ]= 0.001 ; ITOni[ 20 ]= 0.001 ; ITOni[ 21 ]= 0.001 ; ITOni[ 22 ]= 0.001 ; ITOni[ 23 ]= 0.001 ; ITOni[ 24 ]= 0.001 ; ITOni[ 25 ]= 0.001 ; ITOni[ 26 ]= 0.001 ; ITOni[ 27 ]= 0.001 ; ITOni[ 28 ]= 0.001 ; ITOni[ 29 ]= 0.001 ; ITOni[ 30 ]= 0.001 ; ITOni[ 31 ]= 0.001 ; ITOni[ 32 ]= 0.001 ; ITOni[ 33 ]= 0.001 ; ITOni[ 34 ]= 0.001 ; ITOni[ 35 ]= 0.001 ; ITOni[ 36 ]= 0.001 ; ITOni[ 37 ]= 0.001 ; ITOni[ 38 ]= 0.001 ; ITOni[ 39 ]= 0.005 ; ITOni[ 40 ]= 0.008 ; ITOni[ 41 ]= 0.010 ; ITOni[ 42 ]= 0.011 ; ITOni[ 43 ]= 0.012 ; ITOni[ 44 ]= 0.012 ; ITOni[ 45 ]= 0.013 ; ITOni[ 46 ]= 0.014 ;
294
ITOni[ 47 ]= 0.015 ; ITOni[ 48 ]= 0.015 ; ITOni[ 49 ]= 0.016 ; ITOni[ 50 ]= 0.017 ; ITOni[ 51 ]= 0.018 ; ITOni[ 52 ]= 0.018 ; ITOni[ 53 ]= 0.019 ; ITOni[ 54 ]= 0.020 ; ITOni[ 55 ]= 0.021 ; ITOni[ 56 ]= 0.021 ; ITOni[ 57 ]= 0.022 ; ITOni[ 58 ]= 0.023 ; ITOni[ 59 ]= 0.024 ; ITOni[ 60 ]= 0.024 ; ITOni[ 61 ]= 0.025 ; C60nr[ 1 ]= 2.097 ; C60nr[ 2 ]= 1.981 ; C60nr[ 3 ]= 1.902 ; C60nr[ 4 ]= 1.85 ; C60nr[ 5 ]= 1.989 ; C60nr[ 6 ]= 2.203 ; C60nr[ 7 ]= 2.25 ; C60nr[ 8 ]= 2.174 ; C60nr[ 9 ]= 2.086 ; C60nr[ 10 ]= 2.07 ; C60nr[ 11 ]= 2.143 ; C60nr[ 12 ]= 2.203 ; C60nr[ 13 ]= 2.218 ; C60nr[ 14 ]= 2.246 ; C60nr[ 15 ]= 2.272 ; C60nr[ 16 ]= 2.303 ; C60nr[ 17 ]= 2.313 ; C60nr[ 18 ]= 2.315 ; C60nr[ 19 ]= 2.321 ; C60nr[ 20 ]= 2.326 ; C60nr[ 21 ]= 2.32 ; C60nr[ 22 ]= 2.294 ; C60nr[ 23 ]= 2.254 ; C60nr[ 24 ]= 2.213 ; C60nr[ 25 ]= 2.181 ; C60nr[ 26 ]= 2.159 ; C60nr[ 27 ]= 2.147 ;
295
C60nr[ 28 ]= 2.134 ; C60nr[ 29 ]= 2.121 ; C60nr[ 30 ]= 2.111 ; C60nr[ 31 ]= 2.104 ; C60nr[ 32 ]= 2.1 ; C60nr[ 33 ]= 2.097 ; C60nr[ 34 ]= 2.092 ; C60nr[ 35 ]= 2.087 ; C60nr[ 36 ]= 2.081 ; C60nr[ 37 ]= 2.074 ; C60nr[ 38 ]= 2.066 ; C60nr[ 39 ]= 2.058 ; C60nr[ 40 ]= 2.053 ; C60nr[ 41 ]= 2.046 ; C60nr[ 42 ]= 2.039 ; C60nr[ 43 ]= 2.032 ; C60nr[ 44 ]= 2.026 ; C60nr[ 45 ]= 2.021 ; C60nr[ 46 ]= 2.018 ; C60nr[ 47 ]= 2.013 ; C60nr[ 48 ]= 2.009 ; C60nr[ 49 ]= 2.005 ; C60nr[ 50 ]= 2.002 ; C60nr[ 51 ]= 1.999 ; C60nr[ 52 ]= 1.999 ; C60nr[ 53 ]= 1.994 ; C60nr[ 54 ]= 1.991 ; C60nr[ 55 ]= 1.989 ; C60nr[ 56 ]= 1.986 ; C60nr[ 57 ]= 1.984 ; C60nr[ 58 ]= 1.981 ; C60nr[ 59 ]= 1.98 ; C60nr[ 60 ]= 1.978 ; C60nr[ 61 ]= 1.976 ; C60ni[ 1 ]= 0.612 ; C60ni[ 2 ]= 0.55 ; C60ni[ 3 ]= 0.571 ; C60ni[ 4 ]= 0.701 ; C60ni[ 5 ]= 0.839 ; C60ni[ 6 ]= 0.766 ; C60ni[ 7 ]= 0.582 ;
296
C60ni[ 8 ]= 0.475 ; C60ni[ 9 ]= 0.48 ; C60ni[ 10 ]= 0.531 ; C60ni[ 11 ]= 0.577 ; C60ni[ 12 ]= 0.532 ; C60ni[ 13 ]= 0.499 ; C60ni[ 14 ]= 0.483 ; C60ni[ 15 ]= 0.462 ; C60ni[ 16 ]= 0.413 ; C60ni[ 17 ]= 0.362 ; C60ni[ 18 ]= 0.32 ; C60ni[ 19 ]= 0.281 ; C60ni[ 20 ]= 0.231 ; C60ni[ 21 ]= 0.193 ; C60ni[ 22 ]= 0.14 ; C60ni[ 23 ]= 0.103 ; C60ni[ 24 ]= 0.086 ; C60ni[ 25 ]= 0.082 ; C60ni[ 26 ]= 0.082 ; C60ni[ 27 ]= 0.081 ; C60ni[ 28 ]= 0.08 ; C60ni[ 29 ]= 0.079 ; C60ni[ 30 ]= 0.078 ; C60ni[ 31 ]= 0.078 ; C60ni[ 32 ]= 0.076 ; C60ni[ 33 ]= 0.073 ; C60ni[ 34 ]= 0.068 ; C60ni[ 35 ]= 0.062 ; C60ni[ 36 ]= 0.055 ; C60ni[ 37 ]= 0.05 ; C60ni[ 38 ]= 0.045 ; C60ni[ 39 ]= 0.041 ; C60ni[ 40 ]= 0.039 ; C60ni[ 41 ]= 0.037 ; C60ni[ 42 ]= 0.035 ; C60ni[ 43 ]= 0.034 ; C60ni[ 44 ]= 0.033 ; C60ni[ 45 ]= 0.032 ; C60ni[ 46 ]= 0.032 ; C60ni[ 47 ]= 0.031 ; C60ni[ 48 ]= 0.031 ; C60ni[ 49 ]= 0.031 ; C60ni[ 50 ]= 0.03 ;
297
C60ni[ 51 ]= 0.03 ; C60ni[ 52 ]= 0.03 ; C60ni[ 53 ]= 0.029 ; C60ni[ 54 ]= 0.029 ; C60ni[ 55 ]= 0.028 ; C60ni[ 56 ]= 0.028 ; C60ni[ 57 ]= 0.027 ; C60ni[ 58 ]= 0.027 ; C60ni[ 59 ]= 0.027 ; C60ni[ 60 ]= 0.026 ; C60ni[ 61 ]= 0.026 ; Alnr[ 1 ]= 0.276 ; Alnr[ 2 ]= 0.294 ; Alnr[ 3 ]= 0.314 ; Alnr[ 4 ]= 0.334 ; Alnr[ 5 ]= 0.355 ; Alnr[ 6 ]= 0.380 ; Alnr[ 7 ]= 0.400 ; Alnr[ 8 ]= 0.420 ; Alnr[ 9 ]= 0.440 ; Alnr[ 10 ]= 0.440 ; Alnr[ 11 ]= 0.490 ; Alnr[ 12 ]= 0.510 ; Alnr[ 13 ]= 0.540 ; Alnr[ 14 ]= 0.560 ; Alnr[ 15 ]= 0.590 ; Alnr[ 16 ]= 0.620 ; Alnr[ 17 ]= 0.650 ; Alnr[ 18 ]= 0.680 ; Alnr[ 19 ]= 0.700 ; Alnr[ 20 ]= 0.740 ; Alnr[ 21 ]= 0.770 ; Alnr[ 22 ]= 0.800 ; Alnr[ 23 ]= 0.840 ; Alnr[ 24 ]= 0.880 ; Alnr[ 25 ]= 0.920 ; Alnr[ 26 ]= 0.960 ; Alnr[ 27 ]= 1.000 ; Alnr[ 28 ]= 1.050 ; Alnr[ 29 ]= 1.100 ; Alnr[ 30 ]= 1.150 ;
298
Alnr[ 31 ]= 1.200 ; Alnr[ 32 ]= 1.250 ; Alnr[ 33 ]= 1.300 ; Alnr[ 34 ]= 1.360 ; Alnr[ 35 ]= 1.410 ; Alnr[ 36 ]= 1.470 ; Alnr[ 37 ]= 1.540 ; Alnr[ 38 ]= 1.600 ; Alnr[ 39 ]= 1.670 ; Alnr[ 40 ]= 1.750 ; Alnr[ 41 ]= 1.830 ; Alnr[ 42 ]= 1.930 ; Alnr[ 43 ]= 2.040 ; Alnr[ 44 ]= 2.150 ; Alnr[ 45 ]= 2.270 ; Alnr[ 46 ]= 2.400 ; Alnr[ 47 ]= 2.490 ; Alnr[ 48 ]= 2.580 ; Alnr[ 49 ]= 2.660 ; Alnr[ 50 ]= 2.730 ; Alnr[ 51 ]= 2.800 ; Alnr[ 52 ]= 2.780 ; Alnr[ 53 ]= 2.760 ; Alnr[ 54 ]= 2.720 ; Alnr[ 55 ]= 2.670 ; Alnr[ 56 ]= 2.610 ; Alnr[ 57 ]= 2.530 ; Alnr[ 58 ]= 2.430 ; Alnr[ 59 ]= 2.310 ; Alnr[ 60 ]= 2.190 ; Alnr[ 61 ]= 2.060 ; Alni[ 1 ]= 3.610 ; Alni[ 2 ]= 3.740 ; Alni[ 3 ]= 3.867 ; Alni[ 4 ]= 3.996 ; Alni[ 5 ]= 4.118 ; Alni[ 6 ]= 4.240 ; Alni[ 7 ]= 4.370 ; Alni[ 8 ]= 4.490 ; Alni[ 9 ]= 4.410 ; Alni[ 10 ]= 4.610 ;
299
Alni[ 11 ]= 4.860 ; Alni[ 12 ]= 4.980 ; Alni[ 13 ]= 5.100 ; Alni[ 14 ]= 5.230 ; Alni[ 15 ]= 5.350 ; Alni[ 16 ]= 5.470 ; Alni[ 17 ]= 5.590 ; Alni[ 18 ]= 5.710 ; Alni[ 19 ]= 5.840 ; Alni[ 20 ]= 5.960 ; Alni[ 21 ]= 6.080 ; Alni[ 22 ]= 6.200 ; Alni[ 23 ]= 6.320 ; Alni[ 24 ]= 6.450 ; Alni[ 25 ]= 6.560 ; Alni[ 26 ]= 6.690 ; Alni[ 27 ]= 6.810 ; Alni[ 28 ]= 6.920 ; Alni[ 29 ]= 7.040 ; Alni[ 30 ]= 7.150 ; Alni[ 31 ]= 7.260 ; Alni[ 32 ]= 7.370 ; Alni[ 33 ]= 7.480 ; Alni[ 34 ]= 7.590 ; Alni[ 35 ]= 7.690 ; Alni[ 36 ]= 7.790 ; Alni[ 37 ]= 7.900 ; Alni[ 38 ]= 8.010 ; Alni[ 39 ]= 8.120 ; Alni[ 40 ]= 8.220 ; Alni[ 41 ]= 8.310 ; Alni[ 42 ]= 8.400 ; Alni[ 43 ]= 8.490 ; Alni[ 44 ]= 8.570 ; Alni[ 45 ]= 8.600 ; Alni[ 46 ]= 8.620 ; Alni[ 47 ]= 8.610 ; Alni[ 48 ]= 8.600 ; Alni[ 49 ]= 8.570 ; Alni[ 50 ]= 8.510 ; Alni[ 51 ]= 8.450 ; Alni[ 52 ]= 8.390 ; Alni[ 53 ]= 8.340 ;
300
Alni[ 54 ]= 8.300 ; Alni[ 55 ]= 8.260 ; Alni[ 56 ]= 8.220 ; Alni[ 57 ]= 8.200 ; Alni[ 58 ]= 8.190 ; Alni[ 59 ]= 8.190 ; Alni[ 60 ]= 8.240 ; Alni[ 61 ]= 8.300 ; } void TransferMatrix(double lamda,double dl,double nglass, double ITOnr,double ITOni,double C60nr,double C60ni, double Alnr, double Alni, int* d, double* mono) // return the non-unit absorption in each layer for this wavelength { complex <double> Ep[2000],En[2000],n[2000]; complex <double> s11[2000],s12[2000],s21[2000],s22[2000]; complex <double> sp11[2000],sp12[2000],sp21[2000],sp22[2000]; complex <double> I11[2000],I12[2000],I21[2000],I22[2000]; complex <double> L11[2000],L12[2000],L21[2000],L22[2000]; double nr[2000]={0}; double k[2000]={0}; double q[2000]={0}; double qex[2000]={0}; double pi = 3.14159265359; int j; double total=0; double R1=0; // glass reflectivity double R2=0; // multilayer reflectivity //double qx=(4*pi*3*8.854*0.5/lamda)*1.0e5; double qx=0; double x=2*pi*dl/lamda; complex <double> a,b,c,f; complex <double> cx (x,0); complex <double> c0 (0,0); complex <double> c1 (1,0); complex <double> c2 (2,0); complex <double> ci (0,1); // define the complex time of x,0,1,i int N=d[1]+d[2]+d[3]+d[4]+d[5];
301
for(j=1;j<=d[1];j++) {nr[j]=ITOnr;k[j]=ITOni;}// ITO for(j=d[1]+1;j<=d[1]+d[2];j++) {nr[j]=2;k[j]=0;} // MoOx for(j=d[1]+d[2]+1;j<=d[1]+d[2]+d[3];j++) {nr[j]=C60nr;k[j]=C60ni;} // C60 BHJ for(j=d[1]+d[2]+d[3]+1;j<=d[1]+d[2]+d[3]+d[4];j++) {nr[j]=2;k[j]=0;} // BPhen for(j=d[1]+d[2]+d[3]+d[4]+1;j<=d[1]+d[2]+d[3]+d[4]+d[5];j++) {nr[j]=Alnr;k[j]=Alni;} // Al nr[0]=nglass;k[0]=0;// Glass nr[N+1]=1;k[N+1]=0; // air, initiate n,k parameter for(j=0;j<=N+1;j++) { n[j]=complex <double> (nr[j],k[j]); // initiate the complex type of n } for(j=0;j<=N;j++)
// calculate Ijk matrix, from 0,1 interface -> N,N+1 interface { I11[j]=(n[j]+n[j+1])/(c2*n[j]); I22[j]=I11[j]; I12[j]=(n[j]-n[j+1])/(c2*n[j]); I21[j]=I12[j]; } for(j=1;j<=N;j++) // calculate Ljk matrix, from 1 layer -> N layer { L11[j]=c1/exp(ci*cx*n[j]); L12[j]=c0; L21[j]=c0; L22[j]=exp(ci*cx*n[j]); } s11[1]=I11[0];s12[1]=I12[0];s21[1]=I21[0];s22[1]=I22[0];
// calculate s- matrix for(j=2;j<=N+1;j++) { a=s11[j-1]*L11[j-1]+s12[j-1]*L21[j-1]; b=s11[j-1]*L12[j-1]+s12[j-1]*L22[j-1];
302
c=s21[j-1]*L11[j-1]+s22[j-1]*L21[j-1]; f=s21[j-1]*L12[j-1]+s22[j-1]*L22[j-1]; s11[j]=a*I11[j-1]+b*I21[j-1]; s12[j]=a*I12[j-1]+b*I22[j-1]; s21[j]=c*I11[j-1]+f*I21[j-1]; s22[j]=c*I12[j-1]+f*I22[j-1]; } Ep[0]=c1; En[N+1]=c0; En[0]=Ep[0]*s21[N+1]/s11[N+1]; Ep[N+1]=Ep[0]/s11[N+1]; R1=(1-nglass)*(1-nglass)/((1+nglass)*(1+nglass)); R2=norm(s21[N+1]/s11[N+1]); qx=4*pi*(1-R1)/(lamda*nglass*(1-R1*R2)); for(j=0;j<=N+1;j++){mono[j]=0;}; for(j=1;j<=N;j++) { Ep[j]=(s22[j]*Ep[0]-s12[j]*En[0])/(s11[j]*s22[j]-s12[j]*s21[j]); En[j]=(-s21[j]*Ep[0]+s11[j]*En[0])/(s11[j]*s22[j]-s12[j]*s21[j]); mono[j]=qx*nr[j]*k[j]*norm(Ep[j]+En[j])*dl;
//consider the I0, the unit here is non unit } } int main() { double dl,e,diel_0,diel_r,kT; double dt,converge,ts_factor; double V,Vbi,Vbegin,Vmore,dV; double up00,Fp00,un00,Fn00; int check=0,N=0,Nmax=0,NJ=0; double Nc,Nv,Eg; double p[1000]={0},n[1000]={0},un[1000]={0},un0[1000]={0},Fn0[1000]={0}, up[1000]={0},up0[1000]={0},Fp0[1000]={0},F[1000]={0},Fint[1000]={0}, pnew[1000]={0},nnew[1000]={0},Dn[1000]={0},Dp[1000]={0}; double jn[1000]={0},jp[1000]={0},jt[1000]={0},jpdrift[1000]={0},jpdiff[1000]={0}, jndrift[1000]={0},jndiff[1000]={0},R[1000]={0},interRnp[1000]={0}, interRpn[1000]={0},U[1000]={0},P[1000]={0};
303
double current[10]={0}; double X[1000]={0},Xnew[1000]={0}; double G[1000]={0},result[1000]={0}; double a; double kf; double dn=0; double dp=0; int lamda[100]={0}; int d[100]={0}; double mono[2000]={0},range[2000]={0}; double AM[100]={0},ITOnr[100]={0},ITOni[100]={0},C60nr[100]={0},C60ni[100]={0}, Alnr[100]={0},Alni[100]={0}; data(lamda,AM,ITOnr,ITOni,C60nr,C60ni,Alnr,Alni); dl=1.0e-7; // unit cm e=1.6e-19; // unit C diel_0=8.854e-14; // vacuum dielectric constant 8.854e-14 C/V/cm kT=0.026; // unit eV double ch; // concentraion of hole material double diel_r1; double diel_r2; string line; ifstream myfile ("input.txt"); if (myfile.is_open()) {
getline (myfile,line); // time control converge parameters getline (myfile,line); myfile >> ts_factor;
getline (myfile,line);
getline (myfile,line); myfile >> Nmax;
getline (myfile,line);
getline (myfile,line); myfile >> converge;
304
getline (myfile,line);
getline (myfile,line); myfile >> dV;
getline (myfile,line);
getline (myfile,line); myfile >> Vbegin;
getline (myfile,line);
getline (myfile,line); myfile >> Vmore;
getline (myfile,line);
getline (myfile,line); // votlage, dissociation parameters
getline (myfile,line); myfile >> ch;
getline (myfile,line); getline (myfile,line); myfile >> diel_r1;
getline (myfile,line);
getline (myfile,line); myfile >> diel_r2;
getline (myfile,line);
getline (myfile,line); myfile >> Vbi;
getline (myfile,line);
getline (myfile,line); myfile >> a;
getline (myfile,line);
getline (myfile,line); myfile >> kf;
getline (myfile,line);
getline (myfile,line); // active layer parameters getline (myfile,line);
myfile >> N;
305
getline (myfile,line);
getline (myfile,line); myfile >> Nc;
getline (myfile,line);
getline (myfile,line); myfile >> Nv;
getline (myfile,line);
getline (myfile,line); myfile >> Eg;
getline (myfile,line);
getline (myfile,line); myfile >> up00;
getline (myfile,line);
getline (myfile,line); myfile >> Fp00;
getline (myfile,line);
getline (myfile,line); myfile >> un00;
getline (myfile,line);
getline (myfile,line); myfile >> Fn00;
getline (myfile,line);
getline (myfile,line); // end myfile.close();
} else cout << "Unable to open file"; int i,j; double FF=0; double power=0; double pmax=0; double Vpmax=0; double Jpmax=0; double Jsc=0;
306
double Joc=100; double Voc=0; double Vocbot=0; double Voctop=0; double Jocbot=1000; double Joctop=1000; double nglass=1.42; d[1]=100; // ITO thickness d[2]=3; // MoOx thickness d[3]=N; // Active Layer thickness d[4]=8; // BPhen thickness d[5]=100; // Al thickness int totalN=d[1]+d[2]+d[3]+d[4]+d[5]; for(j=1;j<=totalN;j++) {range[j]=0;} for(i=1;i<=41;i++) // for each wavelength { TransferMatrix(lamda[i],dl*1.0e7,nglass,ITOnr[i],ITOni[i],C60nr[i],C60ni[i]*(1-ch),Alnr[i],Alni[i],d,mono); // 2 changes, dl-> dl*1.0e7, and C60ni-> C60ni*(1-ch) for(j=1;j<=totalN;j++) { range[j]=range[j]+AM[i]*mono[j]; } } diel_r=pow(ch*pow(diel_r1,1.0/3.0)+(1.0-ch)*pow(diel_r2,1.0/3.0),3.0); for( j=1;j<=N;j++) { G[j]=range[100+3+j]; // light absorption in the active layer Fp0[j]=Fp00;up0[j]=up00;Fn0[j]=Fp00; un0[j]=un00; } ofstream finalfile; finalfile.open("finalfile.dat"); finalfile << "V" << " " << "holecurrent(mA/cm2)" << " " << "electroncurrent(mA/cm2)" << " " << "power(mW/cm2)" << " " << "check"<<" " << "dt" << endl; for(j=0;j<=N+1;j++)
307
{ p[j]=0;n[j]=0;F[j]=0;Fint[j]=0;pnew[j]=0;nnew[j]=0;un[j]=0;Dn[j]=0;up[j]=0;Dp[j]=0;jn[j]=0;jp[j]=0;jt[j]=0;jndrift[j]=0;jndiff[j]=0;jpdrift[j]=0;jpdiff[j]=0;R[j]=0;interRnp[j]=0;interRpn[j]=0;U[j]=0;P[j]=0;X[j]=0;Xnew[j]=0; } for( V=Vbegin;V<=Vbi+Vmore;V=V+dV,NJ++) { p[1]=Nv; n[1]=Nc*exp(-Eg/kT); p[N]=Nv*exp(-Eg/kT); n[N]=Nc; p[0]=n[1]; n[0]=p[1]; p[N+1]=n[N]; n[N+1]=p[N]; // initial stuff check=0; dt=Calculate_E(p,n,un,un0,Fn0,up,up0,Fp0,F,Fint,Dn,Dp,Vbi,V,N,dl,ts_factor,e,diel_0,diel_r); for (i=0;i<=Nmax && check==0;i++) { check=move(p,n,pnew,nnew,X,Xnew,kf,a,un, up, F, Fint,Dn, Dp ,G,result,jp, jn, jt,jpdrift,jpdiff,jndrift,jndiff,R,interRnp,interRpn,U,P,dt, Nmax,converge, N, dl,e,diel_0,diel_r,current,Nc,Nv,Eg); dt=Calculate_E(p,n,un,un0,Fn0,up,up0,Fp0,F,Fint,Dn,Dp,Vbi,V,N,dl,ts_factor,e,diel_0,diel_r); } if (check==0) //still calculate the current if they didn't calculate in the move subfunction { jp[0]=(p[1]-pnew[1])*dl*e*1000/dt; jn[0]=-(n[1]-nnew[1])*dl*e*1000/dt; jt[0]=jp[0]+jn[0]; jp[N]=-(p[N]-pnew[N])*dl*e*1000/dt; jn[N]=(n[N]-nnew[N])*dl*e*1000/dt; jt[N]=jp[N]+jn[N]; if (abs(jt[0]-jt[N])>abs(converge*(abs(jt[N])+abs(jt[0])))) check=0; // check again if the electron current equal the hole current
308
for(j=1;j<=N-1;j++) { dp=dt*(Dp[j]*p[j]-Dp[j+1]*p[j+1])/(dl*dl); jpdiff[j]=dp*dl*e*1000/dt; dp=0; if(F[j]>0) dp=dt*p[j]*up[j]*abs(F[j])/dl; if (F[j+1]<0) dp=dp-dt*p[j+1]*up[j+1]*abs(F[j+1])/dl; jpdrift[j]=dp*dl*e*1000/dt; dn=dt*(Dn[j]*n[j]-Dn[j+1]*n[j+1])/(dl*dl); jndiff[j]=-dn*dl*e*1000/dt; dn=0; if(F[j]<0) dn=dt*n[j]*un[j]*abs(F[j])/dl; if (F[j+1]>0) dn=dn-dt*n[j+1]*un[j+1]*abs(F[j+1])/dl; jndrift[j]=-dn*dl*e*1000/dt; jp[j]=jpdiff[j]+jpdrift[j]; jn[j]=jndiff[j]+jndrift[j]; jt[j]=jp[j]+jn[j]; } } Write_Files (NJ,N,check,p,n,un,up,F,Fint,jt,jp,jn,jpdrift,jpdiff,jndrift,jndiff,G,R,U,P,X,Xnew,result); power=-V*jt[0]; finalfile << V << " " << jt[0] << " " << jt[N] << " " << power << " " << check <<" " << dt << endl; cout << V << endl; if(V>0 && power>pmax) {pmax=power;Vpmax=V;Jpmax=jt[0];}; if(abs(V)<1.0e-3) Jsc=jt[0]; if(V>=0 && jt[0]<0 && abs(jt[0])<abs(Jocbot)) { Jocbot=jt[0];Vocbot=V;} if(V>=0 && jt[0]>0 && abs(jt[0])<abs(Joctop)) { Joctop=jt[0];Voctop=V;} } finalfile.close(); Voc=(Joctop*Vocbot-Jocbot*Voctop)/(Joctop-Jocbot); FF=pmax/(abs(Jsc)*Voc); finalfile.open("Voc-Jsc-FF.txt");
309
finalfile << "Voc=" << Voc << " V" << endl; finalfile << "Jsc=" << abs(Jsc) << " mA/cm2" << endl; finalfile << "FF=" << FF*100 << " %" << endl; return 0; }
310
D.3 Sample input (input.txt)
*************** Control Parameters **********************
Control time distance ts_factor=
3
Numbers of calculations Nmax=
30000000
Test of convergence converge=
0.2
Voltage increase Step dV=
0.2
Begin Voltage Vbegin=
-1
Additional voltage after built-in Vmore=
0.2
******************************************************************
Donor concentration=
0.125
Donor dielectric constant diel_r1=
3.5
Acceptor dielectric constant diel_r2=
4.5
Build-in Potential Vbi=
1.3258
Initial seperation distance a(nm)=
1.08
CT state decay rate kf (1/s)=
5.0e6
******************************************************************
311
Active Layer thickness N1 (nm)=
40
Conduction band Nc1 (1/cm3)=
1.0e18
Valence band Nv1 (1/cm3)=
1.0e18
Energy Gap Eg1 (eV)=
1.3
Hole mobility up0 (cm2/Vs)=
1.01e-5
Hole field dependent Fp0 ((V/cm)^(-1/2))=
1.41e-4
Electron mobility un0 (cm2/Vs)=
2.99e-3
Electron field dependent Fn0 ((V/cm)^(-1/2))=
1.02e-4
******************************************************************