Giter Site home page Giter Site logo

aqreed / solarpy Goto Github PK

View Code? Open in Web Editor NEW
51.0 3.0 9.0 2.43 MB

Solar radiation model for flight dynamics. Based on Duffie & Beckman "Solar energy thermal processes" (1974)

License: MIT License

Python 100.00%
solar-energy solar-cells sun-position beam-irradiance photovoltaic python modeling simulation flight-simulation

solarpy's Introduction

drawing

Build Status codecov.io license Binder

Description Python Solar Radiation model
Author aqreed [email protected]
Version 0.1.3
Python Version 3.6
Requires Numpy, Matplotlib

This packages aims to provide a reliable solar radiation model, mainly based on the work of Duffie, J.A., and Beckman, W. A., 1974, "Solar energy thermal processes".

The main purpose is to generate a solar beam irradiance (W/m2) prediction on:

  • any plane, thanks to the calculation of the solar vector in NED (North East Down) coordinates, suitable for its use in flight dynamics simulations...
  • any place of the earth, taking into account the solar time wrt the standard time, geometric altitude, the latitude influence on solar azimuth and solar altitude as well as sunset/sunrise time and hour angle, etc.
  • any day of the year, taking into account the variations of the extraterrestrial radiation, the equation of time, the declination, etc., throughout the year

Example 1

Solar irradiance on the southern hemisphere on October 17, at sea-level 13.01UTC (plane pointing upwards)?

import numpy as np
from solarpy import irradiance_on_plane
from datetime import datetime

vnorm = np.array([0, 0, -1])  # plane pointing zenith
h = 0  # sea-level
date = datetime(2019, 10, 17, 13, 1)  # year, month, day, hour, minute
lat = -23.5  # southern hemisphere

irradiance_on_plane(vnorm, h, date, lat)

A dedicated Jupyter Notebook on beam irradiance can be found here.

Example 2

Power output (in W) of a solar panel with the following characteristics:

  • surface of 2.1 sqm
  • efficiency of 0.2
  • pointing upwards
  • in NYC
  • on December 25, at 16.15
from numpy import array
from solarpy import solar_panel
from datetime import datetime

panel = solar_panel(2.1, 0.2, id_name='NYC_xmas')  # surface, efficiency and name
panel.set_orientation(array([0, 0, -1]))  # upwards
panel.set_position(40.73, -73.93, 0)  # NYC latitude, longitude, altitude
panel.set_datetime(datetime(2019, 12, 25, 16, 15))  # Christmas Day!
panel.power()

Example 3

Solar declination on August 5?

from solarpy import declination
from datetime import datetime

date = datetime(2019, 8, 5)  # August 5

declination(date)

Please find more notebooks on the 'examples' folder that you can open locally, or just try Binder to launch online interactive Jupyter notebooks.


NOTE: solarpy is under development and might change in the near future.


Dependencies

This package depends on Python, NumPy and Matplotlib and is usually tested on Linux with the following versions:

Python 3.6, NumPy 1.16, Matplotlib 3.0

Installation

solarpy has been written in Python3, and its version v0.1 is available in PyPi. It can be installed using:

$ pip install solarpy

To install in development mode:

$ git clone https://github.com/aqreed/solarpy.git
$ cd solarpy
$ pip install -e .

Testing

solarpy recommends py.test for running the test suite. Running from the top directory:

$ pytest

To test coverage (also from the top directory):

$ pytest --cov

Bug reporting

Please feel free to open an issue on GitHub!

License

MIT (see COPYING)

solarpy's People

Contributors

aqreed avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

solarpy's Issues

use datetime objects

functions shall accept datetime objetcs instead day_of_the_year/month/day/hour/minute, in order to make the code cleaner

Underestimation by a factor of 2

I tried to adapt the example panel_class.ipynb to a typical solar panel and its mounting position. My impression is that I have to multiply all estimated results for the panel power by two to fit to the measured results.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.