BatterySimulatorBLAST/python/example.ipynb

510 lines
326 KiB
Plaintext
Raw Normal View History

2023-04-08 06:05:55 +09:00
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Battery life model library\n",
"Example notebook demonstrating how to use the battery life models in Python.\n",
"\n",
"First examples use the Kokam NMC111|Gr 75Ah battery life model. The battery modeled here is a high-power cell with long cycle life. Because nominal cell resistance is low, the relative change of resistance at end-of-life is quite high compared to other cell designs (~300% increase in cell resistance at 80% capacity if not more). Fade rates can be changed in the code to accomodate other cell models. Documentation is provided in the life model class. See https://ieeexplore.ieee.org/abstract/document/7963578 for the aging test details and results used to parameterize this model."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from nmc111_gr_Kokam75Ah_2017 import Nmc111_Gr_Kokam75Ah_Battery"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To run, the life model needs timeseries data: the time in seconds since beginning-of-life of the battery, the state-of-charge of the battery (0 to 1), and the ambient temperature (or battery temperature, if you have a thermal model)."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
2023-04-08 06:11:26 +09:00
"image/png": "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
2023-04-08 06:05:55 +09:00
"text/plain": [
2023-04-08 06:11:26 +09:00
"<Figure size 640x480 with 2 Axes>"
2023-04-08 06:05:55 +09:00
]
},
2023-04-08 06:11:26 +09:00
"metadata": {},
2023-04-08 06:05:55 +09:00
"output_type": "display_data"
}
],
"source": [
"years = 10\n",
"hours = years * 365 * 24\n",
"t_hours = np.arange(hours + 1)\n",
"soc = np.tile(\n",
" np.array(\n",
" [1, 1, 1, 1, 1, 1,\n",
" 0.4, 0.4, 0.6, 0.6, 1, 1,\n",
" 0.9, 0.8, 0.7, 0.6, 0.5, 0.4,\n",
" 0.3, 0.2, 0.2, 0.4, 0.6, 0.8]\n",
" ),\n",
" int(len(t_hours/24))\n",
")\n",
"soc = np.append(soc, 1)\n",
"\n",
"TdegC = (\n",
" np.tile(np.concatenate([np.linspace(25, 35, 12), np.linspace(35, 25, 12)]),\n",
" int(len(t_hours)/24))\n",
" + np.tile(np.concatenate([np.linspace(-5, 5, 24*182), np.linspace(5, -5, 24*183)]),\n",
" int(len(t_hours)/(24*365)))\n",
")\n",
"TdegC = np.append(TdegC, 20)\n",
"\n",
"t_secs = t_hours * 3600\n",
"\n",
"fig, ax1 = plt.subplots()\n",
"ax1.plot(t_hours[:25], soc[:25], '-k')\n",
"ax1.set_xlabel('Time (hours)')\n",
"ax1.set_ylabel('State-of-charge')\n",
"\n",
"ax2 = ax1.twinx()\n",
"ax2.plot(t_hours[:25], TdegC[:25], '-r')\n",
"ax2.tick_params(axis='y', labelcolor='r')\n",
"ax2.set_ylabel('Temperature (Celsius)', color='r')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
2023-04-08 06:11:26 +09:00
"image/png": "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
2023-04-08 06:05:55 +09:00
"text/plain": [
2023-04-08 06:11:26 +09:00
"<Figure size 640x480 with 1 Axes>"
2023-04-08 06:05:55 +09:00
]
},
2023-04-08 06:11:26 +09:00
"metadata": {},
2023-04-08 06:05:55 +09:00
"output_type": "display_data"
}
],
"source": [
"plt.plot(t_hours/(24*365), TdegC)\n",
"plt.xlabel('Time (years)')\n",
"plt.ylabel('Temperature (Celsius)')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Instantiate the battery model."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"cell = Nmc111_Gr_Kokam75Ah_Battery()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"All battery models have five properties. The first is `_cap`, which is the nominal discharge capacity of the cell in Amp hours."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"75"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cell._cap"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"The next four track battery lifetime values, and store the history of the battery as lifetime is simulated at each timestep/iteration:\n",
"- `states`: internal states of the battery model\n",
" - Ex., time-dependent capacity loss\n",
"- `outputs`: battery properties calculated from states\n",
" - Ex., relative discharge capacity\n",
"- `stressors`: values of stressors used by the model\n",
" - Ex., temperature, depth-of-discharge, charge-throughput\n",
" - Note that degradation rates are calculate from stressor timeseries, and then normalized for the timestep; for example, an Arrhenius expression would be evaluated from the temperature timeseries for the entire timestep, and then normalized by taking the time-based average - this gives a different value than if the Arrhenius expression was evaluated on the averager temperature. Other normalizations can include using the minimum or maximum value over the timestep, or using the root-mean-square.\n",
"- `rates`: values of degradation rates\n",
" - Ex., time-dependent degradation rate due to temperature and state-of-charge\n",
"\n",
"Battery models may have other properties, such as the open-circuit voltage as a function of state-of-charge, nominal DC resistance values, or first-life/second-life capacity definitions.\n",
"\n",
"This specific battery model is relatively complex, and has many states and outputs that describe the degradation state of the battery. Properties `states`, `outputs`, `stressors`, and `rates` are all stored in dicts:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'q': array([1]),\n",
" 'q_LLI': array([1]),\n",
" 'q_LLI_t': array([1]),\n",
" 'q_LLI_EFC': array([1]),\n",
" 'q_LAM': array([1.01]),\n",
" 'r': array([1]),\n",
" 'r_LLI': array([1]),\n",
" 'r_LLI_t': array([1]),\n",
" 'r_LLI_EFC': array([1]),\n",
" 'r_LAM': array([1])}"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cell.outputs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Output descriptions are in the class definition, replicated here:\n",
"- q: relative capacity\n",
"- q_LLI: relative lithium inventory\n",
"- q_LLI_t: relative lithium inventory, time dependent loss\n",
"- q_LLI_EFC: relative lithium inventory, charge-throughput dependent loss\n",
"- q_LAM: relative active material, charge-throughput dependent loss\n",
"- r: relative resistance\n",
"- r_LLI: relative SEI resistance\n",
"- r_LLI_t: relative SEI resistance, time dependent growth\n",
"- r_LLI_EFC: relative SEI resistance, charge-throughput dependent growth\n",
"- r_LAM: relative electrode resistance, q_LAM dependent growth"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Accesing one output/state/rate/stressor is simple:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cell.outputs['q']"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"The battery model should be run in timesteps relavent to battery degradation, such as once per day. Larger or smaller timesteps could be used if desired, but timesteps should avoid splitting up cycles, or at least be long enough that miscounting cycles due to splitting them up does not introduce much error.\n",
"\n",
"Each battery model tracks the history of it's inputs (`stressors`), calculated degradation rates (`rates`), internal states (`states`), and outputs (`outputs`) each time `update_battery_state` is called. Debugging models is easier because the values of all inputs, internal calculations, and outputs are tracked."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"t_days = np.arange(years*365)\n",
"for day in t_days:\n",
" hour_start = day*24\n",
" hour_end = (day+1)*24 + 1\n",
" # Update battery state\n",
" cell.update_battery_state(t_secs=t_secs[hour_start:hour_end], soc=soc[hour_start:hour_end], T_celsius=TdegC[hour_start:hour_end])"
]
},
{
"cell_type": "code",
2023-04-08 06:11:26 +09:00
"execution_count": 9,
2023-04-08 06:05:55 +09:00
"metadata": {},
"outputs": [
{
"data": {
2023-04-08 06:11:26 +09:00
"image/png": "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
2023-04-08 06:05:55 +09:00
"text/plain": [
2023-04-08 06:11:26 +09:00
"<Figure size 640x480 with 1 Axes>"
2023-04-08 06:05:55 +09:00
]
},
2023-04-08 06:11:26 +09:00
"metadata": {},
2023-04-08 06:05:55 +09:00
"output_type": "display_data"
}
],
"source": [
"plt.plot(cell.stressors['t_days']/365, cell.outputs['q'])\n",
"plt.xlabel('Time (years)')\n",
"plt.ylabel('Relative discharge capacity')\n",
"plt.ylim((0.7, 1.02))\n",
"plt.show()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"The cell resistance and capacity trajectories are wiggily because the temperature of the battery is varying throughout each year, varying the degradation rate. Dispatch is the same each day, so that is constant.\n",
"\n",
"The model keeps track of how much charge-throughput has occured throughout life, as well, based on the input state-of-charge timeseries. Conversion from charge-throughput, in Amp-hours, to changes of cell state-of-charge, which is dependent on battery performance (health, temperature and SOC dependent resistances), is assumed to happen externally to the model. This simple simulation is essentially assuming that the current magnitude is continuously being adjusted based on the the state-of-health of the battery."
]
},
{
"cell_type": "code",
2023-04-08 06:11:26 +09:00
"execution_count": 10,
2023-04-08 06:05:55 +09:00
"metadata": {},
"outputs": [
{
"data": {
2023-04-08 06:11:26 +09:00
"image/png": "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
2023-04-08 06:05:55 +09:00
"text/plain": [
2023-04-08 06:11:26 +09:00
"<Figure size 640x480 with 1 Axes>"
2023-04-08 06:05:55 +09:00
]
},
2023-04-08 06:11:26 +09:00
"metadata": {},
2023-04-08 06:05:55 +09:00
"output_type": "display_data"
}
],
"source": [
"plt.plot(cell.stressors['efc'], cell.outputs['q'])\n",
"plt.xlabel('Equivalent full cycles')\n",
"plt.ylabel('Relative discharge capacity')\n",
"plt.ylim((0.7, 1.02))\n",
"plt.show()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"This dispatch has a little more than 1 EFC per day.\n",
"\n",
"We can plot the separate contributions to capacity or resistance fade, as well."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.7, 1.02)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2023-04-08 06:11:26 +09:00
"image/png": "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
2023-04-08 06:05:55 +09:00
"text/plain": [
2023-04-08 06:11:26 +09:00
"<Figure size 640x480 with 1 Axes>"
2023-04-08 06:05:55 +09:00
]
},
2023-04-08 06:11:26 +09:00
"metadata": {},
2023-04-08 06:05:55 +09:00
"output_type": "display_data"
}
],
"source": [
"plt.plot(cell.stressors['t_days']/365, cell.outputs['q_LLI'])\n",
"plt.plot(cell.stressors['t_days']/365, cell.outputs['q_LAM'])\n",
"plt.plot(cell.stressors['t_days']/365, cell.outputs['q'], '--k')\n",
"plt.xlabel('Time (years)')\n",
"plt.ylabel('Relative discharge capacity')\n",
"plt.legend([r'q$_{LLI}$', r'q$_{LAM}$', 'q'])\n",
"plt.ylim((0.7, 1.02))"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"From the result, the cell will experience sudden failure very shortly; considering this is near 70% remaining capacity, this is physically reasonable."
]
},
{
"cell_type": "code",
2023-04-08 06:11:26 +09:00
"execution_count": 12,
2023-04-08 06:05:55 +09:00
"metadata": {},
"outputs": [
{
"data": {
2023-04-08 06:11:26 +09:00
"image/png": "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
2023-04-08 06:05:55 +09:00
"text/plain": [
2023-04-08 06:11:26 +09:00
"<Figure size 640x480 with 1 Axes>"
2023-04-08 06:05:55 +09:00
]
},
2023-04-08 06:11:26 +09:00
"metadata": {},
2023-04-08 06:05:55 +09:00
"output_type": "display_data"
}
],
"source": [
"plt.plot(cell.stressors['t_days']/365, cell.outputs['r_LLI'])\n",
"plt.plot(cell.stressors['t_days']/365, cell.outputs['r_LAM'])\n",
"plt.plot(cell.stressors['t_days']/365, cell.outputs['r'], '--k')\n",
"plt.xlabel('Time (years)')\n",
"plt.ylabel('Relative DC resistance')\n",
"plt.legend([r'r$_{LLI}$', r'r$_{LAM}$', 'r'])\n",
"plt.show()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Repeat with other battery life models."
]
},
{
"cell_type": "code",
2023-04-08 06:11:26 +09:00
"execution_count": 13,
2023-04-08 06:05:55 +09:00
"metadata": {},
"outputs": [
{
"data": {
2023-04-08 06:11:26 +09:00
"image/png": "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
2023-04-08 06:05:55 +09:00
"text/plain": [
2023-04-08 06:11:26 +09:00
"<Figure size 640x480 with 1 Axes>"
2023-04-08 06:05:55 +09:00
]
},
2023-04-08 06:11:26 +09:00
"metadata": {},
2023-04-08 06:05:55 +09:00
"output_type": "display_data"
}
],
"source": [
"from lfp_gr_SonyMurata3Ah_2018 import Lfp_Gr_SonyMurata3Ah_Battery\n",
"from nmc111_gr_Sanyo2Ah_2014 import Nmc111_Gr_Sanyo2Ah_Battery\n",
"from nmc811_grSi_LGMJ1_4Ah_2020 import Nmc811_GrSi_LGMJ1_4Ah_Battery\n",
"from nca_gr_Panasonic3Ah_2018 import Nca_Gr_Panasonic3Ah_Battery\n",
"from nmc_lto_10Ah_2020 import Nmc_Lto_10Ah_Battery\n",
"from lmo_gr_NissanLeaf66Ah_2ndLife_2020 import Lmo_Gr_NissanLeaf66Ah_2ndLife_Battery\n",
"\n",
"cell_nmc_kokam = Nmc111_Gr_Kokam75Ah_Battery()\n",
"cell_lfp = Lfp_Gr_SonyMurata3Ah_Battery()\n",
"cell_nmc_sanyo = Nmc111_Gr_Sanyo2Ah_Battery()\n",
"cell_nmc811_grSi = Nmc811_GrSi_LGMJ1_4Ah_Battery()\n",
"cell_nca = Nca_Gr_Panasonic3Ah_Battery()\n",
"cell_nmc_lto = Nmc_Lto_10Ah_Battery()\n",
"cell_lmo = Lmo_Gr_NissanLeaf66Ah_2ndLife_Battery()\n",
"\n",
"for day in t_days:\n",
" hour_start = day*24\n",
" hour_end = (day+1)*24 + 1\n",
" # NMC Kokam\n",
" cell_nmc_kokam.update_battery_state(t_secs=t_secs[hour_start:hour_end], soc=soc[hour_start:hour_end], T_celsius=TdegC[hour_start:hour_end])\n",
" # LFP\n",
" cell_lfp.update_battery_state(t_secs=t_secs[hour_start:hour_end], soc=soc[hour_start:hour_end], T_celsius=TdegC[hour_start:hour_end])\n",
" # NMC Sanyo\n",
" cell_nmc_sanyo.update_battery_state(t_secs=t_secs[hour_start:hour_end], soc=soc[hour_start:hour_end], T_celsius=TdegC[hour_start:hour_end])\n",
" # LG MJ1 NMC811 GrSi\n",
" cell_nmc811_grSi.update_battery_state(t_secs=t_secs[hour_start:hour_end], soc=soc[hour_start:hour_end], T_celsius=TdegC[hour_start:hour_end])\n",
" # NCA Panasonic\n",
" cell_nca.update_battery_state(t_secs=t_secs[hour_start:hour_end], soc=soc[hour_start:hour_end], T_celsius=TdegC[hour_start:hour_end])\n",
" # NMC LTO\n",
" cell_nmc_lto.update_battery_state(t_secs=t_secs[hour_start:hour_end], soc=soc[hour_start:hour_end], T_celsius=TdegC[hour_start:hour_end])\n",
" # LMO Nissan Leaf\n",
" cell_lmo.update_battery_state(t_secs=t_secs[hour_start:hour_end], soc=soc[hour_start:hour_end], T_celsius=TdegC[hour_start:hour_end])\n",
"\n",
"plt.plot(cell_nmc_kokam.stressors['t_days']/365, cell_nmc_kokam.outputs['q'])\n",
"plt.plot(cell_lfp.stressors['t_days']/365, cell_lfp.outputs['q'])\n",
"plt.plot(cell_nmc_sanyo.stressors['t_days']/365, cell_nmc_sanyo.outputs['q'])\n",
"plt.plot(cell_nmc811_grSi.stressors['t_days']/365, cell_nmc811_grSi.outputs['q'])\n",
"plt.plot(cell_nca.stressors['t_days']/365, cell_nca.outputs['q'])\n",
"plt.plot(cell_nmc_lto.stressors['t_days']/365, cell_nmc_lto.outputs['q'])\n",
"plt.plot(cell_lmo.stressors['t_days']/365, cell_lmo.outputs['q'])\n",
"plt.xlabel('Time (years)')\n",
"plt.ylabel('Relative discharge capacity')\n",
"plt.legend(['NMC-Gr (Kokam)','LFP-Gr (Sony Murata)', 'NMC-Gr (Sanyo)', 'NMC811-GrSi (LG MJ1)', 'NCA-Gr (Panasonic)', 'NMC-LTO', 'LMO-Gr (2nd Life) (Leaf)'])\n",
"plt.ylim((0.7, 1.02))\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
2023-04-08 06:11:26 +09:00
"display_name": "base",
2023-04-08 06:05:55 +09:00
"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",
2023-04-08 06:11:26 +09:00
"version": "3.9.13"
2023-04-08 06:05:55 +09:00
},
2023-04-08 06:11:26 +09:00
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "e4cce46d6be9934fbd27f9ca0432556941ea5bdf741d4f4d64c6cd7f8dfa8fba"
}
}
2023-04-08 06:05:55 +09:00
},
"nbformat": 4,
"nbformat_minor": 2
}