The question:

What is the Sellmeier description of the refractive index of air at some reasonable temperature, pressure, and water content? The description must be in the following form:$$ n^2(\lambda) = 1 + \frac{B_1\lambda^2}{\lambda^2-C_1} + \frac{B_2\lambda^2}{\lambda^2-C_2} + \cdots $$

Based on this discussion, it seems that the refractive index of air is well-described by for example "Dispersion of air" (1972), by Peck and Reeder. As far as I can tell, that original paper is behind a paywall, but is used in this paper (page 2,767). The problem is that the equation used is not in the above form--mainly the equation can be rearranged for $n$, not $n^2$.

Data on refractiveindex.info (from Ciddor?) has the same problem.

Is there more modern data in the above form?


2 Answers 2


Two things that might help you.

Finding Sellmeier Co-efficients

Firstly, although the refractive index formulas you cite are not in the Sellmeier form, they are in the form:

$$n(\lambda) = 1+\delta(\lambda) = 1+\sum_j\frac{K_j\,\lambda^2}{\lambda^2 - L_j}$$

where $\delta(\lambda) = \sum_j\frac{K_j\,\lambda^2}{\lambda^2 - L_j}$ is VERY small. So, squaring the equation

$$n(\lambda)^2 = 1+2\,\sum_j\frac{K_j\,\lambda^2}{\lambda^2 - L_j} + \left(\sum_j\frac{K_j\,\lambda^2}{\lambda^2 - L_j}\right)^2 \approx 1+2\,\sum_j\frac{K_j\,\lambda^2}{\lambda^2 - L_j}$$

and then to an excellent approximation you have, in your notation, $B_j \approx 2 K_j;\,L_j \approx C_j$. The error in the formula will be of the order of $10^{-16}$ since $\delta(\lambda)$ is of the order of $10^{-8}$.

So now you take these approximate values and put them into your optimisation routine to adjust for hopefully greater accuracy. I hate to say it, but actually I find the "solver" in Microsoft Excel pretty good at finding Sellmeier co-efficients, particularly if you begin with a good guess (which you are doing here).

2 Air Refractive Index Conventions

When you are working to the precision you seem to need, you need to be EXTREMELY careful of what exactly the refractive index data you find mean. It's pretty clear that the refractive index data on the NIST site or Ciddor are true refractive index data. But if you're calculating refraction between air and some optical glass, then you need to be aware of the following kooky optical designer's convention: Air at 25C and 101325Pa is, as far as optical glass manufacturer's specifications are concerned DEFINED to have a "refractive index" of precisely 1. So to find the physicist's definition of refractive index of optical glass, you need to multiply the manufacturer's Sellmeier formula by the true refractive index of air. This is truly kooky I know, but it has its roots in nineteenth century industry. If you use one of the commercial optical design programs, you find it will tell you a Sellmeier formula for the vacuum, in keeping with this kooky convention. For example, if I ask the software Zemax what the characteristics of the vacuum are, it will tell me it has a refractive index of 0.99973 and an Abbe number of 89.2.

  • $\begingroup$ +1 for the help. The squaring also generalizes to more than one term, and then just taking the lowest-order terms. I didn't know that about optical-glass manufacturers using precisely 1! The fact that a nonconstant Sellmeier formula exists for a perfect vacuum makes me unhappy. $\endgroup$
    – geometrian
    Oct 22, 2014 at 17:28
  • $\begingroup$ @GraphicsResearch It's not universally like this: I'm simply saying be very careful. With air it shouldn't be a problem: if its RI differs from 1 at 25C 101325Pa, then you are being given its true RI. The NIST calculator gives a true value, for example. Almost all the optical glasses, however, will be specified in the kooky scheme: I haven't checked what the refractiveindex.info does: I guess I should sometim (most of the systems I design are less than a few millimetres in dimension, so the index differences concerned do not in general worry me). $\endgroup$ Oct 22, 2014 at 21:41

One approach is to try to use the original model as a ground truth and then redo the match to the desired form. I tried to do this in MATLAB:

xs = 360.0 : 1.0 : 830.0;
ys = 1 + 0.05792105./(238.0185-1.0./(xs.*xs)) + 0.00167917./(57.362-1.0./(xs.*xs));

But, quality software that it is, it reliably crashed. So, I wrote my own nonlinear least squares tool using Eigen (this was quite useful). It produces this output, with $10$ data points:$$ B_1 = 4.334446 \cdot 10^{-4}\\ C_1 = 3.470339 \cdot 10^{-3}\\ B_2 = 1.118728 \cdot 10^{-4}\\ C_2 = 1.394001 \cdot 10^{-2}\\ $$If you plot the two:

plot y=1+0.05792105/(238.0185-x^-2)+0.00167917/(57.362-x^-2); y=sqrt(1+4.334446e-4 x^2/(x^2-3.470339e-3)+1.118728e-4 x^2/(x^2-1.394001e-2)); x=0.2 to 1.7

The difference is minuscule (around $1\cdot10^{-9}$) over the range, but diverging rapidly at endpoints. Redoing the calculation using three terms and $10{,}000$ datapoints produces:$$ B_1 = 4.915889 \cdot 10^{-4}\\ C_1 = 4.352140 \cdot 10^{-3}\\ B_2 = 5.368273 \cdot 10^{-5}\\ C_2 = 1.747001 \cdot 10^{-2}\\ B_3 = -1.949567 \cdot 10^{-4}\\ C_3 = 4.258444 \cdot 10^{3}\\ $$The plot:

plot y=1+0.05792105/(238.0185-x^-2)+0.00167917/(57.362-x^-2); y=sqrt(1+4.915889e-4 x^2/(x^2-4.352140e-3)+5.368273e-5 x^2/(x^2-1.747001e-2)-1.949567e-4 x^2/(x^2-4.258444e3)); x=0.2 to 1.7

The difference is very small (around $4\cdot10^{-8}$) over the range, but more stable.

If anyone has better, real data, I'll unchoose this answer and choose that one instead.


Not the answer you're looking for? Browse other questions tagged or ask your own question.