# stanford-developers/steer-opencell-design architecture

> Architecture diagram of the GitHub repository stanford-developers/steer-opencell-design, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/stanford-developers/steer-opencell-design
- Repository: https://github.com/stanford-developers/steer-opencell-design

## Overview

This package models lithium- and sodium-ion battery cells through a composable hierarchy, from materials to complete cell formats. The principal workflow is to define material blends and electrodes, arrange them in a layup, wrap that layup in an assembly, and place it in a cell with electrolyte and encapsulation. The README also documents electrochemical curves, cost and mass roll-ups, visualization, serialization, and database loading. Some branches reflect documented capabilities whose detailed wiring was not present in the sampled source.

Main entry points: [`steer_opencell_design/Constructions/Cells/Base.py`](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Cells/Base.py) (Cell Formats), [`steer_opencell_design/Constructions/Layups/Base.py`](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Layups/Base.py) (Electrode Layups), [`steer_opencell_design/Components/Electrodes.py`](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Components/Electrodes.py) (Electrodes), [`steer_opencell_design/Data/OpenCellDataManager.py`](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Data/OpenCellDataManager.py) (OpenCell Data Manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_materials["Materials and Recipes"]
  node_active_materials["Active Materials<br/>[ActiveMaterials.py]"]
  node_aux_materials["Auxiliary Materials<br/>[Binders.py]"]
  node_formulations["Formulations<br/>[Formulations.py]"]
end

subgraph group_components["Cell Components"]
  node_electrodes["Electrodes<br/>[Electrodes.py]"]
  node_collectors["Current Collectors<br/>[Base.py]"]
  node_separators["Separators<br/>[Separators.py]"]
  node_electrolyte["Electrolyte<br/>[Electrolytes.py]"]
  node_containers["Cell Containers<br/>[Base.py]"]
end

subgraph group_construction["Cell Construction"]
  node_layups["Electrode Layups<br/>[Base.py]"]
  node_laminate["Laminate Layup<br/>[Laminate.py]"]
  node_wound["Wound Assemblies<br/>[JellyRolls.py]"]
  node_stacked["Stacked Assemblies<br/>[Stacks.py]"]
  node_cells["Cell Formats<br/>[Base.py]"]
  node_cell_formats["Format Geometry<br/>[CylindricalCell.py]"]
end

subgraph group_data["Data Access"]
  node_data_manager["OpenCell Data Manager"]
  node_reference_data[("Reference Data")]
end

subgraph group_outputs["Model Outputs"]
  node_performance["Cell Performance<br/>[Base.py]"]
  node_visualization["Interactive Views<br/>[Base.py]"]
  node_serialization["Cell Serialization<br/>[Base.py]"]
end

node_designer(("Cell Designer"))

node_designer -->|"defines materials"| node_active_materials
node_active_materials -->|"blends into"| node_formulations
node_aux_materials -->|"blends into"| node_formulations
node_formulations -->|"formulates"| node_electrodes
node_collectors -->|"equips"| node_electrodes
node_designer -->|"configures"| node_electrodes
node_electrodes -->|"arranged in"| node_layups
node_separators -->|"layered with"| node_layups
node_layups -->|"specializes as"| node_laminate
node_laminate -->|"wound into"| node_wound
node_layups -->|"stacked into"| node_stacked
node_designer -->|"selects"| node_containers
node_wound -->|"assembled into"| node_cells
node_stacked -->|"assembled into"| node_cells
node_containers -->|"encapsulates"| node_cells
node_electrolyte -->|"fills"| node_cells
node_cells -->|"uses format"| node_cell_formats
node_cells -->|"calculates"| node_performance
node_cells -->|"provides views"| node_visualization
node_cells -->|"serializes"| node_serialization
node_designer -->|"loads designs"| node_data_manager
node_data_manager -.->|"reads reference data"| node_reference_data
node_data_manager -->|"loads cell designs"| node_cells

click node_active_materials "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Materials/ActiveMaterials.py"
click node_aux_materials "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Materials/Binders.py"
click node_formulations "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Materials/Formulations.py"
click node_electrodes "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Components/Electrodes.py"
click node_collectors "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Components/CurrentCollectors/Base.py"
click node_separators "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Components/Separators.py"
click node_electrolyte "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Materials/Electrolytes.py"
click node_containers "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Components/Containers/Base.py"
click node_layups "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Layups/Base.py"
click node_laminate "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Layups/Laminate.py"
click node_wound "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/ElectrodeAssemblies/JellyRolls.py"
click node_stacked "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/ElectrodeAssemblies/Stacks.py"
click node_cells "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Cells/Base.py"
click node_cell_formats "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Cells/CylindricalCell.py"
click node_data_manager "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Data/OpenCellDataManager.py"
click node_performance "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Cells/Base.py"
click node_visualization "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Cells/Base.py"
click node_serialization "https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Cells/Base.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_active_materials,node_aux_materials,node_formulations toneBlue
class node_electrodes,node_collectors,node_separators,node_electrolyte,node_containers toneAmber
class node_layups,node_laminate,node_wound,node_stacked,node_cells,node_cell_formats toneMint
class node_data_manager,node_reference_data toneRose
class node_performance,node_visualization,node_serialization,node_designer toneIndigo
```

## Components

### Materials and Recipes

- [Active Materials](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Materials/ActiveMaterials.py): `steer_opencell_design/Materials/ActiveMaterials.py`
- [Auxiliary Materials](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Materials/Binders.py): `steer_opencell_design/Materials/Binders.py`
- [Formulations](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Materials/Formulations.py): `steer_opencell_design/Materials/Formulations.py`

### Cell Components

- [Electrodes](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Components/Electrodes.py): `steer_opencell_design/Components/Electrodes.py`
- [Current Collectors](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Components/CurrentCollectors/Base.py): `steer_opencell_design/Components/CurrentCollectors/Base.py`
- [Separators](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Components/Separators.py): `steer_opencell_design/Components/Separators.py`
- [Electrolyte](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Materials/Electrolytes.py): `steer_opencell_design/Materials/Electrolytes.py`
- [Cell Containers](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Components/Containers/Base.py): `steer_opencell_design/Components/Containers/Base.py`

### Cell Construction

- [Electrode Layups](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Layups/Base.py): `steer_opencell_design/Constructions/Layups/Base.py`
- [Laminate Layup](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Layups/Laminate.py): `steer_opencell_design/Constructions/Layups/Laminate.py`
- [Wound Assemblies](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/ElectrodeAssemblies/JellyRolls.py): `steer_opencell_design/Constructions/ElectrodeAssemblies/JellyRolls.py`
- [Stacked Assemblies](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/ElectrodeAssemblies/Stacks.py): `steer_opencell_design/Constructions/ElectrodeAssemblies/Stacks.py`
- [Cell Formats](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Cells/Base.py): `steer_opencell_design/Constructions/Cells/Base.py`
- [Format Geometry](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Cells/CylindricalCell.py): `steer_opencell_design/Constructions/Cells/CylindricalCell.py`

### Data Access

- [OpenCell Data Manager](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Data/OpenCellDataManager.py): `steer_opencell_design/Data/OpenCellDataManager.py`
- **Reference Data**

### Model Outputs

- [Cell Performance](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Cells/Base.py): `steer_opencell_design/Constructions/Cells/Base.py`
- [Interactive Views](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Cells/Base.py): `steer_opencell_design/Constructions/Cells/Base.py`
- [Cell Serialization](https://github.com/stanford-developers/steer-opencell-design/blob/main/steer_opencell_design/Constructions/Cells/Base.py): `steer_opencell_design/Constructions/Cells/Base.py`

### Other components

- **Cell Designer**

## Connections

- Cell Designer → Active Materials: defines materials
- Active Materials → Formulations: blends into
- Auxiliary Materials → Formulations: blends into
- Formulations → Electrodes: formulates
- Current Collectors → Electrodes: equips
- Cell Designer → Electrodes: configures
- Electrodes → Electrode Layups: arranged in
- Separators → Electrode Layups: layered with
- Electrode Layups → Laminate Layup: specializes as
- Laminate Layup → Wound Assemblies: wound into
- Electrode Layups → Stacked Assemblies: stacked into
- Cell Designer → Cell Containers: selects
- Wound Assemblies → Cell Formats: assembled into
- Stacked Assemblies → Cell Formats: assembled into
- Cell Containers → Cell Formats: encapsulates
- Electrolyte → Cell Formats: fills
- Cell Formats → Format Geometry: uses format
- Cell Formats → Cell Performance: calculates
- Cell Formats → Interactive Views: provides views
- Cell Formats → Cell Serialization: serializes
- Cell Designer → OpenCell Data Manager: loads designs
- OpenCell Data Manager → Reference Data: reads reference data
- OpenCell Data Manager → Cell Formats: loads cell designs
