OPEM
A modeling tool for evaluating the performance of proton exchange membrane fuel cells.
https://github.com/ecsim/opem
Category: Energy Storage
Sub Category: Hydrogen
Keywords
chemistry dynamic-analysis electrochemistry fuel-cell opem pem physics physics-simulation python script simulation simulator static-analysis static-analyzer
Keywords from Contributors
measuring pypi mathematics transformations archives compose follow reporter robot breath
Last synced: about 12 hours ago
JSON representation
Repository metadata
OPEM (Open Source PEM Fuel Cell Simulation Tool)
- Host: GitHub
- URL: https://github.com/ecsim/opem
- Owner: ECSIM
- License: mit
- Created: 2017-12-16T15:42:52.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2025-04-14T10:08:25.000Z (13 days ago)
- Last Synced: 2025-04-22T07:47:12.178Z (5 days ago)
- Topics: chemistry, dynamic-analysis, electrochemistry, fuel-cell, opem, pem, physics, physics-simulation, python, script, simulation, simulator, static-analysis, static-analyzer
- Language: Python
- Homepage: http://opem.ecsim.site
- Size: 17.8 MB
- Stars: 216
- Watchers: 11
- Forks: 58
- Open Issues: 1
- Releases: 14
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Authors: AUTHORS.md
README.md
Table of Contents
- What is PEM?
- Overview
- Installation
- Usage
- Issues & Bug Reports
- Contribution
- Outputs
- Thanks
- Reference
- Cite
- Authors
- License
- Show Your Support
- Changelog
- Code of Conduct
Overview
Usage
Executable
-
Open
CMD
(Windows) orTerminal
(UNIX) -
Run
opem
orpython -m opem
(or runOPEM.exe
) -
Enter PEM cell parameters (or run standard test vectors)
-
Amphlett Static Model
-
Larminie-Dicks Static Model
-
Chamberline-Kim Static Model
-
Padulles Dynamic Model I
-
Padulles Dynamic Model II
-
Padulles-Hauer Dynamic Model
-
Padulles-Amphlett Dynamic Model
-
Chakraborty Dynamic Model
- Find your reports in
Model_Name
folder
Screen Record
-
Library
-
Amphlett Static Model
>>> from opem.Static.Amphlett import Static_Analysis >>> Test_Vector={"T": 343.15,"PH2": 1,"PO2": 1,"i-start": 0,"i-stop": 75,"i-step": 0.1,"A": 50.6,"l": 0.0178,"lambda": 23,"N": 1,"R": 0,"JMax": 1.5,"Name": "Amphlett_Test"} >>> data=Static_Analysis(InputMethod=Test_Vector,TestMode=True,PrintMode=False,ReportMode=False)
- For more information about this model visit here
-
Larminie-Dicks Static Model
>>> from opem.Static.Larminie_Dicks import Static_Analysis >>> Test_Vector = {"A": 0.06,"E0": 1.178,"T": 328.15,"RM": 0.0018,"i_0": 0.00654,"i_L": 100.0,"i_n": 0.23,"N": 23,"i-start": 0.1,"i-stop": 98,"i-step": 0.1,"Name": "Larminiee_Test"} >>> data=Static_Analysis(InputMethod=Test_Vector,TestMode=True,PrintMode=False,ReportMode=False)
- For more information about this model visit here
-
Chamberline-Kim Static Model
>>> from opem.Static.Chamberline_Kim import Static_Analysis >>> Test_Vector = {"A": 50.0,"E0": 0.982,"b": 0.0689,"R": 0.328,"m": 0.000125,"n": 9.45,"N": 1,"i-start": 1,"i-stop": 42.5,"i-step": 0.1,"Name": "Chamberline_Test"} >>> data=Static_Analysis(InputMethod=Test_Vector,TestMode=True,PrintMode=False,ReportMode=False)
- For more information about this model visit here
-
Padulles Dynamic Model I
>>> from opem.Dynamic.Padulles1 import Dynamic_Analysis >>> Test_Vector = {"T": 343,"E0": 0.6,"N0": 88,"KO2": 0.0000211,"KH2": 0.0000422,"tH2": 3.37,"tO2": 6.74,"B": 0.04777,"C": 0.0136,"Rint": 0.00303,"rho": 1.168,"qH2": 0.0004,"i-start": 0,"i-stop": 100,"i-step": 0.1,"Name": "PadullesI_Test"} >>> data=Dynamic_Analysis(InputMethod=Test_Vector,TestMode=True,PrintMode=False,ReportMode=False)
- For more information about this model visit here
-
Padulles Dynamic Model II
>>> from opem.Dynamic.Padulles2 import Dynamic_Analysis >>> Test_Vector = {"T": 343,"E0": 0.6,"N0": 5,"KO2": 0.0000211,"KH2": 0.0000422,"KH2O": 0.000007716,"tH2": 3.37,"tO2": 6.74,"tH2O": 18.418,"B": 0.04777,"C": 0.0136,"Rint": 0.00303,"rho": 1.168,"qH2": 0.0004,"i-start": 0.1,"i-stop": 100,"i-step": 0.1,"Name": "Padulles2_Test"} >>> data=Dynamic_Analysis(InputMethod=Test_Vector,TestMode=True,PrintMode=False,ReportMode=False)
- For more information about this model visit here
-
Padulles-Hauer Dynamic Model
>>> from opem.Dynamic.Padulles_Hauer import Dynamic_Analysis >>> Test_Vector = {"T": 343,"E0": 0.6,"N0": 5,"KO2": 0.0000211,"KH2": 0.0000422,"KH2O": 0.000007716,"tH2": 3.37,"tO2": 6.74,"t1": 2,"t2": 2,"tH2O": 18.418,"B": 0.04777,"C": 0.0136,"Rint": 0.00303,"rho": 1.168,"qMethanol": 0.0002,"CV": 2,"i-start": 0.1,"i-stop": 100,"i-step": 0.1,"Name": "Padulles_Hauer_Test"} >>> data=Dynamic_Analysis(InputMethod=Test_Vector,TestMode=True,PrintMode=False,ReportMode=False)
- For more information about this model visit here
-
Padulles-Amphlett Dynamic Model
>>> from opem.Dynamic.Padulles_Amphlett import Dynamic_Analysis >>> Test_Vector = {"A": 50.6,"l": 0.0178,"lambda": 23,"JMax": 1.5,"T": 343,"N0": 5,"KO2": 0.0000211,"KH2": 0.0000422,"KH2O": 0.000007716,"tH2": 3.37,"tO2": 6.74,"t1": 2,"t2": 2,"tH2O": 18.418,"rho": 1.168,"qMethanol": 0.0002,"CV": 2,"i-start": 0.1,"i-stop": 75,"i-step": 0.1,"Name": "Padulles_Amphlett_Test"} >>> data=Dynamic_Analysis(InputMethod=Test_Vector,TestMode=True,PrintMode=False,ReportMode=False)
- For more information about this model visit here
-
Chakraborty Dynamic Model
>>> from opem.Dynamic.Chakraborty import Dynamic_Analysis >>> Test_Vector = {"T": 1273,"E0": 0.6,"u":0.8,"N0": 1,"R": 3.28125 * 10**(-3),"KH2O": 0.000281,"KH2": 0.000843,"KO2": 0.00252,"rho": 1.145,"i-start": 0.1,"i-stop": 300,"i-step": 0.1,"Name": "Chakraborty_Test"} >>> data=Dynamic_Analysis(InputMethod=Test_Vector,TestMode=True,PrintMode=False,ReportMode=False)
- For more information about this model visit here
Parameters
TestMode
: Active test mode and get/return data asdict
, (Default :False
)ReportMode
: Generate reports(.csv
,.opem
,.html
) and print result in console, (Default :True
)PrintMode
: Control printing in console, (Default :True
)Folder
: Reports folder, (Default :os.getcwd()
)
Note
- Return type :
dict
Telegram Bot
- Send
/start
command to OPEM BOT - Choose models from menu
- Send your test vector according to the template
- Download your results
Try OPEM in Your Browser!
OPEM can be used online in interactive Jupyter Notebooks via the Binder service! Try it out now! :
- Check
.ipynb
files inDocuments
folder - Edit and execute each part of the notes, step by step from the top panel by run button
- For executing a complete simulation, you can edit
Test_Vector
inFull Run
section
Issues & Bug Reports
Just fill an issue and describe it. We'll check it ASAP!
or send an email to [email protected].
You can also join our discord server
Outputs
Thanks
- Chart.js
- PyInstaller
- Draw.io
- Zahra Mobasher (Logo design)
Reference
Cite
If you use OPEM in your research , please cite this paper :
Download OPEM.bib(BibTeX Format)
Show Your Support
Give a ⭐️ if this project helped you!
If you do like our project and we hope that you do, can you please support us? Our project is not and is never going to be working for profit. We need the money just so we can continue doing what we do ;-) .
Owner metadata
- Name: ECSIM
- Login: ECSIM
- Email: [email protected]
- Kind: organization
- Description: Electrochemistry Simulation Tools
- Website: https://ecsim.ir
- Location: Tehran, Iran
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/34425602?v=4
- Repositories: 4
- Last ynced at: 2023-02-28T10:40:27.369Z
- Profile URL: https://github.com/ECSIM
GitHub Events
Total
- Issues event: 1
- Watch event: 17
- Delete event: 5
- Issue comment event: 6
- Push event: 8
- Pull request review event: 7
- Pull request event: 11
- Fork event: 2
- Create event: 5
Last Year
- Issues event: 1
- Watch event: 17
- Delete event: 5
- Issue comment event: 6
- Push event: 8
- Pull request review event: 7
- Pull request event: 11
- Fork event: 2
- Create event: 5
Committers metadata
Last synced: 7 days ago
Total Commits: 1,099
Total Committers: 11
Avg Commits per committer: 99.909
Development Distribution Score (DDS): 0.122
Commits in past year: 23
Committers in past year: 4
Avg Commits per committer in past year: 5.75
Development Distribution Score (DDS) in past year: 0.391
Name | Commits | |
---|---|---|
sepandhaghighi | s****i@y****m | 965 |
pyup-bot | g****t@p****o | 39 |
Mohammad Mahdi Rahimi | m****6@G****m | 31 |
dependabot-preview[bot] | 2****] | 20 |
sadrasabouri | s****a@g****m | 19 |
dependabot[bot] | 4****] | 16 |
Nicholas Nadeau, P.Eng., AVS | n****u | 4 |
Nicholas Nadeau | n****u@g****m | 2 |
Nicholas Nadeau | n****s@r****m | 1 |
Giovanni Rosa | g****3@y****m | 1 |
Kasra Askari | 3****i | 1 |
Committer domains:
- rogue-research.com: 1
- pyup.io: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 70
Total pull requests: 165
Average time to close issues: 3 months
Average time to close pull requests: 6 days
Total issue authors: 7
Total pull request authors: 11
Average comments per issue: 0.93
Average comments per pull request: 0.96
Merged pull request: 139
Bot issues: 0
Bot pull requests: 45
Past year issues: 1
Past year pull requests: 17
Past year average time to close issues: N/A
Past year average time to close pull requests: 1 day
Past year issue authors: 1
Past year pull request authors: 3
Past year average comments per issue: 0.0
Past year average comments per pull request: 1.29
Past year merged pull request: 15
Past year bot issues: 0
Past year bot pull requests: 7
Top Issue Authors
- sepandhaghighi (48)
- engnadeau (16)
- DanWBR (2)
- NGC2023 (1)
- kasraaskari (1)
- mahi97 (1)
- eamanu (1)
Top Pull Request Authors
- sepandhaghighi (53)
- pyup-bot (49)
- dependabot[bot] (25)
- dependabot-preview[bot] (20)
- mahi97 (6)
- engnadeau (4)
- sadrasabouri (3)
- AHReccese (2)
- fossabot (1)
- codacy-badger (1)
- grosa1 (1)
Top Issue Labels
- enhancement (31)
- bug (8)
- document (7)
- test (6)
- good first issue (1)
- support (1)
- setup (1)
Top Pull Request Labels
- dependencies (46)
- document (20)
- test (17)
- enhancement (11)
- minor (3)
- bug (2)
- release (2)
- setup (2)
- refactoring (2)
- new model (1)
- support (1)
- python (1)
Package metadata
- Total packages: 1
-
Total downloads:
- pypi: 696 last-month
- Total dependent packages: 1
- Total dependent repositories: 1
- Total versions: 14
- Total maintainers: 1
pypi.org: opem
Open Source PEM Cell Simulation Tool
- Homepage: https://github.com/ecsim/opem
- Documentation: https://opem.readthedocs.io/
- Licenses: MIT
- Latest release: 1.4 (published about 1 year ago)
- Last Synced: 2025-04-25T14:01:40.385Z (1 day ago)
- Versions: 14
- Dependent Packages: 1
- Dependent Repositories: 1
- Downloads: 696 Last month
-
Rankings:
- Stargazers count: 5.723%
- Forks count: 5.774%
- Dependent packages count: 7.306%
- Average: 12.347%
- Downloads: 20.853%
- Dependent repos count: 22.077%
- Maintainers (1)
Dependencies
- actions/checkout v2 composite
- actions/setup-python v1 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- ubuntu 16.04 build
- art ==5.2 development
- bandit >=1.5.1 development
- codecov >=2.0.15 development
- notebook >=5.2.2 development
- pydocstyle >=3.0.0 development
- pytest >=5.1.0 development
- pytest-cov >=2.6.1 development
- requests ==2.26.0 development
- setuptools >=40.8.3 development
- vulture >=1.0 development
- art >0.7
- requests >=2.20.0
Score: 14.327443368572641