# PyBaMM ## Docs - [Batch Study](https://mintlify.wiki/pybamm-team/PyBaMM/advanced/batch-study.md): Run and compare multiple PyBaMM simulations in a single call using BatchStudy. - [Callbacks](https://mintlify.wiki/pybamm-team/PyBaMM/advanced/callbacks.md): Hook into experiment simulation events — logging, early stopping, data export — using PyBaMM's Callback interface. - [Custom Models](https://mintlify.wiki/pybamm-team/PyBaMM/advanced/custom-models.md): Build models from scratch using PyBaMM's expression tree, submodel architecture, and serialization API. - [Spatial Methods and Mesh](https://mintlify.wiki/pybamm-team/PyBaMM/advanced/spatial-methods.md): Configure geometry, submesh types, spatial discretisation methods, and resolution for PyBaMM simulations. - [BatchStudy](https://mintlify.wiki/pybamm-team/PyBaMM/api/batch-study.md): BatchStudy runs and compares multiple PyBaMM simulations in a single call. It supports both element-wise pairing and full Cartesian products of models, solvers, and experimental conditions. - [Callbacks](https://mintlify.wiki/pybamm-team/PyBaMM/api/callbacks.md): Callbacks let you hook into the PyBaMM experiment simulation loop to perform logging, monitoring, early stopping, or custom actions at each cycle and step boundary. - [Citations](https://mintlify.wiki/pybamm-team/PyBaMM/api/citations.md): PyBaMM tracks which models, solvers, and parameter sets are used in a simulation and compiles the relevant academic references so you can acknowledge them correctly. - [Experiment](https://mintlify.wiki/pybamm-team/PyBaMM/api/experiment.md): Define multi-step experimental protocols — charge, discharge, rest, and hold sequences — for battery simulations. - [Mesh](https://mintlify.wiki/pybamm-team/PyBaMM/api/mesh.md): The Mesh class assembles a collection of submeshes across all model domains. Submesh types and the number of grid points are configured via the submesh_types and var_pts dictionaries. - [BaseModel](https://mintlify.wiki/pybamm-team/PyBaMM/api/models/base-model.md): The foundation class all PyBaMM models extend, providing the equation system, geometry, and serialisation API. - [Equivalent Circuit Models API](https://mintlify.wiki/pybamm-team/PyBaMM/api/models/equivalent-circuit.md): Thevenin and other equivalent circuit models available in pybamm.equivalent_circuit. - [Lead-Acid Models API](https://mintlify.wiki/pybamm-team/PyBaMM/api/models/lead-acid.md): Electrochemical lead-acid battery models available in pybamm.lead_acid. - [Lithium-Ion Models API](https://mintlify.wiki/pybamm-team/PyBaMM/api/models/lithium-ion.md): Full-order and reduced-order lithium-ion battery models available in pybamm.lithium_ion. - [Parameter Sets](https://mintlify.wiki/pybamm-team/PyBaMM/api/parameters/parameter-sets.md): PyBaMM ships with built-in parameter sets for lithium-ion, lead-acid, sodium-ion, and equivalent circuit models. This page lists every available set and explains how to load, inspect, and extend them. - [ParameterValues](https://mintlify.wiki/pybamm-team/PyBaMM/api/parameters/parameter-values.md): The ParameterValues class manages all physical and model parameters for a PyBaMM simulation, providing a dictionary-like interface for getting, setting, and processing parameters. - [Plotting](https://mintlify.wiki/pybamm-team/PyBaMM/api/plotting.md): PyBaMM provides several plotting utilities — from interactive dynamic plots of solution variables to specialised voltage decomposition and cycle-degradation charts. - [Simulation](https://mintlify.wiki/pybamm-team/PyBaMM/api/simulation.md): High-level interface for building, solving, and visualising PyBaMM battery models. - [Solution](https://mintlify.wiki/pybamm-team/PyBaMM/api/solution.md): Access and post-process simulation results returned by pybamm.Simulation.solve(). - [CasadiSolver](https://mintlify.wiki/pybamm-team/PyBaMM/api/solvers/casadi.md): PyBaMM's CasadiSolver uses the CasADi symbolic framework and SUNDIALS integrators to solve ODE and DAE battery models. It supports event detection through a configurable "mode" parameter. - [IDAKLUSolver](https://mintlify.wiki/pybamm-team/PyBaMM/api/solvers/idaklu.md): The IDAKLUSolver is the recommended solver for most PyBaMM simulations. It uses the SUNDIALS IDA integrator with the KLU sparse direct linear solver, and supports parallelism, Hermite interpolation, and output-variable selection. - [JaxSolver](https://mintlify.wiki/pybamm-team/PyBaMM/api/solvers/jax.md): The JaxSolver provides JAX-compiled ODE and BDF integration, enabling GPU/TPU acceleration and gradient-based optimisation through automatic differentiation. - [Solvers Overview](https://mintlify.wiki/pybamm-team/PyBaMM/api/solvers/overview.md): PyBaMM provides several solver backends suited to different model types and performance requirements. This page compares the available solvers and explains how to choose the right one. - [ScipySolver](https://mintlify.wiki/pybamm-team/PyBaMM/api/solvers/scipy.md): The ScipySolver wraps scipy.integrate.solve_ivp to solve ODE-only battery models. It is the simplest solver and requires no additional compiled dependencies. - [Spatial Methods](https://mintlify.wiki/pybamm-team/PyBaMM/api/spatial-methods.md): Spatial methods control how PyBaMM discretises partial differential equations onto the mesh. The default for battery models is FiniteVolume, but SpectralVolume and finite-element methods are also available. - [Changelog](https://mintlify.wiki/pybamm-team/PyBaMM/contributing/changelog.md): Release history for PyBaMM, including new features, bug fixes, and breaking changes. - [Contributing to PyBaMM](https://mintlify.wiki/pybamm-team/PyBaMM/contributing/overview.md): How to report bugs, propose features, and submit code contributions to the PyBaMM project. - [Defining Experiments](https://mintlify.wiki/pybamm-team/PyBaMM/guides/experiments.md): Learn how to define multi-step battery test protocols using pybamm.Experiment, including charge, discharge, rest, and hold steps with cycling. - [Working with Battery Models](https://mintlify.wiki/pybamm-team/PyBaMM/guides/models.md): Learn how battery models are structured in PyBaMM, how to instantiate them, and how to configure model options for lithium-ion and other chemistries. - [Using Parameter Sets](https://mintlify.wiki/pybamm-team/PyBaMM/guides/parameters.md): Learn how to load built-in parameter sets, modify individual parameters, define custom parameter functions, and load parameters from BPX files. - [Plotting Results](https://mintlify.wiki/pybamm-team/PyBaMM/guides/plotting.md): Learn how to visualise PyBaMM simulation results using sim.plot(), QuickPlot, plot_voltage_components, plot_summary_variables, and plot2D. - [Running Simulations](https://mintlify.wiki/pybamm-team/PyBaMM/guides/simulations.md): Learn how to create a Simulation, set parameters, configure a solver, solve the model, and access the results. - [Choosing and Configuring Solvers](https://mintlify.wiki/pybamm-team/PyBaMM/guides/solvers.md): Overview of PyBaMM solvers, when to use each one, and how to configure tolerances, modes, and other solver options. - [Installation](https://mintlify.wiki/pybamm-team/PyBaMM/installation.md): Install PyBaMM on Linux, macOS, or Windows using pip or conda. - [Introduction](https://mintlify.wiki/pybamm-team/PyBaMM/introduction.md): PyBaMM is an open-source battery simulation package written in Python for multi-institutional, interdisciplinary research. - [Equivalent Circuit Models](https://mintlify.wiki/pybamm-team/PyBaMM/models/equivalent-circuit.md): Equivalent circuit models (ECMs) in PyBaMM, including the Thevenin model with configurable RC elements, thermal submodel, and diffusion element. - [Lead-Acid Models](https://mintlify.wiki/pybamm-team/PyBaMM/models/lead-acid.md): Physics-based lead-acid battery models in PyBaMM, including the Full porous-electrode model, the Leading-Order Quasi-Static (LOQS) model, and BasicFull. - [Lithium-Ion Models](https://mintlify.wiki/pybamm-team/PyBaMM/models/lithium-ion.md): Overview of the physics-based lithium-ion battery models available in PyBaMM, including SPM, SPMe, DFN, MPM, MSMR, Newman-Tobias, and Yang2017. - [Sodium-Ion Models](https://mintlify.wiki/pybamm-team/PyBaMM/models/sodium-ion.md): Sodium-ion battery models in PyBaMM, including BasicDFN, and how they relate to the lithium-ion model family. - [Quickstart](https://mintlify.wiki/pybamm-team/PyBaMM/quickstart.md): Run your first battery simulation with PyBaMM in minutes.