BatterySimulatorBLAST/example.ipynb

732 lines
254 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": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"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": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"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",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"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",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"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": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"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",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"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",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\pgasper\\Documents\\GitHub\\BLAST-Py\\functions\\state_functions.py:16: RuntimeWarning: invalid value encountered in double_scalars\n",
" dydx = k*p*((y0/k)**((p-1)/p))\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"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()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x2a5bc0b7188>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(t_days/365, cell_metrics[5,:])\n",
"plt.plot(t_days/365, cell_lfp_metrics[4,:])\n",
"plt.plot(t_days/365, cell_nmc_metrics[3,:])\n",
"plt.xlabel('Time (years)')\n",
"plt.ylabel('Relative DC resistance')\n",
"plt.legend(['NMC-Gr (Kokam)','LFP-Gr', 'NMC-Gr (Sanyo)'])"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that the LFP-Gr cell has much lower resistance growth, relative to the capacity loss. This is more like the magnitude of resistance growth seen by most cells. The NMC-Gr cell from Kokam has much higher resistance growth relative to its capacity loss, likely due to a high power cell design and details of the testing protocol and curve fitting to calculate the DC resistance value from pulse data. NMC-Gr cell from Sanyo has very poor predicted lifetime, with high resistance growth and rapid capacity loss. This reflects the experimentally measured aging data (Sanyo: ~500 EFC cycle life at 80% DOD, Kokam: > 4000 EFC cycle life at 80% DOD)."
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Try the NMC|Gr Kokam life model on another simple profile with low lithium loss rate but rapid active material loss driven by low temperature cycling."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Temperature (Celsius)')"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"years = 10\n",
"hours = years * 365 * 24\n",
"t_hours = np.arange(hours)\n",
"soc = np.tile(\n",
" np.array(\n",
" [1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1,\n",
" 0.5, 0, 0, 0.5, 1, 1]\n",
" ),\n",
" int(len(t_hours/24))\n",
")\n",
"TdegC = 0 * np.ones(t_hours.shape)\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')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"cell_2 = Nmc111_Gr_Kokam75Ah_Battery()\n",
"\n",
"t_days = np.arange(years*365)\n",
"cell_2_metrics = np.zeros((len(cell_2.outputs), len(t_days)))\n",
"\n",
"for day in t_days:\n",
" hour_start = day*24\n",
" hour_end = (day+1)*24\n",
" cell_2.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",
" cell_2_metrics[:,day] = np.array(list(cell_2.outputs.values()))"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.9, 5.0)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(t_days/365, cell_2_metrics[6,:])\n",
"plt.plot(t_days/365, cell_2_metrics[9,:])\n",
"plt.plot(t_days/365, cell_2_metrics[5,:])\n",
"plt.xlabel('Time (years)')\n",
"plt.ylabel('Relative DC resistance')\n",
"plt.legend([r'r$_{LLI}$', r'r$_{LAM}$', 'r'])\n",
"plt.ylim((0.9, 5))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.7, 1.02)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(t_days/365, cell_2_metrics[1,:])\n",
"plt.plot(t_days/365, cell_2_metrics[4,:])\n",
"plt.plot(t_days/365, cell_2_metrics[0,:], '--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))"
]
}
],
"metadata": {
"interpreter": {
"hash": "40f086751e8f8f5a467e9309d1f7c4260661a6c2944e5db2eb5ae43b985dbc0f"
},
"kernelspec": {
"display_name": "Python 3.7.4 ('base')",
"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.7.4"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}