PyBaMM-GEM 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pybamm_gem-0.1.0/.git_archival.txt +4 -0
- pybamm_gem-0.1.0/.gitattributes.txt +1 -0
- pybamm_gem-0.1.0/.gitignore +129 -0
- pybamm_gem-0.1.0/.pre-commit-config.yaml +65 -0
- pybamm_gem-0.1.0/.readthedocs.yml +28 -0
- pybamm_gem-0.1.0/CITATION.cff +25 -0
- pybamm_gem-0.1.0/CODE_OF_CONDUCT.md +45 -0
- pybamm_gem-0.1.0/CONTRIBUTING.md +150 -0
- pybamm_gem-0.1.0/LICENSE +28 -0
- pybamm_gem-0.1.0/LICENSES-bundled.txt +10 -0
- pybamm_gem-0.1.0/PKG-INFO +175 -0
- pybamm_gem-0.1.0/README.md +127 -0
- pybamm_gem-0.1.0/docs/_static/.gitkeep +0 -0
- pybamm_gem-0.1.0/docs/architecture.md +42 -0
- pybamm_gem-0.1.0/docs/conf.py +191 -0
- pybamm_gem-0.1.0/docs/design_principles.md +101 -0
- pybamm_gem-0.1.0/docs/index.md +17 -0
- pybamm_gem-0.1.0/docs/refs.bib +0 -0
- pybamm_gem-0.1.0/examples/01_parameter_set_registration_demo.ipynb +259 -0
- pybamm_gem-0.1.0/noxfile.py +70 -0
- pybamm_gem-0.1.0/pyproject.toml +139 -0
- pybamm_gem-0.1.0/src/pybamm_gem/__init__.py +77 -0
- pybamm_gem-0.1.0/src/pybamm_gem/_version.py +24 -0
- pybamm_gem-0.1.0/src/pybamm_gem/entry_point.py +154 -0
- pybamm_gem-0.1.0/src/pybamm_gem/models/input/ExampleReservoir.py +200 -0
- pybamm_gem-0.1.0/src/pybamm_gem/models/input/ExampleSPM.py +215 -0
- pybamm_gem-0.1.0/src/pybamm_gem/parameters/input/ExampleChen2020.py +371 -0
- pybamm_gem-0.1.0/src/pybamm_gem/parameters/input/Imperial2026.py +352 -0
- pybamm_gem-0.1.0/src/pybamm_gem/py.typed +0 -0
- pybamm_gem-0.1.0/tests/generated_project_tests/test_entry_points.py +46 -0
- pybamm_gem-0.1.0/tests/user_tests/test_package.py +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.git_archival.txt export-subst
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Adapted from the Scientific Python style guide
|
|
2
|
+
# See https://learn.scientific-python.org/development/guides/style/
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# Byte-compiled / optimized / DLL files
|
|
6
|
+
__pycache__/
|
|
7
|
+
*.py[cod]
|
|
8
|
+
*$py.class
|
|
9
|
+
|
|
10
|
+
# C extensions
|
|
11
|
+
*.so
|
|
12
|
+
|
|
13
|
+
# Distribution / packaging
|
|
14
|
+
.Python
|
|
15
|
+
build/
|
|
16
|
+
develop-eggs/
|
|
17
|
+
dist/
|
|
18
|
+
downloads/
|
|
19
|
+
eggs/
|
|
20
|
+
.eggs/
|
|
21
|
+
lib/
|
|
22
|
+
lib64/
|
|
23
|
+
parts/
|
|
24
|
+
sdist/
|
|
25
|
+
var/
|
|
26
|
+
wheels/
|
|
27
|
+
share/python-wheels/
|
|
28
|
+
*.egg-info/
|
|
29
|
+
.installed.cfg
|
|
30
|
+
*.egg
|
|
31
|
+
MANIFEST
|
|
32
|
+
|
|
33
|
+
# PyInstaller
|
|
34
|
+
# Usually these files are written by a python script from a template
|
|
35
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
36
|
+
*.manifest
|
|
37
|
+
*.spec
|
|
38
|
+
|
|
39
|
+
# Installer logs
|
|
40
|
+
pip-log.txt
|
|
41
|
+
pip-delete-this-directory.txt
|
|
42
|
+
|
|
43
|
+
# Unit test / coverage reports
|
|
44
|
+
htmlcov/
|
|
45
|
+
.tox/
|
|
46
|
+
.nox/
|
|
47
|
+
.coverage
|
|
48
|
+
.coverage.*
|
|
49
|
+
.cache
|
|
50
|
+
nosetests.xml
|
|
51
|
+
coverage.xml
|
|
52
|
+
*.cover
|
|
53
|
+
*.py,cover
|
|
54
|
+
.hypothesis/
|
|
55
|
+
.pytest_cache/
|
|
56
|
+
cover/
|
|
57
|
+
|
|
58
|
+
# Translations
|
|
59
|
+
*.mo
|
|
60
|
+
*.pot
|
|
61
|
+
|
|
62
|
+
# Sphinx documentation
|
|
63
|
+
docs/_build/
|
|
64
|
+
|
|
65
|
+
# PyBuilder
|
|
66
|
+
.pybuilder/
|
|
67
|
+
target/
|
|
68
|
+
|
|
69
|
+
# Jupyter Notebook
|
|
70
|
+
.ipynb_checkpoints
|
|
71
|
+
|
|
72
|
+
# IPython
|
|
73
|
+
profile_default/
|
|
74
|
+
ipython_config.py
|
|
75
|
+
|
|
76
|
+
# pyenv
|
|
77
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
78
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
79
|
+
# .python-version
|
|
80
|
+
|
|
81
|
+
# pipenv
|
|
82
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
83
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
84
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
85
|
+
# install all needed dependencies.
|
|
86
|
+
#Pipfile.lock
|
|
87
|
+
|
|
88
|
+
# Environments
|
|
89
|
+
.env
|
|
90
|
+
.venv
|
|
91
|
+
env/
|
|
92
|
+
venv/
|
|
93
|
+
ENV/
|
|
94
|
+
env.bak/
|
|
95
|
+
venv.bak/
|
|
96
|
+
|
|
97
|
+
# Spyder project settings
|
|
98
|
+
.spyderproject
|
|
99
|
+
.spyproject
|
|
100
|
+
|
|
101
|
+
# Rope project settings
|
|
102
|
+
.ropeproject
|
|
103
|
+
|
|
104
|
+
# setuptools_scm
|
|
105
|
+
src/*/_version.py
|
|
106
|
+
|
|
107
|
+
# ruff
|
|
108
|
+
.ruff_cache/
|
|
109
|
+
|
|
110
|
+
# OS specific stuff
|
|
111
|
+
.DS_Store
|
|
112
|
+
.DS_Store?
|
|
113
|
+
._*
|
|
114
|
+
.Spotlight-V100
|
|
115
|
+
.Trashes
|
|
116
|
+
ehthumbs.db
|
|
117
|
+
Thumbs.db
|
|
118
|
+
|
|
119
|
+
# Common editor files
|
|
120
|
+
*~
|
|
121
|
+
*.swp
|
|
122
|
+
|
|
123
|
+
# hatch-vcs
|
|
124
|
+
*/_version.py
|
|
125
|
+
|
|
126
|
+
# mypy
|
|
127
|
+
.mypy_cache
|
|
128
|
+
.dmypy.json
|
|
129
|
+
dmypy.json
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Adapted from the Scientific Python style guide
|
|
2
|
+
# See https://learn.scientific-python.org/development/guides/style/
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
ci:
|
|
6
|
+
autoupdate_commit_msg: "chore: update pre-commit hooks"
|
|
7
|
+
autofix_commit_msg: "style: pre-commit fixes"
|
|
8
|
+
|
|
9
|
+
repos:
|
|
10
|
+
|
|
11
|
+
- repo: https://github.com/asottile/blacken-docs
|
|
12
|
+
rev: "1.15.0"
|
|
13
|
+
hooks:
|
|
14
|
+
- id: blacken-docs
|
|
15
|
+
additional_dependencies: [black==23.7.0]
|
|
16
|
+
|
|
17
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
18
|
+
rev: "v4.4.0"
|
|
19
|
+
hooks:
|
|
20
|
+
- id: check-added-large-files
|
|
21
|
+
- id: check-case-conflict
|
|
22
|
+
- id: check-merge-conflict
|
|
23
|
+
- id: check-symlinks
|
|
24
|
+
- id: check-yaml
|
|
25
|
+
- id: debug-statements
|
|
26
|
+
- id: end-of-file-fixer
|
|
27
|
+
- id: mixed-line-ending
|
|
28
|
+
- id: name-tests-test
|
|
29
|
+
args: ["--pytest-test-first"]
|
|
30
|
+
- id: requirements-txt-fixer
|
|
31
|
+
- id: trailing-whitespace
|
|
32
|
+
|
|
33
|
+
- repo: https://github.com/pre-commit/pygrep-hooks
|
|
34
|
+
rev: "v1.10.0"
|
|
35
|
+
hooks:
|
|
36
|
+
- id: rst-backticks
|
|
37
|
+
- id: rst-directive-colons
|
|
38
|
+
- id: rst-inline-touching-normal
|
|
39
|
+
|
|
40
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
41
|
+
rev: "v0.0.280"
|
|
42
|
+
hooks:
|
|
43
|
+
- id: ruff
|
|
44
|
+
args: ["--fix", "--show-fixes"]
|
|
45
|
+
|
|
46
|
+
- repo: https://github.com/codespell-project/codespell
|
|
47
|
+
rev: "v2.2.5"
|
|
48
|
+
hooks:
|
|
49
|
+
- id: codespell
|
|
50
|
+
|
|
51
|
+
- repo: local
|
|
52
|
+
hooks:
|
|
53
|
+
- id: disallow-caps
|
|
54
|
+
name: Disallow improper capitalization
|
|
55
|
+
language: pygrep
|
|
56
|
+
entry: PyBind|Numpy|Scipy|Cmake|CCache|Github|Pybamm
|
|
57
|
+
exclude: .pre-commit-config.yaml
|
|
58
|
+
|
|
59
|
+
# mypy
|
|
60
|
+
|
|
61
|
+
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
62
|
+
rev: v1.4.1
|
|
63
|
+
hooks:
|
|
64
|
+
- id: mypy
|
|
65
|
+
files: "^(src/|tests$)"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Read the Docs configuration file
|
|
2
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
version: 2
|
|
6
|
+
|
|
7
|
+
build:
|
|
8
|
+
os: ubuntu-22.04
|
|
9
|
+
tools:
|
|
10
|
+
python: "3.11"
|
|
11
|
+
jobs:
|
|
12
|
+
post_checkout:
|
|
13
|
+
- git fetch --unshallow
|
|
14
|
+
|
|
15
|
+
sphinx:
|
|
16
|
+
configuration: docs/conf.py
|
|
17
|
+
|
|
18
|
+
python:
|
|
19
|
+
install:
|
|
20
|
+
- method: pip
|
|
21
|
+
path: .
|
|
22
|
+
extra_requirements:
|
|
23
|
+
- docs
|
|
24
|
+
|
|
25
|
+
formats:
|
|
26
|
+
- pdf
|
|
27
|
+
- epub
|
|
28
|
+
- htmlzip
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
title: "PyBaMM-GEM"
|
|
3
|
+
message: "If you use PyBaMM-GEM in your research, please cite this software."
|
|
4
|
+
type: software
|
|
5
|
+
|
|
6
|
+
authors:
|
|
7
|
+
- family-names: "Mohammed Asheruddin"
|
|
8
|
+
given-names: "N"
|
|
9
|
+
|
|
10
|
+
repository-code: "https://github.com/mohammedasher/PyBaMM_GEM"
|
|
11
|
+
|
|
12
|
+
license: "BSD-3-Clause"
|
|
13
|
+
|
|
14
|
+
abstract: >
|
|
15
|
+
PyBaMM-GEM is an open, collaborative ecosystem for developing,
|
|
16
|
+
validating, sharing and maintaining advanced battery models,
|
|
17
|
+
submodels and parameter sets that extend the PyBaMM framework.
|
|
18
|
+
|
|
19
|
+
keywords:
|
|
20
|
+
- batteries
|
|
21
|
+
- lithium-ion
|
|
22
|
+
- battery modelling
|
|
23
|
+
- electrochemistry
|
|
24
|
+
- PyBaMM
|
|
25
|
+
- scientific computing
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
PyBaMM-GEM is built in the spirit of the PyBaMM community. We aim to provide a respectful, inclusive, and collaborative environment for battery modelling researchers, developers, and users.
|
|
4
|
+
|
|
5
|
+
## Our pledge
|
|
6
|
+
|
|
7
|
+
We as contributors and maintainers pledge to make participation in PyBaMM-GEM a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, education, nationality, personal appearance, race, religion, sexual identity and orientation, or career stage.
|
|
8
|
+
|
|
9
|
+
## Our standards
|
|
10
|
+
|
|
11
|
+
Examples of behaviour that contributes to a positive environment include:
|
|
12
|
+
|
|
13
|
+
- being respectful and constructive,
|
|
14
|
+
- welcoming different levels of experience,
|
|
15
|
+
- giving and receiving feedback gracefully,
|
|
16
|
+
- focusing on what is best for the community,
|
|
17
|
+
- showing empathy towards other contributors.
|
|
18
|
+
|
|
19
|
+
Examples of unacceptable behaviour include:
|
|
20
|
+
|
|
21
|
+
- harassment, intimidation, or discrimination,
|
|
22
|
+
- personal attacks,
|
|
23
|
+
- inappropriate or unwelcome comments,
|
|
24
|
+
- publishing private information without permission,
|
|
25
|
+
- conduct that would reasonably be considered inappropriate in a professional setting.
|
|
26
|
+
|
|
27
|
+
## Scientific collaboration principles
|
|
28
|
+
|
|
29
|
+
PyBaMM-GEM is a scientific software project. In addition to respectful conduct, contributors are expected to uphold principles of scientific collaboration:
|
|
30
|
+
|
|
31
|
+
- represent models, assumptions, and limitations accurately,
|
|
32
|
+
- give appropriate credit to prior work, PyBaMM, GEM contributors, and collaborators,
|
|
33
|
+
- welcome evidence-based scientific disagreement,
|
|
34
|
+
- distinguish clearly between validated results and experimental work,
|
|
35
|
+
- support reproducibility through documentation, examples, tests, and references.
|
|
36
|
+
|
|
37
|
+
Scientific disagreement is welcomed when conducted respectfully and supported by evidence. Personal criticism is not.
|
|
38
|
+
|
|
39
|
+
## Enforcement
|
|
40
|
+
|
|
41
|
+
Project maintainers are responsible for clarifying and enforcing standards of acceptable behaviour. Maintainers may remove, edit, or reject comments, commits, issues, pull requests, and other contributions that do not align with this Code of Conduct.
|
|
42
|
+
|
|
43
|
+
## Acknowledgement
|
|
44
|
+
|
|
45
|
+
This Code of Conduct is based on the widely used Contributor Covenant and adapted for PyBaMM-GEM as a scientific software project that builds upon the values of the PyBaMM community.
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Contributing to PyBaMM-GEM
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to PyBaMM-GEM.
|
|
4
|
+
|
|
5
|
+
PyBaMM-GEM is a collaborative research ecosystem for advanced battery models, submodels, and parameter sets that extend the PyBaMM framework. We welcome contributions from academia, industry, and research laboratories.
|
|
6
|
+
|
|
7
|
+
Before contributing, please read:
|
|
8
|
+
|
|
9
|
+
- README.md
|
|
10
|
+
- docs/design_principles.md
|
|
11
|
+
- docs/architecture.md
|
|
12
|
+
|
|
13
|
+
These documents describe the philosophy, architecture, and long-term vision of GEM.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Before you begin
|
|
18
|
+
|
|
19
|
+
Before writing code, ask yourself:
|
|
20
|
+
|
|
21
|
+
- Is this contribution primarily a battery model, submodel, or parameter set?
|
|
22
|
+
- Is GEM the appropriate home for this work?
|
|
23
|
+
- Does it remain compatible with the philosophy of PyBaMM?
|
|
24
|
+
|
|
25
|
+
If the answer is yes, we'd be delighted to receive your contribution.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
# Scientific contribution checklist
|
|
30
|
+
|
|
31
|
+
Every scientific contribution should clearly answer the following questions.
|
|
32
|
+
|
|
33
|
+
## 1. What scientific problem does this solve?
|
|
34
|
+
|
|
35
|
+
Describe the motivation behind the work.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 2. Why is this not already part of PyBaMM?
|
|
40
|
+
|
|
41
|
+
Explain why the work belongs in GEM rather than the core PyBaMM project.
|
|
42
|
+
|
|
43
|
+
Examples include:
|
|
44
|
+
|
|
45
|
+
- experimental research,
|
|
46
|
+
- active development,
|
|
47
|
+
- specialised applications,
|
|
48
|
+
- ongoing validation,
|
|
49
|
+
- industrial collaboration.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 3. How does this differ from PyBaMM?
|
|
54
|
+
|
|
55
|
+
Clearly explain the scientific differences.
|
|
56
|
+
|
|
57
|
+
Where practical, include comparisons with the corresponding PyBaMM implementation.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 4. How has it been validated?
|
|
62
|
+
|
|
63
|
+
Describe any validation performed.
|
|
64
|
+
|
|
65
|
+
Examples include:
|
|
66
|
+
|
|
67
|
+
- published literature,
|
|
68
|
+
- experimental data,
|
|
69
|
+
- comparison against PyBaMM,
|
|
70
|
+
- analytical solutions,
|
|
71
|
+
- benchmark problems.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
# Development checklist
|
|
76
|
+
|
|
77
|
+
Contributors should aim to:
|
|
78
|
+
|
|
79
|
+
- follow the PyBaMM coding style,
|
|
80
|
+
- keep changes modular,
|
|
81
|
+
- avoid unnecessary duplication of PyBaMM code,
|
|
82
|
+
- document new classes and functions,
|
|
83
|
+
- include appropriate references.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
# Examples
|
|
88
|
+
|
|
89
|
+
Every new model, submodel, or parameter set should include at least one runnable example.
|
|
90
|
+
|
|
91
|
+
Examples may be Python scripts or Jupyter notebooks.
|
|
92
|
+
|
|
93
|
+
Examples should demonstrate:
|
|
94
|
+
|
|
95
|
+
- how to use the contribution,
|
|
96
|
+
- what scientific capability it introduces,
|
|
97
|
+
- how it differs from PyBaMM,
|
|
98
|
+
- any current limitations.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
# Tests
|
|
103
|
+
|
|
104
|
+
Every contribution should include appropriate tests.
|
|
105
|
+
|
|
106
|
+
At minimum:
|
|
107
|
+
|
|
108
|
+
- imports successfully,
|
|
109
|
+
- entry points work,
|
|
110
|
+
- the model can be instantiated,
|
|
111
|
+
- examples execute successfully where appropriate.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
# Naming
|
|
116
|
+
|
|
117
|
+
GEM should never silently change PyBaMM behaviour.
|
|
118
|
+
|
|
119
|
+
Modified models and submodels should have explicit GEM-specific names.
|
|
120
|
+
|
|
121
|
+
For example:
|
|
122
|
+
|
|
123
|
+
```python
|
|
124
|
+
"lithium plating": "partially reversible GEM"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
rather than replacing an existing PyBaMM option.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
# Pull requests
|
|
132
|
+
|
|
133
|
+
Pull requests should include:
|
|
134
|
+
|
|
135
|
+
- a short description,
|
|
136
|
+
- scientific motivation,
|
|
137
|
+
- references,
|
|
138
|
+
- documentation updates,
|
|
139
|
+
- examples,
|
|
140
|
+
- tests.
|
|
141
|
+
|
|
142
|
+
Reviewers may request additional validation or documentation before merging.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
# Thank you
|
|
147
|
+
|
|
148
|
+
Thank you for helping build PyBaMM-GEM.
|
|
149
|
+
|
|
150
|
+
Together we can create an open, collaborative ecosystem for the next generation of battery modelling research.
|
pybamm_gem-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, Mohammed Asheruddin (Asher)
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
9
|
+
list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
+
this list of conditions and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
16
|
+
contributors may be used to endorse or promote products derived from
|
|
17
|
+
this software without specific prior written permission.
|
|
18
|
+
|
|
19
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
20
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
21
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
23
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
24
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
27
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
This project and source distributions bundle several libraries that are
|
|
2
|
+
compatibly licensed.
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
Name: PyBaMM
|
|
6
|
+
Files: - src/pybamm_gem/parameters/input/Chen2020.py
|
|
7
|
+
- src/pybamm_gem/models/input/BasicReservoir.py
|
|
8
|
+
- src/pybamm_gem/models/input/SPM.py
|
|
9
|
+
- src/pybamm_gem/entry_point.py
|
|
10
|
+
License: BSD-3-Clause
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: PyBaMM-GEM
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A PyBaMM-compatible extension package for advanced battery models, research models, and simulation tools.
|
|
5
|
+
Project-URL: Homepage, https://github.com/mohammedasher/PyBaMM-GEM
|
|
6
|
+
Project-URL: Bug Tracker, https://github.com/mohammedasher/PyBaMM-GEM/issues
|
|
7
|
+
Project-URL: Discussions, https://github.com/mohammedasher/PyBaMM-GEM/discussions
|
|
8
|
+
Project-URL: Changelog, https://github.com/mohammedasher/PyBaMM-GEM/releases
|
|
9
|
+
Author-email: Mohammed Asheruddin N <mnazeeru@ic.ac.uk>
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
License-File: LICENSES-bundled.txt
|
|
12
|
+
Classifier: Development Status :: 1 - Planning
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
|
15
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
25
|
+
Classifier: Topic :: Scientific/Engineering
|
|
26
|
+
Classifier: Typing :: Typed
|
|
27
|
+
Requires-Python: <3.15,>=3.10
|
|
28
|
+
Requires-Dist: pybamm
|
|
29
|
+
Provides-Extra: dev
|
|
30
|
+
Requires-Dist: nox[uv]; extra == 'dev'
|
|
31
|
+
Requires-Dist: pre-commit; extra == 'dev'
|
|
32
|
+
Requires-Dist: pytest-cov>=3; extra == 'dev'
|
|
33
|
+
Requires-Dist: pytest>=6; extra == 'dev'
|
|
34
|
+
Provides-Extra: docs
|
|
35
|
+
Requires-Dist: ipython; extra == 'docs'
|
|
36
|
+
Requires-Dist: myst-parser; extra == 'docs'
|
|
37
|
+
Requires-Dist: nbsphinx; extra == 'docs'
|
|
38
|
+
Requires-Dist: pydata-sphinx-theme; extra == 'docs'
|
|
39
|
+
Requires-Dist: sphinx; extra == 'docs'
|
|
40
|
+
Requires-Dist: sphinx-autobuild; extra == 'docs'
|
|
41
|
+
Requires-Dist: sphinx-copybutton; extra == 'docs'
|
|
42
|
+
Requires-Dist: sphinx-design; extra == 'docs'
|
|
43
|
+
Requires-Dist: sphinx-gallery; extra == 'docs'
|
|
44
|
+
Requires-Dist: sphinx-inline-tabs; extra == 'docs'
|
|
45
|
+
Requires-Dist: sphinx-last-updated-by-git; extra == 'docs'
|
|
46
|
+
Requires-Dist: sphinxcontrib-bibtex; extra == 'docs'
|
|
47
|
+
Description-Content-Type: text/markdown
|
|
48
|
+
|
|
49
|
+
# PyBaMM-GEM
|
|
50
|
+
|
|
51
|
+
PyBaMM-GEM is an open, collaborative ecosystem for developing, validating, sharing, and maintaining advanced battery models, submodels, and parameter sets that extend the PyBaMM framework.
|
|
52
|
+
|
|
53
|
+
PyBaMM has transformed battery modelling by providing a powerful, modular, and open-source framework for electrochemical simulation. As battery research continues to advance, new models are constantly being developed to address emerging scientific questions, explore new physical phenomena, and support industrial innovation. Many of these developments are experimental, highly specialised, or under active research, making them unsuitable for inclusion in the core PyBaMM project during their early stages.
|
|
54
|
+
|
|
55
|
+
**PyBaMM-GEM provides a home for these developments.**
|
|
56
|
+
|
|
57
|
+
Rather than maintaining a separate modelling framework or encouraging fragmented forks of PyBaMM, GEM extends the PyBaMM ecosystem by providing a common platform where researchers can develop, compare, validate, publish, and maintain cutting-edge battery models while remaining closely aligned with the design philosophy and user experience of PyBaMM.
|
|
58
|
+
|
|
59
|
+
Some GEM models may eventually become part of the core PyBaMM project. Others may remain within GEM because they address specialised scientific questions or niche applications. Both outcomes are considered successful.
|
|
60
|
+
|
|
61
|
+
Our long-term vision is to establish PyBaMM-GEM as a collaborative ecosystem where the next generation of battery models is developed, evaluated, and shared with the wider community.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
# Why GEM?
|
|
66
|
+
|
|
67
|
+
Scientific software advances by balancing two complementary objectives: stability and innovation.
|
|
68
|
+
|
|
69
|
+
PyBaMM rightly prioritises stability, maintainability, and broad community applicability.
|
|
70
|
+
|
|
71
|
+
Research, however, moves much faster.
|
|
72
|
+
|
|
73
|
+
Every year, researchers develop new electrochemical models, degradation mechanisms, parameterisations, constitutive laws, numerical approaches, and modelling assumptions. These developments often require years of validation before they are mature enough for inclusion in a widely used scientific software package. Some may never belong in the core library because they address specialised scientific or industrial problems.
|
|
74
|
+
|
|
75
|
+
PyBaMM-GEM provides an environment where these ideas can be developed openly while remaining fully compatible with PyBaMM.
|
|
76
|
+
|
|
77
|
+
The goal is not to replace PyBaMM.
|
|
78
|
+
|
|
79
|
+
The goal is to accelerate battery modelling research around PyBaMM.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
# What belongs in GEM?
|
|
84
|
+
|
|
85
|
+
PyBaMM-GEM focuses exclusively on extending the modelling capabilities of PyBaMM.
|
|
86
|
+
|
|
87
|
+
The project includes:
|
|
88
|
+
|
|
89
|
+
* Battery models
|
|
90
|
+
* Battery submodels
|
|
91
|
+
* Parameter sets
|
|
92
|
+
* Modified variants of existing PyBaMM models and submodels
|
|
93
|
+
* Documentation, scripts, and notebooks accompanying each contribution
|
|
94
|
+
|
|
95
|
+
Every scientific contribution should include runnable examples demonstrating:
|
|
96
|
+
|
|
97
|
+
* the scientific motivation,
|
|
98
|
+
* implementation,
|
|
99
|
+
* validation (where available),
|
|
100
|
+
* and how it differs from the corresponding implementation in PyBaMM.
|
|
101
|
+
|
|
102
|
+
PyBaMM-GEM is **not** intended to become a general battery software platform. Workflow management, optimisation, digital twins, data analysis, and unrelated utilities are intentionally outside the scope of this project.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
# Design Philosophy
|
|
107
|
+
|
|
108
|
+
The philosophy of GEM is simple.
|
|
109
|
+
|
|
110
|
+
**Stay close to PyBaMM. Explore beyond it.**
|
|
111
|
+
|
|
112
|
+
GEM follows the architecture, programming style, and user experience of PyBaMM wherever practical. Existing PyBaMM users should feel immediately familiar with GEM, allowing new scientific developments to be adopted with minimal learning.
|
|
113
|
+
|
|
114
|
+
Scientific transparency is a fundamental principle. GEM never silently changes the behaviour of an existing PyBaMM implementation. Whenever a GEM implementation differs scientifically from PyBaMM, it is exposed through an explicit GEM-specific model or option so that published research remains reproducible and unambiguous.
|
|
115
|
+
|
|
116
|
+
Every release of GEM is developed against a defined range of PyBaMM versions and documents its compatibility.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
# Why "GEM"?
|
|
121
|
+
|
|
122
|
+
Originally, **GEM** stood for **General Enough Model**—a long-standing research vision of developing battery models with the minimum complexity required to explain the physical behaviour of interest.
|
|
123
|
+
|
|
124
|
+
As the project evolved, this philosophy naturally broadened. GEM also represents the idea of a **Good Enough Model**: selecting the minimum set of physical processes and governing equations required to accurately describe a given scientific problem without unnecessary complexity.
|
|
125
|
+
|
|
126
|
+
The name is also inspired by **Professor John B. Goodenough**, whose pioneering contributions fundamentally shaped modern lithium-ion battery science and continue to inspire battery modelling research today.
|
|
127
|
+
|
|
128
|
+
While these meanings reflect the origins and philosophy of the project, **GEM has grown beyond an acronym**. Today, PyBaMM-GEM represents an ecosystem dedicated to advancing battery modelling research through open, collaborative scientific software.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
# Installation
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
pip install pybamm-gem
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
```python
|
|
139
|
+
import pybamm_gem
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
# Relationship with PyBaMM
|
|
145
|
+
|
|
146
|
+
PyBaMM-GEM depends on the official PyBaMM project.
|
|
147
|
+
|
|
148
|
+
It does not replace PyBaMM, fork PyBaMM, or maintain an independent battery modelling framework.
|
|
149
|
+
|
|
150
|
+
Instead, GEM extends the PyBaMM ecosystem.
|
|
151
|
+
|
|
152
|
+
Where appropriate, mature GEM models may eventually be adopted into PyBaMM. Conversely, specialised research models may continue to be developed and maintained within GEM indefinitely.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
# Contributing
|
|
157
|
+
|
|
158
|
+
Researchers from academia, industry, and national laboratories are encouraged to contribute new models, submodels, parameter sets, documentation, validation studies, and example notebooks.
|
|
159
|
+
|
|
160
|
+
Every contribution should improve the scientific capability of the PyBaMM ecosystem while preserving the principles of transparency, reproducibility, and compatibility that underpin both PyBaMM and GEM.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
# Citation
|
|
165
|
+
|
|
166
|
+
If you use PyBaMM-GEM in academic work, please cite both:
|
|
167
|
+
|
|
168
|
+
* PyBaMM
|
|
169
|
+
* the relevant GEM model or publication
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
# License
|
|
174
|
+
|
|
175
|
+
PyBaMM-GEM is distributed under the BSD 3-Clause License.
|