Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/romanodev/deltapv
A photovoltaic simulator with automatic differentiation
https://github.com/romanodev/deltapv
Last synced: 3 months ago
JSON representation
A photovoltaic simulator with automatic differentiation
- Host: GitHub
- URL: https://github.com/romanodev/deltapv
- Owner: romanodev
- License: mit
- Created: 2019-05-20T20:23:29.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-02-01T15:45:04.000Z (almost 2 years ago)
- Last Synced: 2024-05-01T17:28:12.138Z (6 months ago)
- Language: Python
- Homepage:
- Size: 14.5 MB
- Stars: 53
- Watchers: 6
- Forks: 16
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-jax - delta PV - A photovoltaic simulator with automatic differentation. <img src="https://img.shields.io/github/stars/romanodev/deltapv?style=social" align="center"> (Libraries / New Libraries)
README
# ∂PV
A photovoltaic simulator with automatic differentation, built on `JAX`.Pull requests welcome!
Currently targeting inorganic materials.
For more examples, including performing efficiency optimization of a perovskite solar cell and discovering unknown material properties in a cell, see the following [Google Colab](https://colab.research.google.com/drive/1d2vY01LhXUKOHasNOOZj17FO7qGgWBph?usp=sharing)
To install via `pip`, simply use the command
```
pip install deltapv
````deltapv` features a simple interface for most common cell structures. For a simple p-n homojunction, the following code computes the IV curve:
```python
import deltapv as dpvmaterial = dpv.create_material(Chi=3.9,
Eg=1.5,
eps=9.4,
Nc=8e17,
Nv=1.8e19,
mn=100,
mp=100,
tn=1e-8,
tp=1e-8,
A=2e4)
des = dpv.make_design(n_points=500,
Ls=[1e-4, 1e-4],
mats=material,
Ns=[1e17, -1e17],
Snl=1e7,
Snr=0,
Spl=0,
Spr=1e7)
results = dpv.simulate(des)
```Several convenient plotting functions are provided to visualize important quantities.
```python
dpv.plot_iv_curve(*results["iv"])
dpv.plot_bars(des)
dpv.plot_band_diagram(des, results["eq"], eq=True)
dpv.plot_charge(des, results["eq"])
```
For an overview on PV cells and the physics behind the drift-diffusion model, see this helpful resource: https://www.pveducation.org.
If you use ∂PV, please kindly cite the following paper:
Mann, Sean, Eric Fadel, Samuel S. Schoenholz, Ekin D. Cubuk, Steven G. Johnson, and Giuseppe Romano.
["∂ PV: An end-to-end differentiable solar-cell simulator."](https://www.sciencedirect.com/science/article/abs/pii/S0010465521003441) Computer Physics Communications (2021): 108232 [[pdf](https://arxiv.org/abs/2105.06305)].