{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Here comes the sun\n", "> When does the sun rise and set? I have a fuzzy idea about how this works, here I want to make it a little bit less fuzzy.\n", "\n", "- toc: true\n", "- branch: master\n", "- badges: true\n", "- comments: true\n", "- categories: [math]\n", "- image: https://exitoina.uol.com.br/media/_versions/beatlessss_widelg.jpg\n", "- hide: false\n", "- search_exclude: true\n", "- metadata_key1: metadata_value1\n", "- metadata_key2: metadata_value2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using suntime package\n", "Eventhough this could be cheating, it's a good starting point to get a feel...\n", "This example is taken straight from the documentation:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "#hide\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Today (2020-11-05) at Warsaw the sun raised at 05:37 and get down at 15:02 UTC\n", "On 2014-10-03 the sun at Warsaw raised at 06:39 and get down at 18:10.\n", "Error: The sun never rises on this location (on the specified date).\n" ] } ], "source": [ "#collapse\n", "import datetime\n", "from suntime import Sun, SunTimeException\n", "\n", "latitude = 51.21\n", "longitude = 21.01\n", "\n", "sun = Sun(latitude, longitude)\n", "\n", "# Get today's sunrise and sunset in UTC\n", "today_sr = sun.get_sunrise_time()\n", "today_ss = sun.get_sunset_time()\n", "print('Today ({}) at Warsaw the sun raised at {} and get down at {} UTC'.\n", " format(datetime.datetime.today().strftime('%Y-%m-%d'), today_sr.strftime('%H:%M'), today_ss.strftime('%H:%M')))\n", "\n", "# On a special date in your machine's local time zone\n", "abd = datetime.date(2014, 10, 3)\n", "abd_sr = sun.get_local_sunrise_time(abd)\n", "abd_ss = sun.get_local_sunset_time(abd)\n", "print('On {} the sun at Warsaw raised at {} and get down at {}.'.\n", " format(abd, abd_sr.strftime('%H:%M'), abd_ss.strftime('%H:%M')))\n", "\n", "# Error handling (no sunset or sunrise on given location)\n", "latitude = 87.55\n", "longitude = 0.1\n", "sun = Sun(latitude, longitude)\n", "try:\n", " abd_sr = sun.get_local_sunrise_time(abd)\n", " abd_ss = sun.get_local_sunset_time(abd)\n", " print('On {} at somewhere in the north the sun raised at {} and get down at {}.'.\n", " format(abd, abd_sr.strftime('%H:%M'), abd_ss.strftime('%H:%M')))\n", "except SunTimeException as e:\n", " print(\"Error: {0}.\".format(e))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I currently live here: 58°04'00.8\"N 11°42'10.7\"E\n", "\n", "This one can be converted to [Decimal degrees](https://en.wikipedia.org/wiki/Decimal_degrees)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def longitude_str_to_num(s:str):\n", " \"\"\"\n", " Convert a longitude or latitude in the following format : 58°04'00.8\"N\n", " to degrees\n", " \"\"\"\n", " \n", " s1,s_=s.split('°')\n", " s2,s_=s_.split(\"'\")\n", " s3,s_=s_.split('\"')\n", " \n", " \n", " D = float(s1)\n", " M = float(s2)\n", " S = float(s3)\n", " \n", " D_deg = D + M/60 + S/3600\n", " \n", " if (s_=='W') or (s_=='S'):\n", " D_deg*=-1\n", " \n", " \n", " return D_deg" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "58.06688888888889" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "latitude = longitude_str_to_num('58°04\\'00.8\"N')\n", "latitude" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "11.702972222222222" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "longitude = longitude_str_to_num('11°42\\'10.7\"E')\n", "longitude" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "sun = Sun(latitude, longitude)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "datetime.datetime(2020, 11, 5, 6, 38, tzinfo=tzutc())" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sunrise_time = sun.get_sunrise_time()\n", "sunrise_time" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "datetime.datetime(2020, 11, 5, 15, 14, tzinfo=tzutc())" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sunset_time = sun.get_sunset_time()\n", "sunset_time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Getting these times in local time zone is somewhat messy:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "datetime.datetime(2020, 11, 5, 7, 38, tzinfo=)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pytz\n", "timezone = pytz.timezone(r'Europe/Stockholm')\n", "sun_rise_time_sweden = sunrise_time.replace(tzinfo=pytz.utc).astimezone(timezone)\n", "sun_rise_time_sweden" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "datetime.datetime(2020, 11, 5, 16, 14, tzinfo=)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sun_set_time_sweden = sunset_time.replace(tzinfo=pytz.utc).astimezone(timezone)\n", "sun_set_time_sweden" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'8:36:00'" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "day_time = sun_set_time_sweden-sun_rise_time_sweden\n", "str(day_time)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Own implementation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The [Sun rise equation](https://en.wikipedia.org/wiki/Sunrise_equation) is written:\n", "$$\\cos \\omega_{\\circ}=-\\tan \\phi \\times \\tan \\delta$$\n", "where $\\phi$ is the latitude and $\\delta$ is the earth inclination angle to the sun, which changes over the seasons.\n", "\n", "The [declination-angle](https://www.pveducation.org/pvcdrom/properties-of-sunlight/declination-angle) can be calculated:\n", "$$ \\delta=-23.45^{\\circ} \\times \\cos \\left(\\frac{360}{365} \\times(d+10)\\right) $$\n", "where $d=1$ at january 1st.\n", "\n", "Putting it all together:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "def calculate_declination_angle(day):\n", " angle_deg=360/365*(day+10)\n", " delta_deg = -23.45*np.cos(np.deg2rad(angle_deg))\n", " delta = np.deg2rad(delta_deg) \n", " return delta " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#collapse\n", "days=np.linspace(1,360,360)\n", "delta=calculate_declination_angle(day=days)\n", "\n", "fig,ax=plt.subplots()\n", "ax.plot(days,np.rad2deg(delta));\n", "ax.set_xlabel('days')\n", "ax.set_ylabel('$\\delta$ inclination angle [deg]');" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "def sun_hour_angle(latitude:float, day:int):\n", " \"\"\"\n", " param: latitude [deg]\n", " param: day, january 1 --> day=1\n", " \"\"\"\n", " delta = calculate_declination_angle(day=day)\n", " phi=np.deg2rad(latitude)\n", " omega0 = np.arccos(-np.tan(phi)*np.tan(delta))\n", " \n", " return omega0\n", "\n", "def sun_rise_time(latitude:float, day:int):\n", " \"\"\"\n", " param: latitude [deg]\n", " param: day, january 1 --> day=1\n", " \"\"\"\n", " omega0 = sun_hour_angle(latitude=latitude, day=day)\n", " rise_time=12-omega0/np.deg2rad(15)\n", " return rise_time\n", "\n", "def sun_set_time(latitude:float, day:int):\n", " \"\"\"\n", " param: latitude [deg]\n", " param: day, january 1 --> day=1\n", " \"\"\"\n", " omega0 = sun_hour_angle(latitude=latitude, day=day)\n", " set_time=12+omega0/np.deg2rad(15)\n", " \n", " return set_time\n", " \n", " " ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#collapse\n", "\n", "rise_time=sun_rise_time(latitude=latitude, day=days)\n", "set_time=sun_set_time(latitude=latitude, day=days)\n", "\n", "\n", "fig,ax=plt.subplots()\n", "ax.plot(days,rise_time, label='rise', color='y');\n", "ax.plot(days,set_time, label='set', color='r');\n", "ax.legend()\n", "ax.set_xlabel('days')\n", "ax.set_ylabel('time [hour]');\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'7:53:18.287704'" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "now = datetime.datetime.now()\n", "day = (now-datetime.datetime(year=now.year, month=1, day=1)).days\n", "rise_time = sun_rise_time(latitude=latitude, day=day)\n", "rise_time = datetime.timedelta(hours=rise_time)\n", "'%s' % rise_time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "... so we are missing with about 15 minutes compared to the previous result. I think that the given time here is by definition in local time, since we substract from local time 12 o'clock as in the code above.\n", "\n", "Wikipedia also says that there is a more advanced [Sun rise equation](https://en.wikipedia.org/wiki/Sunrise_equation):\n", "\n", "$$ \\cos \\omega_{\\circ}=\\frac{\\sin a-\\sin \\phi \\times \\sin \\delta}{\\cos \\phi \\times \\cos \\delta} $$\n", "where $a=−0.83°$\n", "\n", "Will that fix the 15 minutes?" ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [], "source": [ "#collapse\n", "from numpy import sin,cos \n", "\n", "def sun_hour_angle2(latitude:float, day:int):\n", " \"\"\"\n", " param: latitude [deg]\n", " param: day, january 1 --> day=1\n", " \"\"\"\n", " delta = calculate_declination_angle(day=day)\n", " phi=np.deg2rad(latitude)\n", " a = np.deg2rad(-0.83)\n", " \n", " omega0 = np.arccos((sin(a)-sin(phi)*sin(delta))/(cos(phi)*cos(delta)))\n", " return omega0\n", "\n", "def sun_rise_time2(latitude:float, day:int):\n", " \"\"\"\n", " param: latitude [deg]\n", " param: day, january 1 --> day=1\n", " \"\"\"\n", " omega0 = sun_hour_angle2(latitude=latitude, day=day)\n", " rise_time=12-omega0/np.deg2rad(15)\n", " return rise_time\n", "\n", "def sun_set_time2(latitude:float, day:int):\n", " \"\"\"\n", " param: latitude [deg]\n", " param: day, january 1 --> day=1\n", " \"\"\"\n", " omega0 = sun_hour_angle2(latitude=latitude, day=day)\n", " set_time=12+omega0/np.deg2rad(15)\n", " \n", " return set_time" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'7:45:55.906959'" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rise_time = sun_rise_time2(latitude=latitude, day=day)\n", "rise_time = datetime.timedelta(hours=rise_time)\n", "'%s' % rise_time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "...a little bit better but still not perfect. There was also a simplification in the calculation of the inclination angle, will that do it?" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [], "source": [ "def calculate_declination_angle2(day):\n", " angle_deg=360/365*(day+10) \n", " delta = np.arcsin(np.sin(np.deg2rad(-23.45))*np.cos(np.deg2rad(angle_deg)))\n", " return delta " ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#collapse\n", "\n", "delta=calculate_declination_angle(day=days)\n", "delta2=calculate_declination_angle2(day=days)\n", "\n", "\n", "fig,ax=plt.subplots()\n", "\n", "ax.plot(days,np.rad2deg(delta),label='inclination linear');\n", "ax.plot(days,np.rad2deg(delta2),'--', label='inlination nonlinear');\n", "\n", "ax.set_xlabel('days')\n", "ax.set_ylabel('$\\delta$ inclination angle [deg]');\n", "ax.legend()" ] }, { "cell_type": "code", "execution_count": 114, "metadata": {}, "outputs": [], "source": [ "#collapse\n", "\n", "def sun_hour_angle3(latitude:float, day:int):\n", " \"\"\"\n", " param: latitude [deg]\n", " param: day, january 1 --> day=1\n", " \"\"\"\n", " delta = calculate_declination_angle2(day=day)\n", " phi=np.deg2rad(latitude)\n", " #a = np.deg2rad(-0.83)\n", " a = np.deg2rad(-1.07)\n", " \n", " omega0 = np.arccos((sin(a)-sin(phi)*sin(delta))/(cos(phi)*cos(delta)))\n", " return omega0\n", "\n", "def sun_rise_time3(latitude:float, day:int):\n", " \"\"\"\n", " param: latitude [deg]\n", " param: day, january 1 --> day=1\n", " \"\"\"\n", " omega0 = sun_hour_angle3(latitude=latitude, day=day)\n", " rise_time=12-omega0/np.deg2rad(15)\n", " return rise_time\n", "\n", "def sun_set_time3(latitude:float, day:int):\n", " \"\"\"\n", " param: latitude [deg]\n", " param: day, january 1 --> day=1\n", " \"\"\"\n", " omega0 = sun_hour_angle3(latitude=latitude, day=day)\n", " set_time=12+omega0/np.deg2rad(15)\n", " \n", " return set_time" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'7:41:58.728943'" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rise_time = sun_rise_time3(latitude=latitude, day=day)\n", "rise_time = datetime.timedelta(hours=rise_time)\n", "'%s' % rise_time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "yet a little bit better, but there is still some time missing...\n", "It is however so typical me to jump to conclusion instead of reading the description thuroughly. The sun rise and sun set should be calculated as: \n", "\n", "$$\n", "\\begin{array}{l}\n", "J_{\\text {rise}}=J_{\\text {transit}}-\\frac{\\omega_{\\circ}}{360^{\\circ}} \\\\\n", "J_{\\text {set}}=J_{\\text {transit}}+\\frac{\\omega_{\\circ}}{360^{\\circ}}\n", "\\end{array}\n", "$$\n", "where\n", "$\\mathrm{J}_{\\text {rise }}$ is the actual Julian date of sunrise;\n", "J set is the actual Julian date of sunset.\n", "\n", "$$\n", "J_{\\text {transit}}=2451545.0+J^{\\star}+0.0053 \\sin M-0.0069 \\sin (2 \\lambda)\n", "$$\n", "where:\n", "J transit is the Julian date for the local true solar transit (or solar noon). 2451545.0 is noon of the equivalent Julian year reference.\n", "$0.0053 \\sin M-0.0069 \\sin (2 \\lambda)$ is a simplified version of the equation of time. The coefficients are fractional day minutes.\n", "\n", "$$\n", "\\lambda=(M+C+180+102.9372) \\bmod 360\n", "$$\n", "where:\n", "$\\lambda$ is the ecliptic longitude.\n", "\n", "$$\n", "C=1.9148 \\sin (M)+0.0200 \\sin (2 M)+0.0003 \\sin (3 M)\n", "$$\n", "where:\n", "$\\mathrm{C}$ is the Equation of the center value needed to calculate lambda (see next equation).\n", "1.9148 is the coefficient of the Equation of the Center for the planet the observer is on (in this case, Earth)\n", "\n", "$$\n", "M=\\left(357.5291+0.98560028 \\times J^{\\star}\\right) \\bmod 360\n", "$$\n", "\n", "$$\n", "J^{\\star}=n-\\frac{l_{w}}{360^{\\circ}}\n", "$$\n", "where:\n", "$J^{\\star}$ is an approximation of mean solar time at $n$ expressed as a Julian day with the day fraction.\n", "$l_{\\omega}$ is the longitude west (west is negative, east is positive) of the observer on the Earth;\n", "\n", "$$\n", "n=J_{\\text {date}}-2451545.0+0.0008\n", "$$\n", "where:\n", "$n$ is the number of days since Jan 1 st, 2000 12:00 . $J_{\\text {date}}$ is the Julian date;" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [], "source": [ "def calulate_n(time:datetime.datetime):\n", " start = datetime.datetime(year=2000, month=1, day=1, hour=12)\n", " n = (time-start).total_seconds() / (60*60*24)\n", " return n\n", " \n", "def calculate_julian_date(time:datetime.datetime):\n", " n = calulate_n(time=time)\n", " return n + 2451545.0 - 0.0008" ] }, { "cell_type": "code", "execution_count": 142, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2459159.2839319147" ] }, "execution_count": 142, "metadata": {}, "output_type": "execute_result" } ], "source": [ "calculate_julian_date(datetime.datetime.today())" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [], "source": [ "def calculate_mean_solar_time(n,longitude):\n", " J_star = n+longitude/360\n", " return J_star\n", "\n", "def calculate_j_transit(time:datetime.datetime, longitude:float):\n", " \n", " n = calulate_n(time=time)\n", " j_star = calculate_mean_solar_time(n=n, longitude=longitude)\n", " m = np.mod((357.5291+0.98560028*j_star),360)\n", " c = 1.9148*np.sin(np.deg2rad(m))+0.0200*np.sin(2*np.deg2rad(m))+0.0003*np.sin(3*np.deg2rad(m))\n", " lamda = np.mod(m+c+180+102.9372, 360)\n", " j_transit = 2451545.0+j_star+0.0053*np.sin(np.deg2rad(m))-0.0069*np.sin(2*np.deg2rad(lamda))\n", " return j_transit" ] }, { "cell_type": "code", "execution_count": 151, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0219331500120461" ] }, "execution_count": 151, "metadata": {}, "output_type": "execute_result" } ], "source": [ "j_transit = calculate_j_transit(time=datetime.datetime.today(), longitude=longitude)\n", "j_transit - calculate_julian_date(datetime.datetime.today())" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#collapse\n", "def time_of_day(latitude:float, day:int):\n", " return sun_set_time3(latitude=latitude, day=day) - sun_rise_time3(latitude=latitude, day=day)\n", "\n", "time=time_of_day(latitude=latitude, day=days)\n", "\n", "fig,ax=plt.subplots()\n", "ax.plot(days,time, 'b-', label='rise');\n", "ax.set_xlabel('days')\n", "ax.set_ylabel('Length of day [hour]');\n", "ax.grid(True)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#collapse\n", "\n", "from matplotlib import ticker, cm\n", "\n", "N=400\n", "latitudes = np.linspace(0.1,89.9,N)\n", "days_ = np.linspace(0,365,N)\n", "L = np.tile(latitudes,(len(days_),1))\n", "D = np.tile(days_,(N,1)).T\n", "\n", "time=time_of_day(latitude=L, day=D)\n", "\n", "fig,ax=plt.subplots()\n", "fig.set_size_inches(15,10)\n", "cs = ax.contourf(D,L,time, cmap=cm.gray, levels=48);\n", "cb = fig.colorbar(cs)\n", "ax.set_xlabel('days')\n", "ax.set_ylabel('Latitude [deg]');\n", "\n", "latitude = longitude_str_to_num('58°04\\'00.8\"N')\n", "ax.plot([0,365],[latitude,latitude],'b-');\n", "ax.plot(day,latitude,'ro');\n", "\n", "ax.set_title('Hours per day at various days and latitudes');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The blue line is where I normally experience the seasons and at this very moment I'm in the red dot, listening to this:\n", "\n", "" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.5" } }, "nbformat": 4, "nbformat_minor": 4 }