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.
Files changed (31) hide show
  1. pybamm_gem-0.1.0/.git_archival.txt +4 -0
  2. pybamm_gem-0.1.0/.gitattributes.txt +1 -0
  3. pybamm_gem-0.1.0/.gitignore +129 -0
  4. pybamm_gem-0.1.0/.pre-commit-config.yaml +65 -0
  5. pybamm_gem-0.1.0/.readthedocs.yml +28 -0
  6. pybamm_gem-0.1.0/CITATION.cff +25 -0
  7. pybamm_gem-0.1.0/CODE_OF_CONDUCT.md +45 -0
  8. pybamm_gem-0.1.0/CONTRIBUTING.md +150 -0
  9. pybamm_gem-0.1.0/LICENSE +28 -0
  10. pybamm_gem-0.1.0/LICENSES-bundled.txt +10 -0
  11. pybamm_gem-0.1.0/PKG-INFO +175 -0
  12. pybamm_gem-0.1.0/README.md +127 -0
  13. pybamm_gem-0.1.0/docs/_static/.gitkeep +0 -0
  14. pybamm_gem-0.1.0/docs/architecture.md +42 -0
  15. pybamm_gem-0.1.0/docs/conf.py +191 -0
  16. pybamm_gem-0.1.0/docs/design_principles.md +101 -0
  17. pybamm_gem-0.1.0/docs/index.md +17 -0
  18. pybamm_gem-0.1.0/docs/refs.bib +0 -0
  19. pybamm_gem-0.1.0/examples/01_parameter_set_registration_demo.ipynb +259 -0
  20. pybamm_gem-0.1.0/noxfile.py +70 -0
  21. pybamm_gem-0.1.0/pyproject.toml +139 -0
  22. pybamm_gem-0.1.0/src/pybamm_gem/__init__.py +77 -0
  23. pybamm_gem-0.1.0/src/pybamm_gem/_version.py +24 -0
  24. pybamm_gem-0.1.0/src/pybamm_gem/entry_point.py +154 -0
  25. pybamm_gem-0.1.0/src/pybamm_gem/models/input/ExampleReservoir.py +200 -0
  26. pybamm_gem-0.1.0/src/pybamm_gem/models/input/ExampleSPM.py +215 -0
  27. pybamm_gem-0.1.0/src/pybamm_gem/parameters/input/ExampleChen2020.py +371 -0
  28. pybamm_gem-0.1.0/src/pybamm_gem/parameters/input/Imperial2026.py +352 -0
  29. pybamm_gem-0.1.0/src/pybamm_gem/py.typed +0 -0
  30. pybamm_gem-0.1.0/tests/generated_project_tests/test_entry_points.py +46 -0
  31. pybamm_gem-0.1.0/tests/user_tests/test_package.py +5 -0
@@ -0,0 +1,4 @@
1
+ node: $Format:%H$
2
+ node-date: $Format:%cI$
3
+ describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
4
+ ref-names: $Format:%D$
@@ -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.
@@ -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.