refractive index curve for cobalt http://people.csail.mit.edu/jaffer/FreeSnell/nk.html

FreeSnell: Refractive Index Spectra


FreeSnell is a program to compute optical properties of multilayer thin-film coatings.

Spectral data may be given in terms of wavelength, photon energy, frequency, or wavenumber. The real part of each spectral refractive-index value is n; the imaginary part (extinction coefficient) is k.

Parametric Data

Where the refractive-index of a dielectric materials is purely real (k=0), sometimes the index-of-refraction is specified as a formula of wavelength. The Refractive index database at http://refractiveindex.info gives a formula for the refractive-index of the plastic PMMA over the range 0.4358.um to 1.052.um. We can encode its formula as a Scheme function:
(require 'FreeSnell)
;; n^2 = C1 + C2*wl^2 + C3*wl^-2 + C4*wl^-4 + C5*wl^-6 + C6*wl^-8
(define PMMA
  (let ((C1 2.399964)
        (C2 -8.308636E-2)
        (C3 -1.919569E-1)
        (C4 8.720608E-2)
        (C5 -1.666411E-2)
        (C6 1.169519E-3))
    (lambda (w)                         ; wavelength in meters
      ;; wavelength in microns and limited to valid range
      (let* ((wl (max 0.4358 (min 1.052 (* w 1e6))))
             (wl^-2 (/ 1 wl wl)))
        (sqrt (+ C1
                 (* C2 wl wl)
                 (* (+ C3 (* (+ C4 (* (+ C5 (* C6
                                               wl^-2))
                                      wl^-2))
                             wl^-2))
                    wl^-2)))))))

(define (pmma-n)
  (plot-response
   (title "PMMA" "pmma")
   (output-format 'png 495 258)
   (font 14 "88888+00.8880" "10")
   (IR PMMA 'real)
   (wavelengths 0.4358e-6 1.052e-6)))
(pmma-n)
The bottom half of this program graphs PMMA's index-of-refraction, which agrees with the plot from the Refractive index database.

Refractive index database
FreeSnell


Tabular Data

Note: With recent releases of FreeSnell (version 1b4 or later), the relational database containing the Sopra and metal spectra is included in the distribution. So installing the nk script is optional.

The nk program is used to create, manage, and query a refractive-index spectra database. The nk program can read Sopra format files with a ".nk" suffix. Some metal spectra included with FreeSnell also have a ".nk" suffix, but with a different format which the nk program also understands.

A bundle of spectra for 278 materials is available from: http://www.sopra-sa.com/more/database.asp (Nov 28, 2000).

A slightly different dataset is available from the GranFilm website as http://folk.ntnu.no/ingves/Software/GranularFilm/Download/Dielectric.tgz, or http://folk.ntnu.no/ingves/Software/GranularFilm/Download/Dielectric.zip (360.kB). If you use this dataset, then delete "al.nk"; and rename "al1.nk" to "al.nk"

The Software Spectra company also distributes the Sopra data, although rewritten into their proprietary format. But their zip file http://www.sspectra.com/files/misc/win/SOPRA.EXE
(Macintosh http://www.sspectra.com/files/misc/mac/Sopra.sea.hqx)
contains "README.TXT" identifying the Sopra files.

Included with FreeSnell are the following metal spectra from the CRC Handbook of Chemistry and Physics:

ag.nk: eV	n	k	R(th=0) ; Silver
al.nk: eV	n	k	R(th=0) ; Aluminium
au.nk: eV	n	k	R(th=0) ; Gold, electropolished, Au (110)
cr.nk: eV	n	k	R(th=0) ; Chromium
cu.nk: eV	n	k	R(th=0) ; Copper
fe.nk: eV	n	k	R(th=0) ; Iron
ge.nk: eV	n	k	R(th=0) ; Germanium, single crystal
li.nk: eV	n	k	R(th=0) ; Lithium
ni.nk: eV	n	k	R(th=0) ; Nickel
ta.nk: eV	n	k	R(th=0) ; Tantalum
ti.nk: eV	n	k	R(th=0) ; Titanium (Polycrystalline)
v.nk: eV	n	k	R(th=0) ; Vanadium
w.nk: eV	n	k	R(th=0) ; Tungsten
zn-a.nk: eV	n	k	R(th=0) ; Zinc, E || to c^28
zn-b.nk: eV	n	k	R(th=0) ; Zinc, E _|_ to c^28
zr.nk: eV	n	k	R(th=0) ; Zirconium (Polycrystalline)

Many of these materials are included in the Sopra bundle; but the CRC data covers a wider wavelength span than the Sopra spectra. Doing "nk --add" of both the CRC and Sopra files produces wide bandwidth spectra with finer resolution in the visible and near-infrared bands.

Luxpop: Thin film and bulk index of refraction and photonics calculations links to a directory of 425 refractive-index files, mostly X-ray spectra. 51 of the files are concatenations of 105 smaller files. But some of these concatenations have large gaps where the n and k values differ significantly across the gap. So this collection is in need of some curating before incorporation into FreeSnell's database. When all duplicates are removed there are 174 files. H2O.nk is empty.

The infrared data from Luxpop shows that dielectrics (eg. TiO2, Al2O3) having nearly flat n and zero k through the visible range have large and varying k values in the far infrared region. This would appear to be blackbody emissivity (and absorption).

Another potential source of refractive-index spectra is http://www.rpi.edu/~schubert/Educational resources/Materials - refractive index and extinction coefficient.pdf, although the PDF does not facilitate easy extraction of the data.

The nk Script

Note: With recent releases of FreeSnell (version 1b4 or later), the relational database containing the Sopra and metal spectra is included in the distribution. So installing the nk script is optional.
The nk.scm file in the distribution functions as a shell script named nk on Unix systems; under MS-Windows, the nk icon invokes nk.scm as an interactive command-line shell with the prompt "nk".

The optional argument [-F path] (don't type the []) sets the path to the database file to be accessed or created. If it is not given, then the environment variable "NK_DATABASE_PATH" names the database file if defined, defaulting to "nk.rwb" in the current directory. The name for each spectrum in the database is taken from its filename sans the ".nk" or "ir.nk" suffix.

Usage: nk [-F path]
  Starts the nk shell.  Type nk commands without the nk; ^Z to exit.
Usage: nk [-F path] --add FILE.nk ...
  Add spectra named FILE to database.
Usage: nk [-F path] --new FILE.nk ...
  Add new or replace spectra named FILE to database.
Usage: nk [-F path] --del 'GLOB' ...
  Delete spectra of names matching GLOB from database.
Usage: nk [-F path] --plot 'GLOB' ...
Usage: nk [-F path] --lin-lin 'GLOB' ...
Usage: nk [-F path] --log-log 'GLOB' ...
Usage: nk [-F path] --log-lin 'GLOB' ...
Usage: nk [-F path] --lin-log 'GLOB' ...
  Create encapsulated-PostScript (and view with Ghostview) spectra plots
  from database of names matching GLOB.
Usage: nk [-F path] --list 'GLOB' ...
  List names of spectra matching GLOB in database.
Usage: nk [-F path] NAME NUMBER.UNIT ...
  Prints NAME's n+k*i values at each NUMBER.UNIT from database.  The
  NUMBER can be fixed or floating point; the UNIT either "eV"
  (electron-volt) or "m" (meter) with an optional metric prefix or
  "cm^-1" (wave-number).

Examples

The procedure to create this database is:

bash$ nk --add *.nk Sopra/*.nk
ag.nk: ev	n	k	R(th=0) ; Silver
al.nk: ev	n	k	R(th=0)	; Aluminium
au.nk: ev	n	k	R(th=0) ; Gold, electropolished, Au (110)
cr.nk: ev	n	k	R(th=0) ; Chromium
cu.nk: ev	n	k	R(th=0)	; Copper
fe.nk: ev	n	k	R(th=0) ; Iron
ge.nk: ev	n	k	R(th=0) ; Germanium, single crystal
li.nk: ev	n	k	R(th=0) ; Lithium
ni.nk: ev	n	k	R(th=0) ; Nickel
ta.nk: ev	n	k	R(th=0) ; Tantalum
ti.nk: ev	n	k	R(th=0) ; Titanium (Polycrystalline)
v.nk: ev	n	k	R(th=0) ; Vanadium
w.nk: ev	n	k	R(th=0) ; Tungsten
zn-a.nk: ev	n	k	R(th=0) ; Zinc, E || to c^28
zn-b.nk: ev	n	k	R(th=0) ; Zinc, E _|_ to c^28
zr.nk: ev	n	k	R(th=0) ; Zirconium (Polycrystalline)
Sopra/7059.nk: 0.25.um :: 0.85.um
Sopra/ag.nk: 0.6.ev :: 6.6.ev
Sopra/againp0.nk: 0.225.um :: 1.um
Sopra/againp1.nk: 0.225.um :: 1.um
Sopra/againp10.nk: 0.225.um :: 1.um
Sopra/againp3.nk: 0.225.um :: 1.um
Sopra/againp6.nk: 0.225.um :: 1.um
Sopra/againp7.nk: 0.225.um :: 1.um
Sopra/al.nk: 0.5.ev :: 6.75.ev
...
Sopra/zro2.nk: 0.25.um :: 0.85.um
Sopra/zrsi2.nk: 1.8.ev :: 3.ev
bash$ nk --list
7059        ag          againp0     againp1     againp10    againp3
againp6     againp7     al          al2o3       al2o3p      alas
alas028t    alas052t    alas072t    alas098t    alas125t    alas152t
alas178t    alas204t    alas228t    alas305t    alas331t    alas361t
alas390t    alas421t    alas445t    alas469t    alas499t    alas527t
alas552t    alas578t    alas602t    alas626t    alcu        algaas0
algaas1     algaas10    algaas2     algaas3     algaas4     algaas5
algaas6     algaas7     algaas8     algaas9     alon        alsb
alsi        alsiti      arachi      asi         au          baf2
bk7         bk7_abs     blackbody   caf2        carbam      ccl4
cdse        cdte        co          co_2        cor7059     cosi2-4
cr          cr3si       cr5si3      crsi2el2    cu          cu2o
cuo         diam        fe          fesi2el1    fesi2el2    fesi2epi
gaas        gaas031t    gaas041t    gaas060t    gaas081t    gaas100
gaas103t    gaas111     gaas126t    gaas150t    gaas175t    gaas199t
gaas224t    gaas249t    gaas273t    gaas297t    gaas320t    gaas344t
gaas367t    gaas391t    gaas415t    gaas443t    gaas465t    gaas488t
gaas515t    gaas546t    gaas579t    gaas603t    gaas634t    gaaso
gaasox      gan-tit     gan-uv      gan01       gan02       gan03
gan60       gan70       gap         gap100      gapox       gasb
gasbox      ge          ge100       h2o         hdpe        hfo2
hfsi2       hgcdte0     hgcdte2     hgcdte3     inas        inasox
ingaas      ingasb0     ingasb1     ingasb10    ingasb3     ingasb5
ingasb7     ingasb9     inp         inpox       insb        insbox
ir          ir3si5e     ir3si5p     ito2        kcl         lasf9
li          lif         mgf2        mgo         mo          mosi2-a
mosi2-b     nbsi-a      nbsi-b      ni          ni2si       ni3si
nisi        os          p_sias      p_siud      pbs         pbse
pd          pd2si-a     pd2si-b     pt          resi1-75    resige0
resige1     resige22    resige39    resige51    resige64    resige75
resige83    resige91    rh          ringas0     ringas10    ringas20
ringas24    se-a        se-b        sf11        si          si100_2
si110       si111       si11ge89    si20ge80    si28ge72    si3n4
si65ge35    si85ge15    si98ge02    siam1       siam2       sic
sicr        sicr-t02    sicr-t10    sicr-t15    sicr-t20    sicr-t25
sicr-t30    sicr-t35    sicr-t40    sicr-t45    sige_ge     sige_si
sin_bf5     singas0     singas10    singas20    singas24    sio
sio2        sion0       sion20      sion40      sion60      sion80
siop        sipoly      sipoly10    sipoly20    sipoly30    sipoly40
sipoly50    sipoly60    sipoly70    sipoly80    sipoly90    sipore
stsg0       stsg064     stsg123     stsg169     stsg229     ta
taox1       taox2       tasi2-a     tasi2-b     te-a        te-b
test        thf4        ti          tini        tio2        tio2b
tisi-a      v           void        vsi2-a      vsi2-b      w
wsi2-a      wsi2-b      y2o3        zn-a        zn-b        zncdte0
zncdte1     zncdte10    zncdte3     zncdte5     zncdte7     zncdte9
znscub      znse        znsete0     znsete1     znsete10    znsete3
znsete5     znsete7     znsete9     zr          zro2        zrsi2
bash$ nk --plot co

bash$ nk co .3.um .5.um 1.3.eV
co: 1.218+2.11i @ 300.nm (4.13.eV) (33333.3.cm^-1)
co: 2.025+3.72i @ 500.nm (2.48.eV) (20000.cm^-1)
co: 3.85+4.77i @ (954.nm) 1.3.eV (10485.2.cm^-1)
bash$ nk Al 400.cm^-1
al: 75.77+1.7e+02i @ (25.0.um) (0.0496.eV) 400.cm^-1

The next section tests FreeSnell's modeling of dielectric films.

Copyright © 2003, 2004, 2005, 2006, 2007, 2009 Aubrey Jaffer

I am a guest and not a member of the MIT Computer Science and Artificial Intelligence Laboratory.  My actions and comments do not reflect in any way on MIT.
FreeSnell
agj @ alum.mit.edu
Go Figure!