<p>Thanks to @PearsonArtPhoto's <a href="https://astronomy.stackexchange.com/questions/32558/where-can-i-find-a-good-solar-irradiance-chart-for-the-infrared?noredirect=1#comment60008_32558">comment</a> data with 1 cm^-1 wavenumber resolution is available in the link labeled <code>MODTRAN data</code> here: <a href="https://www.nrel.gov/grid/solar-resource/spectra.html" rel="nofollow noreferrer">https://www.nrel.gov/grid/solar-resource/spectra.html</a></p>

<p>Here's a quickie plot and script for the downloaded ASCII data.</p>

<p>There are six columns of spectral intensity data (Watts/m^2/nm) with labels 'MCebKur', 'MChKur', 'MNewKur', 'MthKur', 'MoldKur', 'MODWherli_WMO'. The plot shows them to be very similar in the thermal IR (not surprising) and differ substantially in the visible and UV where differences in the spectrometers will show up in the region rich with spectral emission and absorption lines. This is illustrated in the second plot, showing a randomly chosen zoom in on a few nanometers of visible light, and the Fraunhofer "A" line.</p>

<p><img src="https://i.sstatic.net/0haxz.png" alt="MODTRAN data"></p>

<p><img src="https://i.sstatic.net/LVUBE.png" alt="MODTRAN data"></p>

<pre><code>import numpy as np
import matplotlib.pyplot as plt

fname = 'AllMODEtr MODTRAN.txt' # MODTRAN data https://www.nrel.gov/grid/solar-resource/spectra.html

with open (fname, 'r') as infile:
    lines = infile.readlines()

lines = [line.split() for line in lines[19:-1]] # skip a few lines with missing data

print('line lengths: ', set([len(line) for line in lines]))

data = [[float(x) for x in line] for line in lines]

data = np.array(zip(*data))

print('data.shape: ', data.shape)

# data[0]: wavenumber (cm^-1)
# data[1]: wavelength (nm)
# data[2:8] MCebKur, MChKur, MNewKur, MthKur, MoldKur, MODWherli_WMO        

labels = 'MCebKur', 'MChKur', 'MNewKur', 'MthKur', 'MoldKur', 'MODWherli_WMO'
wavelength = data[1]

if True:
    plt.figure()

    plt.subplot(2, 1, 1)

    for (thing, label) in zip(data[2:], labels):
        plt.plot(wavelength, thing)
    plt.xlabel('wavelength (nm)', fontsize=16)
    plt.ylabel('Watts/m^2/nm', fontsize=16)
    plt.yscale('log')
    plt.xscale('log')
    plt.xlim(190, 2E+05)

    plt.subplot(2, 1, 2)

    n700 = np.argmax(wavelength &gt; 700)
    for (thing, label) in zip(data[2:], labels):
        plt.plot(wavelength[:n700], thing[:n700])
    plt.xlabel('wavelength (nm)', fontsize=16)
    plt.ylabel('Watts/m^2/nm', fontsize=16)
    plt.yscale('log')
    # plt.xscale('log')
    plt.xlim(190, wavelength[n700])

    plt.show()


if True:
    plt.figure()

    plt.subplot(2, 1, 1)

    n1 = np.argmax(wavelength &gt; 516.5)
    n2 = np.argmax(wavelength &gt; 519.5)
    for (thing, label) in zip(data[2:], labels):
        plt.plot(wavelength[n1:n2], thing[n1:n2], label=label)
    plt.xlabel('wavelength (nm)', fontsize=16)
    plt.ylabel('Watts/m^2/nm', fontsize=16)
    # plt.yscale('log')
    # plt.xscale('log')
    plt.xlim(wavelength[n1], wavelength[n2])
    # plt.legend()

    plt.subplot(2, 1, 2)

    n1 = np.argmax(wavelength &gt; 757)
    n2 = np.argmax(wavelength &gt; 760)
    for (thing, label) in zip(data[2:], labels):
        plt.plot(wavelength[n1:n2], thing[n1:n2], label=label)
    plt.xlabel('wavelength (nm)', fontsize=16)
    plt.ylabel('Watts/m^2/nm', fontsize=16)
    # plt.yscale('log')
    # plt.xscale('log')
    plt.xlim(wavelength[n1], wavelength[n2])
    plt.title('Fraunhoffer "A" line')
    # plt.legend()

    plt.show()
</code></pre>

CC BY-SA 4.0
2019-07-07T04:20:21.243Z
2019-07-07T04:31:10.153Z
2019-07-07T04:31:10.153Z
uhoh
<p>I'm trying to understand the results of the ExoMars Trace Gas Orbiter vs the Mars Express in terms of their abilities to find methane on the surface of Mars. The solution that I'm coming to is that it might be a result of the Sun's spectra masking what is actually there. Is there a place that has a complete infrared spectra of the Sun, focusing in on the region around 3-4 um? Specifically, I'm interested in wave numbers (<span class="math-container">$cm^{-1}$</span>) 3000-3100 or so, something with a resolution of 1 wave number. Some things that would help would be anything along the following lines, so long as they apply to the true spectra, and not the one as seen from Earth.</p>

<ol>
<li>A generally accepted solar spectra (NASA, ESA, NIST, or some other body)</li>
<li>A time varying solar spectra.</li>
</ol>

<p>Thanks!</p>

CC BY-SA 4.0
2019-07-07T03:07:44.553Z
Links to data and a script in [this answer](https://space.stackexchange.com/a/35681/12102), use "extraterrestrial" data for above the atmosphere. It doesn't have the granularity you need (steps are about 5 cm^-1 at 3 microns) but it's a start.
uhoh
CC BY-SA 4.0
2019-07-07T03:19:38.703Z
more reading on ASTM G197 here: https://cdn.ymaws.com/www.nfrccommunity.org/resource/collection/D60BEDFE-E54A-462F-9FA2-59693434DAC0/ASTM_G197-08.pdf
uhoh
CC BY-SA 4.0
2019-07-07T03:20:41.383Z
https://www.nrel.gov/grid/solar-resource/spectra.html MODTRAN data seems to be what I'm looking for, thanks for pointing me in the direction! Feel free to submit an answer up based on this, it looks right!
PearsonArtPhoto
<the-sun><spectroscopy><spectra><infrared>
Where can I find a good solar irradiance chart for the infrared?
PearsonArtPhoto
# Where can I find a good solar irradiance chart for the infrared?

(Asked by: username_0 on 2019-07-06)

I'm trying to understand the results of the ExoMars Trace Gas Orbiter vs the Mars Express in terms of their abilities to find methane on the surface of Mars. The solution that I'm coming to is that it might be a result of the Sun's spectra masking what is actually there. Is there a place that has a complete infrared spectra of the Sun, focusing in on the region around 3-4 um? Specifically, I'm interested in wave numbers ($cm^{-1}$) 3000-3100 or so, something with a resolution of 1 wave number. Some things that would help would be anything along the following lines, so long as they apply to the true spectra, and not the one as seen from Earth.

1. A generally accepted solar spectra (NASA, ESA, NIST, or some other body)
2. A time varying solar spectra.

Thanks!

**Tags:** the-sun, spectroscopy, spectra, infrared

> **Comments:**
> **username_1**: Links to data and a script in [this answer](https://space.stackexchange.com/a/35681/12102), use "extraterrestrial" data for above the atmosphere. It doesn't have the granularity you need (steps are about 5 cm^-1 at 3 microns) but it's a start.  
> **username_1**: more reading on ASTM G197 here: https://cdn.ymaws.com/www.nfrccommunity.org/resource/collection/D60BEDFE-E54A-462F-9FA2-59693434DAC0/ASTM_G197-08.pdf  
> **username_0**: https://www.nrel.gov/grid/solar-resource/spectra.html MODTRAN data seems to be what I'm looking for, thanks for pointing me in the direction! Feel free to submit an answer up based on this, it looks right!  

---

## 1 answers

### Answer by username_1 on 2019-07-07. Score: 1 | Accepted answer

Thanks to @username_0's comment data with 1 cm^-1 wavenumber resolution is available in the link labeled MODTRAN data here: https://www.nrel.gov/grid/solar-resource/spectra.html
Here's a quickie plot and script for the downloaded ASCII data.
There are six columns of spectral intensity data (Watts/m^2/nm) with labels 'MCebKur', 'MChKur', 'MNewKur', 'MthKur', 'MoldKur', 'MODWherli_WMO'. The plot shows them to be very similar in the thermal IR (not surprising) and differ substantially in the visible and UV where differences in the spectrometers will show up in the region rich with spectral emission and absorption lines. This is illustrated in the second plot, showing a randomly chosen zoom in on a few nanometers of visible light, and the Fraunhofer "A" line.


import numpy as np
import matplotlib.pyplot as plt

fname = 'AllMODEtr MODTRAN.txt' # MODTRAN data https://www.nrel.gov/grid/solar-resource/spectra.html

with open (fname, 'r') as infile:
    lines = infile.readlines()

lines = [line.split() for line in lines[19:-1]] # skip a few lines with missing data

print('line lengths: ', set([len(line) for line in lines]))

data = [[float(x) for x in line] for line in lines]

data = np.array(zip(*data))

print('data.shape: ', data.shape)

# data[0]: wavenumber (cm^-1)
# data[1]: wavelength (nm)
# data[2:8] MCebKur, MChKur, MNewKur, MthKur, MoldKur, MODWherli_WMO        

labels = 'MCebKur', 'MChKur', 'MNewKur', 'MthKur', 'MoldKur', 'MODWherli_WMO'
wavelength = data[1]

if True:
    plt.figure()

    plt.subplot(2, 1, 1)

    for (thing, label) in zip(data[2:], labels):
        plt.plot(wavelength, thing)
    plt.xlabel('wavelength (nm)', fontsize=16)
    plt.ylabel('Watts/m^2/nm', fontsize=16)
    plt.yscale('log')
    plt.xscale('log')
    plt.xlim(190, 2E+05)

    plt.subplot(2, 1, 2)

    n700 = np.argmax(wavelength > 700)
    for (thing, label) in zip(data[2:], labels):
        plt.plot(wavelength[:n700], thing[:n700])
    plt.xlabel('wavelength (nm)', fontsize=16)
    plt.ylabel('Watts/m^2/nm', fontsize=16)
    plt.yscale('log')
    # plt.xscale('log')
    plt.xlim(190, wavelength[n700])

    plt.show()


if True:
    plt.figure()

    plt.subplot(2, 1, 1)

    n1 = np.argmax(wavelength > 516.5)
    n2 = np.argmax(wavelength > 519.5)
    for (thing, label) in zip(data[2:], labels):
        plt.plot(wavelength[n1:n2], thing[n1:n2], label=label)
    plt.xlabel('wavelength (nm)', fontsize=16)
    plt.ylabel('Watts/m^2/nm', fontsize=16)
    # plt.yscale('log')
    # plt.xscale('log')
    plt.xlim(wavelength[n1], wavelength[n2])
    # plt.legend()

    plt.subplot(2, 1, 2)

    n1 = np.argmax(wavelength > 757)
    n2 = np.argmax(wavelength > 760)
    for (thing, label) in zip(data[2:], labels):
        plt.plot(wavelength[n1:n2], thing[n1:n2], label=label)
    plt.xlabel('wavelength (nm)', fontsize=16)
    plt.ylabel('Watts/m^2/nm', fontsize=16)
    # plt.yscale('log')
    # plt.xscale('log')
    plt.xlim(wavelength[n1], wavelength[n2])
    plt.title('Fraunhoffer "A" line')
    # plt.legend()

    plt.show()


---

