PMIP4 SATIRE-M solar forcing data

The files contain Solar Spectral Irradiance (SSI) reconstruction based on 14C or 10Be and the SATIRE-M model, with and without an adaptation of the spectral irradiance to the CMIP6 historical forcing.

  • 14C data for the last 9000 years (6754.5 BC to December 2015)
  • 10Be data for the years 885 CE to December 2015
  • In both cases, the data is daily, starting on January 1st 1850, and yearly before

The 14C-based data set scaled to the CMIP6 historical forcing is the recommended forcing for the PMIP4-CMIP6 tier-1 past1000 experiment.

Data files

  • file names = SSI_<type>_cycle_yearly_cmip_v20160613_<scaling>.txt
    • type = 14C or 10Be
    • scaling =
      • fc: adaptation of the spectral irradiance to the CMIP6 historical forcing
      • nfc: no re-scaling

Data format

Be careful when working with the time axis, because the float year values do not really follow time axis and calendar conventions!

The original data files are provided in simple text format, and we also provide the data in netCDF format. The text files' structure is as follows:

  • 1st array: wavelength array in [nm], listing the center of each wavelength bin
    [ 115.5, 116.5, 117.5, 118.5, 119.5, […] 100000.0078125 , 120000.0234375 , 140000.015625 , 160000.015625 ]
  • 2nd array: wavelength bin in [nm], listing the bin width of each wavelength bin
    [ 1., 1., 1., 1. […] 40., 5010., 14990.00488281, 20000.00585938, 20000., 20000., 20000.00585938, 20000.00585938, 20000., 20000. ]
  • 3rd array: time in [year] (floating numbers)
    • 69235 time steps for 14C: [-6754.5, -6753.5, -6752.5, -6751.5, […] 2015.98632812, 2015.98901367, 2015.99182129, 2015.99450684, 2015.99731445]
    • 61595 time steps for 10Be: [885.5, 886.5, 887.5, 888.5, […] 2015.986, 2015.989, 2015.992, 2015.995, 2015.997]
  • 4th array: SSI reconstruction in [W m-2 nm-1]. SSI is average SSI in corresponding bin.

We provide the following IDL and python code to read the .txt file and calculate TSI:

  • ;====================================================
    ;N=69235 for 14C reconstruction
    ;N=61595 for 10Be reconstruction
    header=strarr(12)
    satire_wl=dblarr(1070)
    satire_dwl=dblarr(1070)
    time=dblarr(N)
    SSI=dblarr(1070,N)
     
    openr,1,filename
     readf,1,header
     readf,1,satire_wl
     readf,1,satire_dwl
     readf,1,time
     readf,1,SSI
    close,1
     
    TSI=dblarr(N)
    FOR i=0L,N-1 DO TSI[i]=TOTAL(satire_dwl*SSI[*,i])
    ;=====================================================
  • The following python code shows how to deal with the original compressed text data. You can also check the full python script that was used to generate the netCDF files
    • # Get directly the data from the bz2 compressed file
      file_in = bz2.BZ2File(input_full_path)
       
      # Print the comments at the beginning of the file
      print '\nData file header:'
      for skip_header in range(nb_header_lines):
        hdr = file_in.readline().strip()
        print 'HEADER =>', hdr
       
      # Get the wavelength data (on a single line) and store it in a numpy
      # array
      wl_str = file_in.readline()
      wl = np.array(map(float, wl_str.strip().split()), dtype=np.float32)
       
      # Get the wavelength bins data (on a single line) and store it in a
      # numpy array
      wl_bin_str = file_in.readline()
      wl_bin = np.array(map(float, wl_bin_str.strip().split()), dtype=np.float32)
       
      # Get the years (on a single line) and store them in a numpy array
      year_str = file_in.readline()
      year = np.array(map(float, year_str.strip().split()), dtype=np.float32)
       
      # The rest of the data is the ssi data, with one line for each time
      # steps! Read it in an array
      ssi = np.loadtxt(file_in, dtype=np.float32)
       
      file_in.close()
       
      print '\nSize of the SSI matrix =', ssi.shape
       
      # Compute the TSI
      tsi = np.dot(ssi, wl_bin)
  • The following python example shows how to determine the indices of specific years, before Jan 1850 1st and after. Once you know the indices of Jan 1st and Dec 31st, and if a year is a leap year or not
    •  # 1 value per day, AFTER (and including) Jan 1st 1850
      >>> Jan_01_1850_idx = np.argwhere(year == 1850)[0, 0]
      >>> Jan_01_1851_idx = np.argwhere(year == 1851)[0, 0]
      >>> Jan_01_1850_idx, Jan_01_1851_idx
      (8605, 8970)
      >>> Jan_01_1851_idx - Jan_01_1850_idx
      365
      >>> Dec_31_1850 = Jan_01_1851_idx - 1
      >>> year[Jan_01_1850_idx], year[Dec_31_1850_idx], year[Jan_01_1851_idx]
      (1850.0, 1850.9973, 1851.0)
       
      # 1 value per year, strictly BEFORE Jan 1st 1850
      >>> year_50_idx = np.argwhere(year == 50.5)[0, 0] # DO NOT FORGET to use 'NNN.5' for the year value
      >>> year_50_idx, year[year_50_idx]
      (6805, 50.5)
  • You can use the following if you want to do a weighted average over the time axis
    • >>> time_weights = np.ones((69235,))
      >>> np.argwhere(year == 1850)
      array([[8605]])
      >>> tt[8605]
      1850.0
      >>> year[8604]
      1849.5
      # Note: it would be nicer to assign 366 to leap years below...
      >>> time_weights[:8605] = 365 # Assign 365 to all time steps up to (but excluding) step 8605
      >>> time_weights[8600:8620]
      array([ 365.,  365.,  365.,  365.,  365.,    1.,    1.,    1.,    1.,
                1.,    1.,    1.,    1.,    1.,    1.,    1.,    1.,    1.,
                1.,    1.])
      >>> ssi_average_weighted = np.average(ssi, axis=0, weights=time_weights)

References

  • Baroni, M., and ASTER Team (2015), A new 10Be record recovered from an Antarctic ice core: validity and limitations to record the solar activity, Geophysical Research Abstracts 17, EGU2015-6357
  • Vieira, L.E.A. et al. (2011), Evolution of the solar irradiance during the Holocene, Astron. Astroph., 531, A6, doi:10.1051/0004-6361/201015843
  • Usoskin, I.G. et al. (2014), Evidence for distinct modes of solar activity, Astron. Astrophys., 562, L10, doi:10.1051/004-6361/201423391
  • Usoskin, I.G. et al. (2016), Solar activity during the Holocene: the Hallstatt cycle and its consequence for grand minima and maxima, Astron. Astroph., 587, A150, doi:10.1051/0004-6361/201527295

Download

Once you have downloaded the compressed text data file, you can use the command bzmore to have a quick look at its content without having to uncompress it!

 > bzmore SSI_14C_cycle_yearly_cmip_v20160613_fc.txt.bz2
------> SSI_14C_cycle_yearly_cmip_v20160613_fc.txt.bz2 <------
;
;Solar Spectral Irradiance for last 9 millennia (added solar cycle), 6754.5 BC ~
 12.31.2015
;
;File structure
;1. wavelength: array[1070],nm
;2. wavelength bin: array[1070],nm
;3. year: array[69235], floating number
;   6754.5 BC~1849.5 AD, yearly cadence
;   1,1,1850 ~ 12,31,2015, daily cadence
;4. SSI(wavelength,date): array[1070,69235], W m-2 nm-1
;
; Note: SSI adjusted to CMIP
     115.500     116.500     117.500     118.500     119.500     120.500     121
.500     122.500     123.500 [...]

You will find below a table with all the available data files, and their md5sum checksum (if you want to check that you download was OK, you can just type md5sum file.nc and compare the result to what is displayed in the table).

If you want to download a file, click on the PMIP4 SATIRE-M solar forcing data download link and then on the file you need.

md5sum output Data file Size
636519aa89b472a04748893d6f3ff1b3 SSI_14C_cycle_yearly_cmip_v20160613_fc.txt.bz2
recommended forcing for the PMIP4-CMIP6 tier-1 past1000 experiment
506 Mb
af4d1c36647f094b38fd6d9bc8e6617b SSI_14C_cycle_yearly_cmip_v20160613_fc.nc
recommended forcing for the PMIP4-CMIP6 tier-1 past1000 experiment
283 Mb
86bae35d2cd4d7f2c3dde9ee567d5a87 SSI_14C_cycle_yearly_cmip_v20160613_nfc.txt.bz2 506 Mb
b5639df4fab6cac7d55972d7a066e2b9 SSI_14C_cycle_yearly_cmip_v20160613_nfc.nc 283 Mb
96cdeb6a561f0be6b83e1b45a809f8ad SSI_10Be_cycle_yearly_cmip_v20160613_fc.txt.bz2 450 Mb
1f9075a93e58173281ee11731bdb97e5 SSI_10Be_cycle_yearly_cmip_v20160613_fc.nc 252 Mb
0516a6a073c25365674a004034392130 SSI_10Be_cycle_yearly_cmip_v20160613_nfc.txt.bz2 450 Mb
c2922684c81e839fb07de7017ed0d1f3 SSI_10Be_cycle_yearly_cmip_v20160613_nfc.nc 252 Mb