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.
The 14C-based data set scaled to the CMIP6 historical forcing is the recommended forcing for the PMIP4-CMIP6 tier-1 past1000 experiment.
SSI_<type>_cycle_yearly_cmip_v20160613_<scaling>.txt
type
= 14C
or 10Be
scaling
=fc
: adaptation of the spectral irradiance to the CMIP6 historical forcingnfc
: no re-scalingBe 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:
[ 115.5, 116.5, 117.5, 118.5, 119.5, […] 100000.0078125 , 120000.0234375 , 140000.015625 , 160000.015625 ]
[ 1., 1., 1., 1. […] 40., 5010., 14990.00488281, 20000.00585938, 20000., 20000., 20000.00585938, 20000.00585938, 20000., 20000. ]
[-6754.5, -6753.5, -6752.5, -6751.5, […] 2015.98632812, 2015.98901367, 2015.99182129, 2015.99450684, 2015.99731445]
[885.5, 886.5, 887.5, 888.5, […] 2015.986, 2015.989, 2015.992,
2015.995, 2015.997]
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]) ;=====================================================
# 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)
# 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)
>>> 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)
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 |