diff --git a/source/index.rst b/source/index.rst index f4d8bd8..2056428 100644 --- a/source/index.rst +++ b/source/index.rst @@ -56,4 +56,5 @@ This project uses many open-source software packages, including: pages/map pages/tmy-vs-single pages/numerical-precision + pages/uv-dose pages/2300-artifact diff --git a/source/pages/uv-dose.ipynb b/source/pages/uv-dose.ipynb new file mode 100644 index 0000000..2585ad9 --- /dev/null +++ b/source/pages/uv-dose.ipynb @@ -0,0 +1,146 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "50a0a9cd-6627-4eb4-9b3a-d277634b30d1", + "metadata": {}, + "source": [ + "# UV Dose: ASTM G222-21\n", + "\n", + "The hourly PSM3 API endpoint provides modeled values of global horizontal ultraviolet light (GHUV) corresponding to two wavelength bands: 280–400 nm and 295–385 nm. This notebook shows that these values can be recreated precisely using the model defined in [ASTM G222-21](http://doi.org/10.1520/G0222-21)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "053171b5-2fd9-4fcb-bf09-917645933ff3", + "metadata": {}, + "outputs": [], + "source": [ + "import pvlib\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "dba9fc52-05b1-4a50-ac9a-0ca4fd66ff03", + "metadata": {}, + "outputs": [], + "source": [ + "VARIABLE_MAP = {\n", + " 'GHI': 'ghi',\n", + " 'Global Horizontal UV Irradiance (280-400nm)': 'ghuv-280-400',\n", + " 'Global Horizontal UV Irradiance (295-385nm)': 'ghuv-295-385',\n", + " 'Solar Zenith Angle': 'solar_zenith_angle',\n", + "}\n", + "df, meta = pvlib.iotools.get_psm3(40, -80, 'DEMO_KEY', 'assessingsolar@gmail.com',\n", + " names=2020, interval=60,\n", + " attributes=VARIABLE_MAP.values(),\n", + " map_variables=False, leap_day=True)\n", + "\n", + "df = df.rename(columns=VARIABLE_MAP)\n", + "df = df.iloc[:, 5:]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "0f75cae4-6580-444e-b756-a3d36dee10f8", + "metadata": {}, + "outputs": [], + "source": [ + "# \"mean\" coefficients (non-location-specific) from Table 1\n", + "m_280_400 = np.array([7.19e-2, -1.19e-2, 2.01e-3, -1.37e-4, 3.50e-6])\n", + "m_295_385 = np.array([5.70e-2, -9.70e-3, 1.54e-3, -9.51e-5, 2.10e-6])\n", + "\n", + "def astm_g222_21(ghi, sza, mean_coeffs):\n", + " am = 1 / ( # airmass model from REST (Gueymard 2003)\n", + " pvlib.tools.cosd(sza) + 0.48353 * sza**0.09585 / (96.741 - sza)**1.754\n", + " )\n", + " am_powers = np.broadcast_to(am.values, (5, len(am))).T ** np.arange(5)\n", + " ghuv = np.nansum(mean_coeffs * am_powers, axis=1) * ghi\n", + " # the standard specifies how to calculate for zenith < 80, but\n", + " # zenith > 80 is unspecified; in practice the PSM3 API returns zero:\n", + " ghuv[sza > 80] = 0\n", + " return ghuv\n", + "\n", + "df['ghuv-280-400-predicted'] = astm_g222_21(df['ghi'], df['solar_zenith_angle'], m_280_400)\n", + "df['ghuv-295-385-predicted'] = astm_g222_21(df['ghi'], df['solar_zenith_angle'], m_295_385)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "fefdae5c-bf3c-4a22-bec7-3d7a0fe7ccc6", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(1, 2, sharex=True, sharey=True, figsize=(6, 3))\n", + "for ax, col in zip(axes, ['ghuv-280-400', 'ghuv-295-385']):\n", + " df.plot.scatter(col, col+'-predicted', ax=ax)\n", + " ax.axline((0, 0), slope=1, c='k')\n", + " ax.set_xlabel('UV (PSM3) [W/m$^2$]')\n", + " ax.set_ylabel('UV (ASTM G222-21) [W/m$^2$]')\n", + " ax.set_title(col)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "13d0e9af-2c7c-43b0-8f95-91f0e2cd2e16", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Last updated: 2023-02-14 09:10:14\n", + "\n", + "numpy : 1.23.4\n", + "matplotlib: 3.6.2\n", + "pvlib : 0.9.3\n", + "\n" + ] + } + ], + "source": [ + "%load_ext watermark\n", + "%watermark --iversions -u -d -t" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}