Change battery form factor¶
In this example we will redesign a battery form factor. Thereafter compare our virtual cells to the baseline
In [1]:
Copied!
from breathe_design import api_interface as api
from breathe_design import enable_notebook_plotly
enable_notebook_plotly()
from breathe_design import api_interface as api
from breathe_design import enable_notebook_plotly
enable_notebook_plotly()
In [2]:
Copied!
cell = "Molicel P45B"
cell = "Molicel P45B"
We will begin with load the format of the Molicel P45B
In [3]:
Copied!
base_format = api.get_battery_format(cell)
base_format
base_format = api.get_battery_format(cell)
base_format
Out[3]:
{'shape': 'cylinder',
'material': 'steel',
'housingThickness_mm': 0.18,
'diameter_mm': 21.21,
'height_mm': 70,
'innerDiameter_mm': 2.3}
We will now apply changes to the format we do this with get_updated_format method. We will generate 10% shorter cell compared to baseline
In [4]:
Copied!
smaller_format = api.get_updated_format(
base_battery=cell,
name="smaller_format",
height_mm=0.9 * base_format["height_mm"],
)
smaller_format
smaller_format = api.get_updated_format(
base_battery=cell,
name="smaller_format",
height_mm=0.9 * base_format["height_mm"],
)
smaller_format
Out[4]:
{'shape': 'cylinder',
'material': 'steel',
'housingThickness_mm': 0.18,
'diameter_mm': 21.21,
'height_mm': 63.0,
'innerDiameter_mm': 2.3,
'name': 'smaller_format'}
We will also create a cell with 10% smaller diameter
In [5]:
Copied!
thinner_format = api.get_updated_format(
base_battery=cell,
name="thinner_format",
diameter_mm=0.9 * base_format["diameter_mm"],
)
thinner_format
thinner_format = api.get_updated_format(
base_battery=cell,
name="thinner_format",
diameter_mm=0.9 * base_format["diameter_mm"],
)
thinner_format
Out[5]:
{'shape': 'cylinder',
'material': 'steel',
'housingThickness_mm': 0.18,
'diameter_mm': 19.089000000000002,
'height_mm': 70,
'innerDiameter_mm': 2.3,
'name': 'thinner_format'}
In [6]:
Copied!
formats = [smaller_format, thinner_format]
formats = [smaller_format, thinner_format]
Now we can calculate all the equilibrium KPIs for each format using the get_eqm_kpis function. Instead of passing multiple designs as in previous examples, we now pass multiple formats.
In [7]:
Copied!
results = api.get_eqm_kpis(cell, designs=[], formats=formats)
results = api.get_eqm_kpis(cell, designs=[], formats=formats)
In [8]:
Copied!
results.get_kpis()
results.get_kpis()
Out[8]:
| Baseline | smaller_format | thinner_format | |
|---|---|---|---|
| KPI | |||
| Capacity [Ah] | 4.500000 | 4.882076 | 4.379541 |
| Nominal Voltage [V] | 3.656630 | 3.656630 | 3.656630 |
| Energy [Wh] | 16.454837 | 17.851948 | 16.014364 |
| Gravimetric Energy Density [Wh/kg] | 241.196608 | 282.773533 | 280.179666 |
| Volumetric Energy Density [Wh/l] | 665.310409 | 801.999042 | 799.383931 |
| Minimum Anode Voltage [mV] | 80.490746 | 80.490746 | 80.490746 |
| Weight [g] | 68.221675 | 63.131609 | 57.157481 |
| Volume [l] | 0.024733 | 0.022259 | 0.020033 |
| Heat Capacity [kJ/K] | 0.052220 | 0.049868 | 0.044967 |
These can be plotted using the compare_designs method in two different ways: one for a relative change in the KPIs and one for a delta change in the KPIs.
In [9]:
Copied!
results.compare_designs("relative")
results.compare_designs("relative")
In [10]:
Copied!
results.compare_designs("delta")
results.compare_designs("delta")
In [11]:
Copied!
results.plot_radar()
results.plot_radar()