A Julia package for battery dynamics modeling and simulation, providing interfaces to PyBaMM parameter sets and OCV data processing capabilities.
- PyBaMM Integration: Seamless conversion of PyBaMM parameter sets to Julia types
- OCV Data Processing: Load and process Open Circuit Voltage data from JSON files
- Parameter Management: Separate scalar and function parameters for easy access
- DataFrame Integration: Convert between DataFrames and dictionaries for flexible data handling
using Pkg
Pkg.add("BatteryDynamics")Or add it to your environment:
using Pkg
Pkg.add(url="https://github.com/WDWidanage/BatteryDynamics.jl")using BatteryDynamics
# Get available parameter sets
available_sets = get_available_parameter_sets()
println("Available parameter sets: ", available_sets)
# Load a specific parameter set
params = get_pybamm_parameter_set("Chen2020")
# Access scalar parameters
scalars = get_scalar_parameters(params)
cell_capacity = scalars["Cell capacity [A.h]"]
# Access function parameters
functions = get_function_parameters(params)
ocp_func = functions["Negative electrode OCP [V]"]
# Use the function
ocp_value = ocp_func(0.5) # State of charge = 0.5using BatteryDynamics
# Load OCV data from JSON file
ocv_data, meta_data = read_ocv_data("path/to/ocv_data.json")
# Convert DataFrame to dictionary
ocv_dict = dataframe_to_dict(ocv_data)get_available_parameter_sets(): Get list of available PyBaMM parameter setsget_pybamm_parameter_set(name): Load a specific parameter set by nameget_scalar_parameters(params): Extract scalar parameters from a parameter setget_function_parameters(params): Extract function parameters from a parameter set
read_ocv_data(filepath): Load OCV data from JSON filedataframe_to_dict(df): Convert DataFrame to dictionary
See the examples/ directory for detailed usage examples:
parameter_conversion_example.jl: Demonstrates PyBaMM parameter set conversion
- CondaPkg: Python environment management
- DataFrames: Data manipulation
- JSON: JSON file parsing
- ModelingToolkit: Symbolic modeling
- Plots: Plotting capabilities
- PythonCall: Python-Julia interface
- Julia 1.11+
- Python with PyBaMM installed (managed via CondaPkg)
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
If you use BatteryDynamics.jl in your research, please cite:
@software{batterydynamics2024,
title={BatteryDynamics.jl: A Julia package for battery dynamics modeling},
author={Widanage, W. D.},
year={2024},
url={https://github.com/WDWidanage/BatteryDynamics.jl}
}