[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.9 Modelling light emission in planar LEDs

There is an extra set of functions written on top of CAMFR which allows you to study spontaneous emission and light extraction in planar stratified resonant cavity light emitting diodes. The sponteneous emission is modelled as a dipole source with a certain orientation which is then expanded in plane waves.

These functions can be imported by from RCLED import *. An example of using this module is given by the following code (available as OLED.py in the examples/other directory):

 
#!/usr/bin/env python

####################################################################
#
# Extraction efficiency in an organic LED
#
####################################################################

from RCLED import *

# Set parameters.

set_lambda(0.565)
# Create materials.
  
Al    = Material(1.031-6.861j)
Alq3  = Material(1.655)
NPD   = Material(1.807)
ITO   = Material(1.806-0.012j)
glass = Material(1.528)
air   = Material(1)
# Define layer structure.

top = Uniform(Alq3,  0.050) + \
      Uniform(Al,    0.150) + \
      Uniform(air,   0.000)

bot = Uniform(Alq3,  0.010) + \
      Uniform(NPD,   0.045) + \
      Uniform(ITO,   0.050) + \
      Uniform(glass, 0.000)

sub = Uniform(glass, 0.000) + \
      Uniform(air,   0.000)

ref = Uniform(10)

cav = RCLED(top, bot, sub, ref)

# Calculate.

cav.calc()

cav.radiation_profile(horizontal)

This defines a structure where the sequence of layers from top to bottom is air, 150 nm Al, 60 nm Alq3 with the dipole 50 nm from the Al, 45 nm NPD, 50 nm ITO, an optically thick glass substrate and finally air below.

Just as in other cavity calculations, the top and bot stacks are defined from the inside out, i.e. from the location of the emitter (in this case the Alq3 layer) to the outside world.

Uniform is a convenience function of the RCLED module, which relieves the user of having to create the Planar objects (See section 1D planar structures).

The distinction between the bot and sub stacks is needed because the substrate is considered to be optically thick, in the sense that reflections from the substrate-air interface do not contribute to the microcavity effect. In this way, it is also possible to separately calculate how much light is coupled into the glass substrate and how much is coupled into the air, which is sometimes useful information. Note that in order to calculate the extraction to air, the correct Fresnel coefficients for the substrate-air interface are taken into account.

The ref stack also deserves additional explanation. For numerical reasons, the emission is actually taking place in a zero-thickness reference layer which in this example is set to have an index of 10. The index of the reference layer is particularly important when the dipole emits close to a metal layer and you want to model the coupling to surface plasmons accurately. In this case, you might want to experiment with the reference index to make sure it is high enough.

The cav.calc() command prints out the following summary of where the light goes for different dipole orientations:

 
Source orientation: vertical (weight=1)
Emitted power                                 : 2.393
Extraction efficiency to substrate            : 0.094
Extraction efficiency to bottom outside world : 0.009

Source orientation: horizontal (weight=2)
Emitted power                                 : 0.909
Extraction efficiency to substrate            : 0.758
Extraction efficiency to bottom outside world : 0.312

Source orientation: average
Emitted power                                 : 1.404
Extraction efficiency to substrate            : 0.380
Extraction efficiency to bottom outside world : 0.139

The vertical dipole is oriented perpendicular to the layer interfaces, and the horizontal one has random azimuth in the plane of the layers. Also note that the convention we adopt here is that the useful emission is in the bottom direction. If your device is actually top emitting, you have to invert the layer stack.

If you want to do some post-processing on these numbers, or plug them in an optimisation routine, the function cav.calc() actually returns a data structure which can be used to access these numbers. E.g., the following code will print out the same sequence of nine numbers as above:

 
res=cav.calc()

print res[vertical].P_source
print res[vertical].eta_sub
print res[vertical].eta_out

print res[horizontal].P_source
print res[horizontal].eta_sub
print res[horizontal].eta_out

print res.P_source
print res.eta_sub
print res.eta_out

If you are only interested in e.g. the horizontal dipole, you can specify this in the code as follows: cav.calc(sources=[horizontal]). (By default, the following calculation is performed: calc(sources = [vertical,horizontal], weights = [1,2], indicating that the horizontal dipole needs to be counted twice to get the correct average over source orientation.)

Finally, the command cav.radiation_profile(horizontal) will plot the TE and the TM radiation profile of a horizontal dipole. To look at the radiation profile of a vertical dipole, simply replace horizontal by vertical.

To do your own post-processing, the function returns the following values:

 
theta, P_TE, P_TM = cav.radiation_profile(horizontal)

By default, the radiation_profile command plots the radiation profile in the bottom output medium, in the case of our example air. To look at the field in other locations, there is an optional function argument location, which can be any of the following strings: 'source_top' or 'source_bot' (to look at the upward and downward radition profile at the dipole location), 'top' (in the top output medium, in this case above the metal), 'sub' (in the substrate, in this case glass) and 'out' (the default value). Note that the angles always refer to angles in the particular layer indicated by the location parameter, e.g. for 'sub' the angles are angles in the glass substrate.

The values which are plotted by the function are densities per unit solid angle, i.e. the total power is given by the integral of the P values times an infinitesimal solid angle. For densities per other units, use the following optional argument: density='per_kt' or density='per_kx_ky'.

To turn off the interactive plotting (e.g. for use in batch calculations) use the optional argument show = False. To write the figures to files, specify the base filename by the optional argument filename='my_file_name', which will create my_file_name_TE.png and my_file_name_TM.png.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by root on August, 27 2008 using texi2html 1.76.