Skip to content

Instantly share code, notes, and snippets.

@mikofski
Last active March 13, 2020 19:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mikofski/df318d1f892767ac7c762e732fecaa7f to your computer and use it in GitHub Desktop.
Save mikofski/df318d1f892767ac7c762e732fecaa7f to your computer and use it in GitHub Desktop.
proof of an implicit solver
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Explicit methods for solving IV curves of a PV system\n",
"\n",
"This is the last notebook in a series exploring how to model PV systems using the single diode model (SDM). The first two notebooks presented implicit approaches that return either the corresponding current for a specified voltage or the current and voltage of the max power point. This notebook uses an explicit method which parameterizes the SDM using the diode voltage, and returns a current and voltage corresponding to the value of the parameter. The diode voltage is defined as the voltage across the diode in the SDM and is related to the current and voltage by the following relation, $V_{diode} = V + I R_s$, in which $R_s$ is the series resistance.\n",
"\n",
"## PVMismatch\n",
"[PVMismatch](https://sunpower.github.io/PVMismatch/) is a Python package that solves IV curves using this explicit approach which was discussed in by J. Bishop in _Solar_ (1980). There is another notebook in this series that is a repeat of this notebook, but using PVMismatch.\n",
"\n",
"## Conclusions\n",
"Overall, it appears that the explicit approach is about 5x faster than the implicit approaches."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"import numpy as np\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# CONSTANTS\n",
"IL = 7.0 # [A] photogenerated current\n",
"I0 = 1.0e-6 # [A] dark current\n",
"RSH = 20.0 # [ohms] shunt resistance\n",
"RS = 0.001 # [ohms] series resistance\n",
"GAMMA = 1.23 # diode ideality\n",
"VT = 0.026 # [V] thermal voltage at 300[K]\n",
"VBYPASS = -0.5 # bypass diode trigger voltage [V]\n",
"NSERIES_CELLS = 72 # number of series cells per module\n",
"NMODS = 8 # number of modules per string\n",
"NSTRINGS = 3 # number of strings in system\n",
"NBYPASS = 3 # number of bypass diodes per module, assumes cells divided evenly"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def sdm(il, i0, rsh, rs, gamma, vt, vdiode):\n",
" \"\"\"\n",
" Residual for single diode model (SDM) and derivative.\n",
"\n",
" Args:\n",
" il (numeric): photogenerated current [A]\n",
" i0 (numeric): dark current [A]\n",
" rsh (numeric): shunt resistance [Ohms]\n",
" rs (numeric): series resistance [Ohms]\n",
" gamma (numeric): diode ideality factor\n",
" vt (numeric): thermal voltage [V]\n",
" vdiode (numeric): diode voltage [V]\n",
"\n",
" Returns:\n",
" vcell (numeric): cell voltages [V]\n",
" icell (numeric): cell currents [A]\n",
" \"\"\"\n",
" icell = il - i0*(np.exp(vdiode / gamma / vt) - 1.0) - vdiode/rsh\n",
" vcell = vdiode - icell*rs # voltage drop across diode in SDM [V]\n",
" \n",
" return icell, vcell"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# add some noise to the irradiance and temperature\n",
"noise = np.random.randn(NSERIES_CELLS, NMODS, NSTRINGS) / 1000"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"290.3329375367371"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# estimate upper limit of system voltage\n",
"VOC_EST = (GAMMA*VT * np.log(IL / I0 + 1.0))*NMODS*NSERIES_CELLS\n",
"VOC_EST"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# make a distribution that is more closely spaced around Vmp to Voc\n",
"# and less spaced near Isc, also in reverse order, so current increases\n",
"NPTS = 1000\n",
"VDIODE = (VOC_EST-np.logspace(0, np.log10(VOC_EST), NPTS))/(NMODS*NSERIES_CELLS)\n",
"plt.plot(VDIODE)\n",
"plt.title('diode voltage is log spaced')\n",
"plt.xlabel('index')\n",
"plt.ylabel('voltage [V]')\n",
"plt.grid();"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# make the cells with some noise\n",
"iv = []\n",
"for pvstr in range(NSTRINGS):\n",
" for pvmod in range(NMODS):\n",
" for pvcell in range(NSERIES_CELLS):\n",
" i, v = sdm(IL+noise[pvcell, pvmod, pvstr], I0, RSH, RS, GAMMA, VT, VDIODE)\n",
" iv.append([i, v])\n",
"pvcells = np.array(iv).reshape(NSTRINGS, NMODS, NSERIES_CELLS, 2, NPTS) # reshape"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# make a plot of the the cell-0, mod-0, str-0\n",
"plt.plot(pvcells[0, 0, 0][1, :], pvcells[0, 0, 0][0, :])\n",
"plt.title('iv curve cell-0, mod-0, str-0')\n",
"plt.ylabel('current [A]')\n",
"plt.xlabel('voltage [V]')\n",
"plt.grid();"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"# combine substrings and check bypass diode activation\n",
"iv = []\n",
"ncells_per_sub = NSERIES_CELLS/NBYPASS\n",
"for pvstr in range(NSTRINGS):\n",
" for pvmod in range(NMODS):\n",
" for pvsub in range(NBYPASS):\n",
" idx0 = int(pvsub*ncells_per_sub) # 1st index of substring\n",
" idx1 = int(idx0+ncells_per_sub) # last indest of substring\n",
" isub = pvcells[pvstr, pvmod, idx0][0, :]\n",
" vsub = np.zeros_like(isub)\n",
" for ivcell in pvcells[pvstr, pvmod, idx0:idx1]:\n",
" vsub += np.interp(isub, ivcell[0, :], ivcell[1, :])\n",
" vsub[vsub < VBYPASS] = VBYPASS\n",
" iv.append([isub, vsub])\n",
"pvsubs = np.array(iv).reshape(NSTRINGS, NMODS, NBYPASS, 2, NPTS)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# make a plot of the the substring-0, mod-0, str-0\n",
"plt.plot(pvsubs[0, 0, 0][1, :], pvsubs[0, 0, 0][0, :])\n",
"plt.title('iv curve substring-0, mod-0, str-0')\n",
"plt.ylabel('current [A]')\n",
"plt.xlabel('voltage [V]')\n",
"plt.grid();"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# combine substrings into modules\n",
"iv = []\n",
"for pvstr in range(NSTRINGS):\n",
" for pvmod in range(NMODS):\n",
" imod = pvsubs[pvstr, pvmod, 0][0, :]\n",
" vmod = np.zeros_like(imod)\n",
" for ivsub in pvsubs[pvstr, pvmod, :]:\n",
" vmod += np.interp(imod, ivsub[0, :], ivsub[1, :])\n",
" iv.append([imod, vmod])\n",
"pvmods = np.array(iv).reshape(NSTRINGS, NMODS, 2, NPTS)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# make a plot of the the mod-0, str-0\n",
"plt.plot(pvmods[0, 0][1, :], pvmods[0, 0][0, :])\n",
"plt.title('iv curve mod-0, str-0')\n",
"plt.ylabel('current [A]')\n",
"plt.xlabel('voltage [V]')\n",
"plt.grid();"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"# combine modules into strings\n",
"iv = []\n",
"for pvstr in range(NSTRINGS):\n",
" istr = pvmods[pvstr, 0][0, :]\n",
" vstr = np.zeros_like(istr)\n",
" for ivmod in pvmods[pvstr, :]:\n",
" vstr += np.interp(istr, ivmod[0, :], ivmod[1, :])\n",
" iv.append([istr, vstr])\n",
"pvstrs = np.array(iv).reshape(NSTRINGS, 2, NPTS)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# make a plot of the the str-0\n",
"plt.plot(pvstrs[0][1, :], pvstrs[0][0, :])\n",
"plt.title('iv curve str-0')\n",
"plt.ylabel('current [A]')\n",
"plt.xlabel('voltage [V]')\n",
"plt.grid();"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"# combine string into system\n",
"vsys = pvstrs[0][1, ::-1]\n",
"isys = np.zeros_like(vsys)\n",
"for ivstr in pvstrs:\n",
" isys += np.interp(vsys, ivstr[1, ::-1], ivstr[0, ::-1])\n",
"pvsys = np.array([isys, vsys, isys*vsys])"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# make a plot of the the system\n",
"f, ax = plt.subplots(1, 2, figsize=(12, 4))\n",
"ax[0].plot(pvsys[1, :], pvsys[0, :])\n",
"ax[0].set_title('iv curve system')\n",
"ax[0].set_ylabel('current [A]')\n",
"ax[0].set_xlabel('voltage [V]')\n",
"ax[0].grid()\n",
"# power\n",
"ax[1].plot(pvsys[1, :], pvsys[2, :])\n",
"ax[1].set_title('iv curve system')\n",
"ax[1].set_ylabel('power [W]')\n",
"ax[1].set_xlabel('voltage [V]')\n",
"ax[1].grid();\n",
"plt.tight_layout()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4625.798350817047"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# approximate max power, depends on NPTS and spacing\n",
"Pmp = np.max(pvsys[2, :])\n",
"Pmp"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(19.41512223191414, 238.25749307996963, 4625.798350817047)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# approximate location of MPP, depends on NPTS and spacing\n",
"mpp = np.argmax(pvsys[2, :])\n",
"Imp, Vmp, mpp = pvsys[:, mpp]\n",
"Imp, Vmp, mpp"
]
}
],
"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": 2
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@mikofski
Copy link
Author

Note: finding the max power point may be an non-convex optimization problem, therefore to guarantee convergence, find the index of
the max power point by calling numpy.argmax(power). If the spacing of points on the IV curve is too course, then use brentq in a convex trust region around the index of the max power point.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment