|
The following systems have been set up as default test systems within the code |
1D Bragg Stack: | Calculating photonic Green's functions using a non orthogonal finite
difference time- domain method. Ward AJ, Pendry JB, PHYS REV B 58: (11) 7252-7259 SEP 15 1998. |
1D Omni-directional Bragg Stack | Omnidirectional reflection from a one dimensional photonic crystal, Winn JN, Fink Y, Fan SH, Joannopoulos JD, OPT LETT 23: (20) 1573-1575 OCT 15 1998 |
1D Omni-directional Bragg Stack | Existance of an omni-directional photoniv band gap in one-dimensional
periodic dielectric structures, Dmitry N. Chigrin, Andrei V. Lavrinenko Submitted to Phys/ Rev. Lett (June 1, 1998) Please visit Dmitry's site here to see this work and his other Omni-directional work. |
2D perfect crystal & 2D crystal with planar cavity: | Microcavities in photonic crystals: Mode symmetry, tenability, and
coupling efficiency, Villeneuve, P. R., Fan, S.; and Joannopoulos, J. D., Phys. Rev. B 54, 7837 (1996). |
2D Hexagonal Crystal Gamma M and Gamma K directions: | Quantitative measurement of transmission, reflection, and diffraction of
two-dimensional photonic band gap structures at near infrared wavelengths. Labilloy, D.; Benisty, H.; Weisbuch, C.; Krauss, T. F.; De La Rue, R. M.; Bardinal, V.; Houdre, R.; Oesterle, U.; Cassagne, D.; and Jouanin; C., Phys. Rev. Lett. 79, 4147 (1997). |
2D Metallic Photonic Band Gap Crystal | Metallic photonic band gap materials, Sigalas, M. M., et al., Phys. Rev. B 52, 11744 (1995). |
3D 94GHz Woodpile Structure | Micromachined millimeter-wave photonic band gap crystals. Ozbay, E., et al., Appl. Phys. Lett. 64, 2059 (1994). |
3D 500GHz Woodpile Structure | Terahertz spectroscopy of three-dimensional photonic band gap
crystals, Ozbay, E., et al., Opt. Lett. 19, 1155 (1994) |
Upon execution a graphical user interface, herein referred to as GUI, will be presented. From this window most elements of the calculation can be controlled. A discussion and explanation of the different windows and element function is presented elsewhere within this document. It is recommended that for first time use that the user simply run the calculation for the default system so that required files and directories are then created. The default calculation has been deliberately set such that the calculation time is minimum, under a minute for most present day personal computers. The code must be run with the default system once so that files and directories can be created. An estimation of the time for calculation will be written to the screen and to the file timeestimate.dat. Due to the heavy numerical processing within the code there can be a difference in the estimated time and actual run time. Generally the estimation is conservative in so far as the program calculation runs faster than the reported estimate.
The time taken will vary for each machine due to specification. The time
estimate is a guideline only and should not be assumed to be 100% accurate. This
machine uses a Celeron Processor 366MHz & 64MB of RAM. When the code has
successfully finished executing the graphical user interface and console window
will close.
The code also allows the user complete control over the total number of layers propagated through in the system, a feature that was previously not available. The code also automatically writes Virtual Reality Files v2.0 for the crystal under study which can be used with the <CELLONLY> switch to verify the correct definition of a crystal before embarking on a complex or time consuming calculation. VMRL files can be viewed by installing the relevant plug in with most current web browsers.
NOTE: The VRML file that is created uses the basic shape building blocks,
i.e. the box, cylinder and sphere. Therefore for crystals that are actually air
cylinders in dielectric the VRML file will appear as solid cylinders in air. The
VRML file can still be used to check the geometry of the crystal. Coatings will
appear as semi transparent around sphere elements.
In order to understand the control file <control.dat> each parameter found
within the file is discussed after the description of the GUI, see Defining
the structure through the control file.
The elements used to build the crystal are found in the top right of the window, one element will always be selected. The material properties of the feature are found in the structure tab, see Structure Menu. The frequency range for the calculation is controlled by a start and stop frequency and a number of points. The start and stop frequency displayed in the box is normalized through the relation fnorm=fa/c where a is the lattice constant, f is frequency in Hertz and c is the speed of light in vacuum. The two push buttons below the frequency parameters determine whether the output files are written in normalized frequency of in Hertz. If the output dB box is checked then the transmission and reflection co-efficients will be written in decibels. Finally the system and template check boxes indicate whether a pre-defined system within the code is being used or whether a user defined template is to be used. These options are mutually exclusive and the code can also run without either checked.
The crystal that is output into the VRML file, vrml.wrl and gnet.dat does not reflect the layer repetition that is used to control the crystal thickness. For example if the first cell is repeated three times a total of 3 units before encountering the second cell, 1 unit the total crystal thickness for the calculation is 4 units. The VRML file and gnet.file will have only a representation of the first and second cells bolted together, i,e. 2 units. Cell magnification and chunk parameters do not alter the actual crystal calculation thickness, the crystal thickness is controlled with the layer and block control, see Defining the crystal.
AVS: Advanced Visual Systems File Output (AVS)
If true (1) will generate the files required by Advanced Visual Systems, AVS, to
visualize cell and transmission data. The files will be deposited in the same
directory as the data output files negating the necessity to include path names
within the AVS files. If GNU-plot or any other visualization package is to be
used then set false ('0').
Related Parameters: CELLSTRUCT,BUILDBLOCK,XMAG,YMAG,ZMAG
READONCE: Reads parameters once.
If true recovers the parameters for the cell one time only, thereafter the main
program can be coded to alter them, i.e. nested sweeps of the radius of a
cylinder can be achieved to obtain optimal response for a system. Usage of this
parameter necessitates good knowledge of the main code, if in doubt set true
('1').
Related Parameters: None
DEFECTS: Defects.
If a cell has been set to be a defect cell, it can take one of two values,
either completely filled with the dielectric constant of the reference
(embedding) medium (DEFECT=0) or the dielectric constant of the features
(DEFECTS=1). More complex defects can be achieved through super cells (blocks)
and multi-cell structures; which are discussed in the section: Controlling the
structure under study.
Related Parameters: None
Features: ANYBAR, ANYROTBAR, ANYCYL, ANYSPHERE
Feature with which to build cell, only one can be chosen. Chosen structure has
value of ('1'), all others must be set to ('0')
ANYBAR: Bars, square or rectangular cross-section,
ANYROTBAR: Rotated Bars, in plane angular rotation of bar, (under development)
ANYCYL: Cylinders,
ANYSPHERE: Spheres.
CELLSTRUCT: Cell Structure Creation.
When set 'TRUE' ('1') program will generate and output the structure of the unit
cell and then stop. Used for visually checking the contents of the
representational matrix prior to large calculations.
Related Parameters: BUILBLOCK,AVS,XMAG,YMAG,ZMAG
BUILDBLOCK: Builds a large representative matrix.
If set 'TRUE' ('1') then the multi cell crystal under study will be written into
the output file as one large piece of crystal, in effect adding together all sub
cells of a crystal into one large matrix. Especially useful if used in
conjunction with AVS switch. If .FALSE. each cell will be written sequentially
to the output file. If the multi cell crystal under study contains either layer
doubling or single layer additions within a block then at present these will be
ignored. To understand cells and blocks see the section: Controlling the
structure under study.
Related Parameters: CELLSTRUCT,AVS,XMAG,YMAG,ZMAG
XMAG,YMAG,ZMAG Expansion factors.
Used to repeat pieces of crystal in the X,Y, & Z directions to obtain build
a bulk piece of the crystal. These parameters do not effect the calculation in
any other way.
Related Parameters: BUILBLOCK,CELLSTRUCT,AVS
COEFF: Transmission Coefficient / Band Structure Calculation
If set 'TRUE' ('1') then the code will perform a transmission / reflection
calculation, otherwise the band structure for a cell will be calculated.
Related Parameters: None
XSIZE,YSIZE,ZSIZE Global Discretisation Mesh
The discretisation mesh is used to represent the structure under study.
Integration (propagation) is carried out through the structure in the
Z-direction, therefore for two-dimensional PBG's the Y mesh size should be set
to unity.
Related Parameters: ISUB
ISUB: Sub Mesh Size
Each mesh point as defined by the global discretisation mesh is sub divided into
a sub mesh points on which the structure under study is formed. The sub mesh is
used to provide an average value for the dielectric constant to the global mesh
point.
Related Parameters: XSIZE,YSIZE,ZSIZE
EMACH: Machine Accuracy
Self explanatory; used to determine the accuracy of the calculations.
CIKVAL: Filter on Eigen Values
Used to filter the imaginary values of the K-Values when the band structure
calculation is utilized.
Dielectric Constant of Shape:
ERSTARTR | Start Value, real part |
ERSTOPR | Stop Value, real part |
ERSTARTJ | Start Value, imaginary part |
ERSTOPJ | Stop Value, imaginary part |
REFSTARTR | Start Value, real part |
REFSTOPR | Stop Value, real part |
FSTART | Start Frequency |
FSTOP | Stop Frequency |
NOP | Number of Points |
For example, to calculate the response of a structure from a normalized
frequency of 4.5 to 9 using 450 points requires the following:
FSTART | 4.5 | Start Frequency |
FSTOP | 9.0 | Stop Frequency |
NOP | 450 | Number of Points |
If degree are being used then normal incidence is 0degrees for both Kx and Ky and oblique is +/- 90 degrees.
Components:
AKXSTART | Parallel component in X-Plane, start value |
AKYSTART | Parallel component in Y-Plane, start value |
AKXSTOP | Parallel component in X-Plane, stop value |
AKYSTOP | Parallel component in Y-Plane, stop value |
AKXNOP | Number of Points used to Scan Range in X-Plane |
AKYNOP | Number of Points used to Scan Range in Y-Plane |
FRNOP: Filling Ratio Number of Points.
Used to sweep a further aspect of the structure and can be coded in various
forms. New users should leave this at the default setting of (1) as it incurs
complete loops of the main program otherwise. FRNOP was originally intended as
'Filling Ratio Number of Points' where a range of filling ratios can be set and
then set to loop to generate gap maps. It is still generally used for this
purpose but requires that the user correctly code the expression for the filling
ratio for a structure. This has been done for elementary square lattices with
cylindrical and rectangular features and has also been done for hexagonal and
FCC opal systems. Caution should be exercised in using this variable as it can
lead to large data matrices.
ASPECT: Cell aspect ratio.
Used in setting up cells that do not have unitary aspect ratios. Aspect ratio is
defined as XCELLSIZE / ZCELLSIZE. This is especially useful for setting up super
cell lattices for the study of localized defects. Caution: The XSIZE and ZSIZE
discretisation mesh ratio should mirror the ASPECT ratio to ensure that the
inter-mesh spacing in the X and Z directions remains the same. Some of the
pre-defined systems code this automatically, but by no means all.
DEFECTR/A: Controlling the defects.
Ratio of the Radius to the Lattice Spacing A. (RADIUS/SPACING) This is used to
set the size of the features within a unit cell. For the case of bars, ROVERA
results in an evaluation of RADIUS, and the bar width is set to 2*RADIUS.
Alternate shapes and defects can be achieved through alteration of template
file(s).
ROVERA: Controlling the element size.
See DEFECTR/A above, the only difference being that the ROVERA parameter defines
FIXERADIUS, which is applied to every feature within the shape if there are no
defects present. Similar conditions hold for bars.
COATING
Expressed in fractional percentage, i.e. 0.10 is 10%, this controls the coating
that is applied to the feature, be it a cylinder or sphere. The coating will
only be applied if the logical switch COAT within the source routines definebar(*).f
is set.true. (see Coatings)
SINTERING
Expressed in fractional percentage, i.e. 0.20 is 20%, this controls the coating
that is applied to the feature, be it a cylinder or sphere. The effect of
sintering has been introduced to facilitate the definition of Opal photonic
crystals and therefore is highly structure dependent, therefore caution should
be exercised as for many structures it serves no purpose.
Cell Parameters:
NOOFCELLS,
NOOFBLOCKS,
STARTBAR,
NOOFBARS,
NOOFSINGLES, for the cell,
NOOFDOUBLES, for the cell,
Block Parameters:
BLOCKSTART,
BLOCKSTOP,
NOOFSINGLES, for the block,
NOOFDOUBLES, for the block.
The response of a crystal is obtained by propagating through the cells and
blocks that make up the crystal. The system of cells and blocks is powerful,
allowing relatively complex crystals to be generated with a relative amount of
ease.
1 2 3 4 5 6 7 8 9 10 o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o |
Cell 1 2 3 o o o o o o o o o o o |
The above system can be built with three cells, to create the above crystal the configuration within control file <control.dat> would be as follows:
NOOFCELLS = 3
NOOFBLOCKS = 0
c
STARTBAR(1) = 38 (arbitrary choice, example only)
NOOFBARS(1) = 4
NOOFSINGLES = 1
NOOFDOUBLES = 2
c
STARTBAR(2) = 38 (arbitrary choice, example only)
NOOFBARS(2) = 3 (one less than cell 1 & 3 creates defect)
NOOOFSINGLES = 0
NOOFDOUBLES = 0
c
STARTBAR(3) = 38 (arbitrary choice, example only)
NOOFBARS(3) = 4
NOOFSINGLES = 0
NOOFDOUBLES = 2
NOTE: Only four features are required per unit cell as the code
automatically wraps the cells in the vertical direction.
For the first cell we require five layers. This is achieved by a two layer
doubling and then the addition of a single layer. The layer doubling system
works to the power of two, i.e., two layer doublings means 2**2=4, three 2**3=8
etc. The number of singles simply adds an extra layer. Therefore for five layers
2**2+1=5.
For the second cell we do not want to add any extra layers or double the
response for the cell, therefore both NOOFDOUBLES and NOOFSINGLES for cell
number two are set to zero. For the third and final cell we require four layers;
NOOFDOUBLES = 2, NOOFSINGLES = 0.
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o |
Cell 1 2 3 4 5 o o o o o o o o o |
Would be represented within the <control.dat> file as follows:
NOOFCELLS = 5
NOOFBLOCKS = 1
c
STARTBAR(1) = 38 (arbitrary choice, example only)
NOOFBARS(1) = 2
NOOFSINGLES = 0
NOOFDOUBLES = 0
c
STARTBAR(2) = 38 (arbitrary choice, example only)
NOOFBARS(2) = 2
NOOFSINGLES = 0
NOOFDOUBLES = 0
c
STARTBAR(3) = 38 (arbitrary choice, example only)
NOOFBARS(3) = 1 (one less than others creates defect)
NOOFSINGLES = 0
NOOFDOUBLES = 0
c
STARTBAR(4) = 38 (arbitrary choice, example only)
NOOFBARS(4) = 2
NOOFSINGLES = 0
NOOFDOUBLES = 0
c
STARTBAR(5) = 38 (arbitrary choice, example only)
NOOFBARS(5) = 2
NOOFSINGLES = 0
NOOFDOUBLES = 0
c
1BLOCKSTART = 2 Cell number to define start of block.
1BLOCKSTOP = 4 Cell number to define end of block.
NOOFSINGLES = 2 No. of times to double block.
NOOFDOUBLES = 2 No. of times to add a single block.
At present the coating control is kept at a structure definition level. At present the user must edit the <definebar(*).f> sections of code to apply the coating settings. This is due to the fact that a coating can be applied to a particular feature of a cell, global control of this aspect of the code would result in all features being coated. The dielectric constant, thickness of the coating upon the original feature, actual dimensions and position of the feature within the cell can all be controlled to ease the fabrication of complex cells. Over time a powerful library of cells will be available covering most commonly used lattices and structures while facilitating the simple addition of new cells and their features. At present there are many features defined within the libraries, defining elementary square lattices, hexagonal lattices, woodpile systems and two approaches for modelling the FCC lattice for cylinders bars and spheres.
The following visualization is for a simple two dimensional cylindrical
structure. It shows a set of cylinders that have no overlapping areas, the
centre column of cylinders have different dimensions to the others. For this
example shown in Figure 1.8 the cylinders have a dielectric constant
of and have been coated with a dielectric material . While these systems
maybe hard to fabricate in reality the visualization demonstrate the capability
of the code.
File Format: Sample
Frequency | 1 Layer | 2 Layers | 4 Layers | Kx Angle | Ky Angle | Filling Ratio | Counter |
0.010000000000000 | -0.9623395727E-01 | -0.3646502536E+00 | -0.1657559262E+01 | 0.00000 | 0.00000 | 0.33300E+00 | 1 |
0.012450000000000 | -0.1475769739E+00 | -0.5438863961E+00 | -0.2160867201E+01 | 0.00000 | 0.00000 | 0.33300E+00 | 1 |
0.014900000000000 | -0.2086666737E+00 | -0.7446836336E+00 | -0.2561814898E+01 | 0.00000 | 0.00000 | 0.33300E+00 | 1 |
0.017350000000000 | -0.2787171905E+00 | -0.9596262147E+00 | -0.2833547142E+01 | 0.00000 | 0.00000 | 0.33300E+00 | 1 |
0.019800000000000 | -0.3568626772E+00 | -0.1181763281E+01 | -0.2962723003E+01 | 0.00000 | 0.00000 | 0.33300E+00 | 1 |
0.022250000000000 | -0.4421801540E+00 | -0.1404873259E+01 | -0.2944199615E+01 | 0.00000 | 0.00000 | 0.33300E+00 | 1 |
0.024700000000000 | -0.5337115887E+00 | -0.1623585178E+01 | -0.2778708134E+01 | 0.00000 | 0.00000 | 0.33300E+00 | 1 |
0.027150000000000 | -0.6304843260E+00 | -0.1833393859E+01 | -0.2473181549E+01 | 0.00000 | 0.00000 | 0.33300E+00 | 1 |
0.029600000000000 | -0.7315292273E+00 | -0.2030607041E+01 | -0.2043786728E+01 | 0.00000 | 0.00000 | 0.33300E+00 | 1 |
0.032050000000000 | -0.8358961302E+00 | -0.2212256050E+01 | -0.1522003548E+01 | 0.00000 | 0.00000 | 0.33300E+00 | 1 |
In the above example a simple crystal with either one cell or one block has been analysed for several layer thicknesses. The transmission coefficient has been set to dB. The output file lists the frequency in the first column, either normalized or in Hz depending on the code settings. There after there can be a variable number of columns related to the crystal thickness. The pattern is always the same 1,2,4,8,16,32.... until the last column which has the total crystal thickness. For example if you want 10 periods of your crystal you would set up the layer doublings to 3, 2**3=8 and then the singles to be 2 such that 8+2=10. The output file would then have the data related to 1,2,4,10 layers in the file !!!
The Kx and Ky angle are expressed either in degrees or in k-vector, it's easiest to work in degrees !! Note that the k-vector scales with the reference medium settings which is the technique used to observe omnidirectional reflectance in Bragg stacks. Try the Bragg stack default systems in the code and look at the control file to see how they have been set up.
The filling ratio is not always defined, it just depends on whether I have set one for a particular structure, don't assume that it is always correct ! Finally the counter is used when loops are introduced into the code, for the moment it can be ignored !
References
[1]. Photonic Crystals: Moulding the flow of light, J.D.Joannopoulos.
|