Simulation#
Client for running battery simulations using UCP protocol and PyBaMM.
Simulation client for running battery simulations.
This module provides the SimulationClient for running battery
simulations using the Universal Cycler Protocol (UCP) format. It supports
single simulations, batch simulations with design of experiments (DOE),
and PyBaMM-based modeling.
- class ionworks.simulation.QuickModelConfig(*, capacity=1.0, chemistry='NMC/Graphite')[source]#
Bases:
BaseModelQuick model configuration for protocol-based simulations.
- model_config = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class ionworks.simulation.ProtocolExperimentConfig(*, protocol, name)[source]#
Bases:
BaseModelProtocol experiment configuration.
- model_config = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class ionworks.simulation.ProtocolSimulationRequest(*, parameterized_model, protocol_experiment, experiment_parameters=None, design_parameters=None, max_backward_jumps=None, study_id=None, extra_variables=None)[source]#
Bases:
BaseModelRequest model for single protocol-based simulation.
- Parameters:
- parameterized_model: Any#
- protocol_experiment: ProtocolExperimentConfig#
- model_config = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class ionworks.simulation.DOERow(*, type, name, min=None, max=None, count=None, values=None, mean=None, std=None)[source]#
Bases:
BaseModelDesign of experiments row configuration.
- Parameters:
- model_config = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class ionworks.simulation.DesignParametersDOE(*, sampling, rows, count=None)[source]#
Bases:
BaseModelDesign of experiments configuration.
- model_config = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class ionworks.simulation.ProtocolSimulationBatchRequest(*, parameterized_model, protocol_experiment, design_parameters_doe, experiment_parameters=None, max_backward_jumps=None, study_id=None, extra_variables=None)[source]#
Bases:
BaseModelRequest model for batch protocol-based simulation.
- Parameters:
parameterized_model (Any)
protocol_experiment (ProtocolExperimentConfig)
design_parameters_doe (DesignParametersDOE)
max_backward_jumps (int | None)
study_id (str | None)
- parameterized_model: Any#
- protocol_experiment: ProtocolExperimentConfig#
- design_parameters_doe: DesignParametersDOE#
- model_config = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class ionworks.simulation.SimulationResponse(*, simulation_id, job_id)[source]#
Bases:
BaseModelResponse model for simulation creation.
- model_config = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class ionworks.simulation.SimulationClient(client)[source]#
Bases:
objectClient for running simulations.
- Parameters:
client (Any)
- __init__(client)[source]#
Initialize the SimulationClient.
- Parameters:
client (Any) – The HTTP client instance for making API requests.
- Return type:
None
- protocol(config)[source]#
Create a single protocol-based simulation.
- Parameters:
Configuration dictionary containing:
parameterized_model: quick_model dict, full model dict, or model ID string
protocol_experiment: ProtocolExperimentConfig dict with protocol and name fields
experiment_parameters: Optional dict with initial_soc and initial_temperature
design_parameters: Optional dict[str, float]
max_backward_jumps: Optional int
study_id: Optional str
extra_variables: Optional list[str] — extra variables to include in simulation output
- Returns:
Response containing simulation_id and job_id.
- Return type:
- Raises:
ValueError – If the configuration is invalid.
- protocol_batch(config)[source]#
Create multiple protocol-based simulations using DOE.
- Parameters:
Configuration dictionary containing:
parameterized_model: quick_model dict, full model dict, or model ID string
protocol_experiment: ProtocolExperimentConfig dict with protocol and name fields
design_parameters_doe: DesignParametersDOE dict
experiment_parameters: Optional dict
max_backward_jumps: Optional int
study_id: Optional str
extra_variables: Optional list[str] — extra variables to include in simulation output
- Returns:
List of responses, each containing simulation_id and job_id.
- Return type:
- Raises:
ValueError – If the configuration is invalid.
- get_result(simulation_id)[source]#
Get simulation data/result for a completed simulation.
- Parameters:
simulation_id (str) – The UUID of the simulation.
- Returns:
Simulation data object containing time_series, steps, and metrics. Returns 404 if simulation hasn’t completed yet.
- Return type:
- Raises:
Exception – If simulation data not found (simulation may not be completed yet). The client will raise an appropriate error for 404 responses.
- wait_for_completion(simulation_id, timeout=60, poll_interval=2, verbose=True)[source]#
Wait for simulation(s) to complete by polling until done or timeout.
- Parameters:
- Returns:
Completed simulation(s). Returns single dict if single ID provided, list of dicts if list of IDs provided. Only returns completed simulations if timeout is reached.
- Return type:
- Raises:
TimeoutError – If timeout is reached before all simulations complete.