Cells¶
Complete battery cell models. Each cell type wraps one or more electrode assemblies inside an encapsulation, fills with electrolyte, and computes energy, mass, cost, and volumetric properties.
All cell types provide:
- Settable properties:
operating_voltage_window,reversible_capacity,n_electrode_assembly,electrolyte_overfill - Computed properties:
energy,mass,cost,volume,specific_energy,volumetric_energy,cost_per_energy - Visualization:
get_cross_section(),get_top_down_view(),get_capacity_plot(),plot_mass_breakdown(),plot_cost_breakdown()
Cylindrical Cell¶
For round wound jelly rolls (e.g., 18650, 21700, 4680).
CylindricalCell
¶
Cylindrical battery cell implementation.
Attributes¶
Classes¶
CylindricalCell
¶
CylindricalCell(reference_electrode_assembly: WoundJellyRoll, encapsulation: CylindricalEncapsulation, electrolyte: Electrolyte, operating_voltage_window: Tuple[float, float] = (None, None), electrolyte_overfill: float = 20, name: str = 'Cylindrical Cell')
Bases: _Cell
Complete cylindrical battery cell (e.g., 18650, 21700, 4680 format). Combines a wound jelly roll with a cylindrical canister encapsulation and electrolyte.
Create a cylindrical cell with wound jelly roll electrode assembly.
Parameters¶
reference_electrode_assembly : WoundJellyRoll Electrochemical stack defining cell capacity and voltage behavior encapsulation : CylindricalEncapsulation Mechanical housing (canister, lid, terminals) defining external geometry electrolyte : Electrolyte Bulk electrolyte material with density and cost properties operating_voltage_window : Tuple[float, float] Operating voltage window (min_voltage, max_voltage) in volts electrolyte_overfill : float, optional Fractional overfill beyond pore volume (default: 20%) name : str, optional Display name for the cell (default: "Cylindrical Cell") n_electrode_assembly : int, optional Number of parallel electrode assemblies (default: 1)
Attributes¶
radius_range
property
¶
Get the valid range for cell radius in mm.
radius_hard_range
property
¶
Get the hard limit range for cell radius in mm.
diameter_range
property
¶
Get the valid range for cell diameter in mm.
diameter_hard_range
property
¶
Get the hard limit range for cell diameter in mm.
height_range
property
¶
Get the valid range for cell height in mm.
height_hard_range
property
¶
Get the hard limit range for cell height in mm.
reference_electrode_assembly
property
writable
¶
reference_electrode_assembly: WoundJellyRoll
Get the reference wound jelly roll electrode assembly.
encapsulation
property
writable
¶
encapsulation: CylindricalEncapsulation
Get the cylindrical encapsulation.
n_electrode_assembly
property
writable
¶
Get the number of electrode assemblies (always 1 for cylindrical).
Methods:¶
fit_assembly_radius_to_canister
¶
Resize the jelly roll radius to match the canister inner radius.
fit_assembly_height_to_canister
¶
Resize the jelly roll height to match the canister internal height.
fit_encapsulation_radius_to_assembly
¶
Fit the encapsulation radius to the electrode assembly.
Delegates to CylindricalEncapsulation.fit_radius() using the reference electrode assembly.
Parameters¶
clearance : float, optional Additional clearance in mm (default: 0)
fit_encapsulation_height_to_assembly
¶
Fit the encapsulation internal height to the electrode assembly.
Delegates to CylindricalEncapsulation.fit_height() using the reference electrode assembly.
Parameters¶
clearance : float, optional Additional clearance in mm (default: 0)
plot_top_down_view
¶
plot_cross_section
¶
Generate cross-section view showing the spiral winding and canister.
Prismatic Cell¶
For flat-wound or stacked assemblies in hard-case housings.
PrismaticCell
¶
Prismatic battery cell implementation.
Classes¶
PrismaticCell
¶
PrismaticCell(reference_electrode_assembly: FlatWoundJellyRoll | ZFoldStack | PunchedStack, n_electrode_assembly: int, encapsulation: PrismaticEncapsulation, electrolyte: Electrolyte, operating_voltage_window: Tuple[float, float] = (None, None), clipped_tab_length: float = None, electrolyte_overfill: float = 20, name: str = 'Prismatic Cell')
Bases: _Cell
Prismatic hard-case battery cell. Supports both stacked and flat-wound jelly roll internal constructions with a rigid metal canister.
Create a prismatic cell with wound jelly roll or stacked electrode assembly.
Parameters¶
reference_electrode_assembly : FlatWoundJellyRoll | ZFoldStack | PunchedStack Electrochemical stack defining cell capacity and voltage behavior n_electrode_assembly : int Number of parallel electrode assemblies encapsulation : PrismaticEncapsulation Mechanical housing (canister, lid, terminals) defining external geometry electrolyte : Electrolyte Bulk electrolyte material with density and cost properties operating_voltage_window : Tuple[float, float] Operating voltage window (min_voltage, max_voltage) in volts clipped_tab_length : float, optional Length of clipped tabs in mm (default: None, uses full tab length) electrolyte_overfill : float, optional Fractional overfill beyond pore volume (default: 0.2 = 20%) name : str, optional Display name for the cell (default: "Prismatic Cell")
Attributes¶
length_hard_range
property
¶
Get the hard limit range for cell length in mm.
width_hard_range
property
¶
Get the hard limit range for cell width in mm.
n_electrode_assembly
property
writable
¶
Get the number of electrode assemblies in the cell.
height_range
property
¶
Get the valid range for cell height in mm.
height_hard_range
property
¶
Get the hard limit range for cell height in mm.
clipped_tab_length_range
property
¶
Get valid range for clipped tab length.
Returns¶
Tuple[float, float] (min, max) clipped tab length in mm. Maximum is limited by the shortest free (uncoated) tab length among cathode and anode.
reference_electrode_assembly
property
writable
¶
reference_electrode_assembly: FlatWoundJellyRoll | ZFoldStack | PunchedStack
Get reference electrode assembly.
Methods:¶
plot_top_down_view
¶
plot_side_view
¶
fit_encapsulation_height_to_assemblies
¶
Fit the encapsulation height to the electrode assemblies.
Delegates to PrismaticEncapsulation.fit_height() using the first electrode assembly (which has clipped tabs).
Parameters¶
clearance : float, optional Additional clearance in mm (default: 0)
fit_encapsulation_width_to_assemblies
¶
Fit the encapsulation width to the electrode assemblies.
Delegates to PrismaticEncapsulation.fit_width() using the reference electrode assembly.
Parameters¶
clearance : float, optional Additional clearance in mm (default: 0)
Pouch Cell¶
For stacked assemblies in soft-pack laminate pouches.
PouchCell
¶
Pouch (soft-pack) battery cell implementation.
Classes¶
PouchCell
¶
PouchCell(reference_electrode_assembly: ZFoldStack | PunchedStack | FlatWoundJellyRoll, n_electrode_assembly: int, encapsulation: PouchEncapsulation, electrolyte: Electrolyte, operating_voltage_window: Tuple[float, float] = (None, None), side_seal_thickness: float = 5, top_seal_thickness: float = 5, bottom_seal_thickness: float = 5, clipped_tab_length: float = None, electrolyte_overfill: float = 20, name: str = 'Pouch Cell')
Bases: _Cell
Pouch (soft-pack) battery cell. Combines stacked electrode assemblies with laminate film encapsulation, terminals, and electrolyte.
Create a pouch cell with stacked electrode assembly.
Parameters¶
reference_electrode_assembly : ZFoldStack | PunchedStack | FlatWoundJellyRoll Electrochemical assembly defining cell capacity and voltage behavior. A flat wound jelly roll must already carry aligned notches. encapsulation : PouchEncapsulation Mechanical housing (canister, lid, terminals) defining external geometry electrolyte : Electrolyte Bulk electrolyte material with density and cost properties operating_voltage_window : Tuple[float, float] Operating voltage window (min_voltage, max_voltage) in volts electrolyte_overfill : float, optional Fractional overfill beyond pore volume (default: 0.2 = 20%) name : str, optional Display name for the cell (default: "Pouch Cell") n_electrode_assembly : int, optional Number of parallel electrode assemblies (default: 1)
Attributes¶
side_seal_thickness_range
property
¶
Get the valid range for side seal thickness in mm.
side_seal_thickness_hard_range
property
¶
Get the hard limit range for side seal thickness in mm.
top_seal_thickness_range
property
¶
Get the valid range for top seal thickness in mm.
top_seal_thickness_hard_range
property
¶
Get the hard limit range for top seal thickness in mm.
bottom_seal_thickness_range
property
¶
Get the valid range for bottom seal thickness in mm.
bottom_seal_thickness_hard_range
property
¶
Get the hard limit range for bottom seal thickness in mm.
reference_electrode_assembly
property
writable
¶
reference_electrode_assembly: ZFoldStack | PunchedStack | FlatWoundJellyRoll
Get reference electrode assembly.
clipped_tab_length
property
writable
¶
Get clipped tab length in mm, or None when the tabs are unclipped.
The setter accepts None (the constructor's default) and _clip_tabs
treats it as "leave the tabs alone", so a pouch can legitimately have no
clip length -- including any cell converted from another form factor,
which cannot supply one it never had. Report that rather than raising on
the arithmetic.
clipped_tab_length_range
property
¶
Get valid range for clipped tab length.
Returns¶
Tuple[float, float] (min, max) clipped tab length in mm. Maximum is limited by the shortest free (uncoated) tab length among cathode and anode.
height_hard_range
property
¶
Get the hard limit range for cell height in mm.
thickness
property
writable
¶
Get the total cell thickness in mm (assemblies + laminates).
thickness_hard_range
property
¶
Get the hard limit range for cell thickness in mm.
Methods:¶
plot_side_view
¶
plot_top_down_view
¶
Flex-Frame Cell¶
For solid-state cell designs with a flex-frame housing.
FlexFrameCell
¶
Flex-frame battery cell implementation.
Classes¶
FlexFrameCell
¶
FlexFrameCell(reference_electrode_assembly: PunchedStack, encapsulation: FlexFrameEncapsulation, catholyte: Electrolyte, operating_voltage_window: Tuple[float, float] = (None, None), clipped_tab_length: float = None, name: str = 'FlexFrame Solid State Cell')
Bases: _Cell
Flex-frame battery cell for solid-state or specialized designs. Uses a rigid polymer frame with laminate sealing instead of a metal canister.
Create a flex frame cell with stacked electrode assembly.
Parameters¶
reference_electrode_assembly : PunchedStack Electrochemical stack defining cell capacity and voltage behavior encapsulation : FlexFrameEncapsulation Mechanical housing (canister, lid, terminals) defining external geometry catholyte : Electrolyte Bulk electrolyte material with density and cost properties operating_voltage_window : Tuple[float, float] Operating voltage window (min_voltage, max_voltage) in volts name : str, optional Display name for the cell (default: "FlexFrame Solid State Cell")
Attributes¶
reference_electrode_assembly
property
writable
¶
reference_electrode_assembly: PunchedStack
Get reference electrode assembly.
n_electrode_assembly
property
writable
¶
Get the number of electrode assemblies (always 1 for flex frame).
height_range
property
¶
Get the valid range for cell height in mm.
height_hard_range
property
¶
Get the hard limit range for cell height in mm.
width_hard_range
property
¶
Get the hard limit range for cell width in mm.
thickness
property
writable
¶
Get the total cell thickness in mm (assembly + laminates).
thickness_range
property
¶
Get the valid range for cell thickness in mm.
thickness_hard_range
property
¶
Get the hard limit range for cell thickness in mm.
clipped_tab_length_range
property
¶
Get valid range for clipped tab length.
Returns¶
Tuple[float, float] (min, max) clipped tab length in mm. Maximum is limited by the shortest free (uncoated) tab length among cathode and anode.