Radiation#
Instrumentation#
The BCO is equipped with a solar and terrestrial radiation measurement station, comprised of 4 radiation sensors attached to a SOLYS2 sun tracker. The instruments were installed on 2015-03-30 (see note: the data in the catalog switches format on 2015-10-15).

More specifically, the apparatus sits on the top of the BCO container, \(4.5\,\mathrm{m}\) above the ground, or \(21.5\,\mathrm{m}\) above mean sea level
The 4 sensors are as follows:
shaded pyranometer mounted on table of sun tracker for diffuse radiation (CMP21 by Kipp and Zonen),
non-shaded pyranometer mounted on table of sun tracker for diffuse radiation (CMP21 by Kipp and Zonen),
pyranometers measure solar irradiance from a hemispherical field of view diffuse radiation is the portion of incoming shortwave (SW) radiation due to atmospheric scattering
shaded pyrgeometer mounted on table of sun tracker for longwave (LW) radiation (CGR4 by Kipp and Zonen)
pyrheliometer mounted on the side of the sun tracker (CPH1 by Kipp and Zonen) points directly into the sun.
Two sets of 4 sensors are used and exchanged simultaneously approximately every two years.
Set 1: CMP21 #140337, CMP21 #140356, CGR4 #140034 (replaced by 220446), CHP1 #140059 (replaced by 160388)
Set 2: CMP21 #160654, CMP21 #160653, CGR4 #150139, CHP1 #160388
The calibration is done by the DWD in Lindenberg, and the solar irradiance (\(\mathrm{W} \mathrm{m}^{-2}\)), the raw voltages, the sensitivities, and the housing temperatures of each of the 4 sensors are available.
Data Availability#
Note
Until 2015-10-15, the data was recorded in 10-second intervals and only included the processed
radiation readings in \(\mathrm{W} \mathrm{m}^{-2}\) along with the housing temperatures of the 4 sensors.
On 2015-10-15, the instruments began recording data with 1-second time resolution, and the data includes
the two aforementioned fields as well as the raw voltages and corresponding sensitivities recorded by each
of the 4 sensors. This recording configuration is still in use, and the data which is currently available
separates the two configurations into c1 and c2. In the next iteration, or ‘level’ of processing,
these two independent datasets will be merged to provide easier access to a longer time series.
The data is available as .zarr files in the catalog as:
BCO.radiation_c1(2015-03-30 to 2015-10-14)BCO.radiation_c2(2015-10-15 to present)
Sample Plot#
import intake
import matplotlib.pylab as plt
from pvlib import clearsky
from pvlib.location import Location
import pandas as pd
import xarray as xr
cat = intake.open_catalog("https://tcodata.mpimet.mpg.de/catalog.yaml")
ds_rad = cat.BCO.radiation_c2(version=1).to_dask()
# select a few days of interest
subset = ds_rad.sel(time=slice("2016-07-03", "2016-07-05"))
# get clear sky calculated radiation for reference
lat, lon, alt = float(subset.lat), float(subset.lon), float(subset.alt)
bco = Location(lat, lon, 'UTC', alt, name = 'bco')
times = pd.to_datetime(subset.coords['time'].values)
cs = bco.get_clearsky(times).to_xarray().rename({'index': 'time'})
ds_cs = xr.merge([subset, cs])
# plot observed SW vs calculated clear-sky
ds_cs.SWD_global.plot(label='SW from non-shaded pyranometer')
ds_cs.ghi.plot(label='Clear-sky')
plt.legend(loc='upper left')
plt.ylabel('Solar Irradiance [W/m²]')
plt.title('BCO SW radiation vs. clear-sky calculated')
/builds/tco/bco/docs/.venv/lib/python3.12/site-packages/intake_xarray/base.py:21: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.
'dims': dict(self._ds.dims),
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[1], line 22
19 ds_cs = xr.merge([subset, cs])
21 # plot observed SW vs calculated clear-sky
---> 22 ds_cs.SWD_global.plot(label='SW from non-shaded pyranometer')
23 ds_cs.ghi.plot(label='Clear-sky')
24 plt.legend(loc='upper left')
File /builds/tco/bco/docs/.venv/lib/python3.12/site-packages/xarray/plot/accessor.py:48, in DataArrayPlotAccessor.__call__(self, **kwargs)
46 @functools.wraps(dataarray_plot.plot, assigned=("__doc__", "__annotations__"))
47 def __call__(self, **kwargs) -> Any:
---> 48 return dataarray_plot.plot(self._da, **kwargs)
File /builds/tco/bco/docs/.venv/lib/python3.12/site-packages/xarray/plot/dataarray_plot.py:283, in plot(darray, row, col, col_wrap, ax, hue, subplot_kws, **kwargs)
280 plotfunc: Callable
282 if ndims == 0 or darray.size == 0:
--> 283 raise TypeError("No numeric data to plot.")
284 if ndims in (1, 2):
285 if row or col:
TypeError: No numeric data to plot.
The full dataset:
ds_rad