OPEM (Open Source PEM Fuel Cell Simulation Tool)

Overview

Table of contents

Overview

Modeling and simulation of proton-exchange membrane fuel cells (PEMFC) may work as a powerful tool in the research & development of renewable energy sources. The Open-Source PEMFC Simulation Tool (OPEM) is a modeling tool for evaluating the performance of proton exchange membrane fuel cells. This package is a combination of models (static/dynamic) that predict the optimum operating parameters of PEMFC. OPEM contained generic models that will accept as input, not only values of the operating variables such as anode and cathode feed gas, pressure and compositions, cell temperature and current density, but also cell parameters including the active area and membrane thickness. In addition, some of the different models of PEMFC that have been proposed in the OPEM, just focus on one particular FC stack, and some others take into account a part or all auxiliaries such as reformers. OPEM is a platform for collaborative development of PEMFC models.

Fig1. OPEM Block Diagram

Open Hub
PyPI Counter
Github Stars
Branch master develop
Travis
AppVeyor
Code Quality CodeFactor

Usage

Executable

  • Open CMD (Windows) or Terminal (UNIX)

  • Run python -m opem or python3 -m opem (or run OPEM.exe)

  • Enter PEM cell parameters (or run standard test vectors)

    1. Amphlett Static Model

      Input Description Unit
      T Cell operation temperature K
      PH2 Partial pressure atm
      PO2 Partial pressure atm
      i-start Cell operating current start point A
      i-step Cell operating current step A
      i-stop Cell operating current end point A
      A Active area cm^2
      l Membrane thickness cm
      lambda An adjustable parameter with a min value of 14 and max value of 23 --
      R(*Optional) R-Electronic ohm
      JMax Maximum current density A/(cm^2)
      N Number of single cells --
      * For more information about this model visit here
    2. Larminie-Dicks Static Model

      Input Description Unit
      E0 Fuel cell reversible no loss voltage V
      A The slope of the Tafel line V
      T Cell operation temperature K
      i-start Cell operating current start point A
      i-step Cell operating current step A
      i-stop Cell operating current end point A
      i_n Internal current A
      i_0 Exchange current at which the overvoltage begins to move from zero A
      i_L Limiting current A
      RM The membrane and contact resistances ohm
      N Number of single cells --
      * For more information about this model visit here
    3. Chamberline-Kim Static Model

      Input Description Unit
      E0 Open circuit voltage V
      b Tafel's parameter for the oxygen reduction V
      R Resistance ohm.cm^2
      i-start Cell operating current start point A
      i-step Cell operating current step A
      i-stop Cell operating current end point A
      A Active area cm^2
      m Diffusion's parameters V
      n Diffusion's parameters (A^-1)(cm^2)
      N Number of single cells --
      * For more information about this model visit here
    4. Padulles Dynamic Model I

      Input Description Unit
      E0 No load voltage V
      T Fuel cell temperature K
      KH2 Hydrogen valve constant kmol.s^(-1).atm^(-1)
      KO2 Oxygen valve constant kmol.s^(-1).atm^(-1)
      tH2 Hydrogen time constant s
      tO2 Oxygen time constant s
      B Activation voltage constant V
      C Activation constant parameter A^(-1)
      Rint Fuel cell internal resistance ohm
      rho Hydrogen-Oxygen flow ratio --
      qH2 Molar flow of hydrogen kmol/s
      N0 Number of cells --
      i-start Cell operating current start point A
      i-step Cell operating current step A
      i-stop Cell operating current end point A
      * For more information about this model visit here
    5. Padulles Dynamic Model II

      Input Description Unit
      E0 No load voltage V
      T Fuel cell temperature K
      KH2 Hydrogen valve constant kmol.s^(-1).atm^(-1)
      KH2O Water valve constant kmol.s^(-1).atm^(-1)
      KO2 Oxygen valve constant kmol.s^(-1).atm^(-1)
      tH2 Hydrogen time constant s
      tH2O Water time constant s
      tO2 Oxygen time constant s
      B Activation voltage constant V
      C Activation constant parameter A^(-1)
      Rint Fuel cell internal resistance ohm
      rho Hydrogen-Oxygen flow ratio --
      qH2 Molar flow of hydrogen kmol/s
      N0 Number of cells --
      i-start Cell operating current start point A
      i-step Cell operating current step A
      i-stop Cell operating current end point A
      * For more information about this model visit here
    6. Padulles-Hauer Dynamic Model

      Input Description Unit
      E0 No load voltage V
      T Fuel cell temperature K
      KH2 Hydrogen valve constant kmol.s^(-1).atm^(-1)
      KH2O Water valve constant kmol.s^(-1).atm^(-1)
      KO2 Oxygen valve constant kmol.s^(-1).atm^(-1)
      tH2 Hydrogen time constant s
      tH2O Water time constant s
      tO2 Oxygen time constant s
      t1 Reformer time constant s
      t2 Reformer time constant s
      B Activation voltage constant V
      C Activation constant parameter A^(-1)
      CV Conversion factor --
      Rint Fuel cell internal resistance ohm
      rho Hydrogen-Oxygen flow ratio --
      qMethanol Molar flow of methanol kmol/s
      N0 Number of cells --
      i-start Cell operating current start point A
      i-step Cell operating current step A
      i-stop Cell operating current end point A
      * For more information about this model visit here
    7. Padulles-Amphlett Dynamic Model

      Input Description Unit
      E0 No load voltage V
      T Fuel cell temperature K
      KH2 Hydrogen valve constant kmol.s^(-1).atm^(-1)
      KH2O Water valve constant kmol.s^(-1).atm^(-1)
      KO2 Oxygen valve constant kmol.s^(-1).atm^(-1)
      tH2 Hydrogen time constant s
      tH2O Water time constant s
      tO2 Oxygen time constant s
      t1 Reformer time constant s
      t2 Reformer time constant s
      A Active area cm^2
      l Membrane thickness cm
      lambda An adjustable parameter with a min value of 14 and max value of 23 --
      R(*Optional) R-Electronic ohm
      B An empirical constant depending on the cell and its operation state (Tafel slope) V
      JMax Maximum current density A/(cm^2)
      CV Conversion factor --
      rho Hydrogen-Oxygen flow ratio --
      qMethanol Molar flow of methanol kmol/s
      N0 Number of cells --
      i-start Cell operating current start point A
      i-step Cell operating current step A
      i-stop Cell operating current end point A
      * For more information about this model visit here
    • Find your reports in Model_Name folder

    Screen Record

    Screen Record

Library

  1. 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)
    Key Description Type
    Status Simulation status Bool
    P Power List
    I Cell operating current List
    V FC voltage List
    EFF Efficiency List
    Ph Thermal power List
    V0 Linear-Apx intercept Float
    K Linear-Apx slope Float
    Eta_Active Eta activation List
    Eta_Conc Eta concentration List
    Eta_Ohmic Eta ohmic List
    VE Estimated FC voltage List
    • For more information about this model visit here
  2. 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)
    Key Description Type
    Status Simulation status Bool
    P Power List
    I Cell operating current List
    V FC voltage List
    EFF Efficiency List
    Ph Thermal power List
    V0 Linear-Apx intercept Float
    K Linear-Apx slope Float
    VE Estimated FC voltage List
    • For more information about this model visit here
  3. 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)
    Key Description Type
    Status Simulation status Bool
    P Power List
    I Cell operating current List
    V FC voltage List
    EFF Efficiency List
    Ph Thermal power List
    V0 Linear-Apx intercept Float
    K Linear-Apx slope Float
    VE Estimated FC voltage List
    • For more information about this model visit here
  4. 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)
    Key Description Type
    Status Simulation status Bool
    P Power List
    I Cell operating current List
    V FC voltage List
    EFF Efficiency List
    PO2 Partial pressure List
    PH2 Partial pressure List
    Ph Thermal power List
    V0 Linear-Apx intercept Float
    K Linear-Apx slope Float
    VE Estimated FC voltage List
    • For more information about this model visit here
  5. 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)
    Key Description Type
    Status Simulation status Bool
    P Power List
    I Cell operating current List
    V FC voltage List
    EFF Efficiency List
    PO2 Partial pressure List
    PH2 Partial pressure List
    PH2O Partial pressure List
    Ph Thermal power List
    V0 Linear-Apx intercept Float
    K Linear-Apx slope Float
    VE Estimated FC voltage List
    • For more information about this model visit here
  6. 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)
    Key Description Type
    Status Simulation status Bool
    P Power List
    I Cell operating current List
    V FC voltage List
    EFF Efficiency List
    PO2 Partial pressure List
    PH2 Partial pressure List
    PH2O Partial pressure List
    Ph Thermal power List
    V0 Linear-Apx intercept Float
    K Linear-Apx slope Float
    VE Estimated FC voltage List
    • For more information about this model visit here
  7. 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,"B": 0.016,"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)
    Key Description Type
    Status Simulation status Bool
    P Power List
    I Cell operating current List
    V FC voltage List
    EFF Efficiency List
    PO2 Partial pressure List
    PH2 Partial pressure List
    PH2O Partial pressure List
    Ph Thermal power List
    V0 Linear-Apx intercept Float
    K Linear-Apx slope Float
    Eta_Active Eta activation List
    Eta_Conc Eta concentration List
    Eta_Ohmic Eta ohmic List
    VE Estimated FC voltage List
    • For more information about this model visit here

    Modes

    1. TestMode : Active test mode and get/return data as dict, (Default : False)
    2. ReportMode : Generate reports(.csv,.opem,.html) and print result in console, (Default : True)
    3. PrintMode : Control printing in console, (Default : True)

    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! :

Binder

  • Check .ipynb files in Documents 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 in Full Run section

Issues & Bug Reports

Just fill an issue and describe it. We'll check it ASAP! or send an email to [email protected].

Gitter is another option :

Gitter

Todo

  • Static Analysis
    • Amphlett Static Model
      • Nernst Voltage
      • PEMFC losses model
      • Power of PEMFC
      • Efficiency of PEMFC
    • Larminie-Dicks Static Model
      • PEMFC losses model
      • Power of PEMFC
      • Efficiency of PEMFC
    • Chamberline-Kim Static Model
      • PEMFC losses model
      • Power of PEMFC
      • Efficiency of PEMFC
  • Flat Output
    • Simulation Result
    • CSV File
    • HTML
  • GUI
    • Plot Graphs
    • Input/Output
  • Dynamic Analysis
    • Padulles Dynamic Model I
      • Nernst Voltage
      • Voltage of PEMFC
      • Power of PEMFC
      • Efficiency of PEMFC
    • Padulles Dynamic Model II
      • Nernst Voltage
      • Voltage of PEMFC
      • Power of PEMFC
      • Efficiency of PEMFC
    • Padulles-Hauer Dynamic Model
      • Nernst Voltage
      • Voltage of PEMFC
      • Power of PEMFC
      • Efficiency of PEMFC
    • Padulles-Amphlett Dynamic Model
      • Nernst Voltage
      • Voltage of PEMFC
      • Power of PEMFC
      • Efficiency of PEMFC
  • MATLAB

Outputs

  1. HTML
  2. CSV
  3. OPEM

Dependencies

master develop
Requirements Status Requirements Status

Thanks

Reference

1- J. C. Amphlett, R. M. Baumert, R. F. Mann, B. A. Peppley, and P. R. Roberge. 1995. "Performance Modeling of the Ballard Mark IV Solid Polymer Electrolyte Fuel Cell." J. Electrochem. Soc. (The Electrochemical Society, Inc.) 142 (1): 9-15. doi: 10.1149/1.2043959.
2- Jeferson M. Correa, Felix A. Farret, Vladimir A. Popov, Marcelo G. Simoes. 2005. "Sensitivity Analysis of the Modeling Parameters Used in Simulation of Proton Exchange Membrane Fuel Cells." IEEE Transactions on Energy Conversion (IEEE) 20 (1): 211-218. doi:10.1109/TEC.2004.842382.
3- Junbom Kim, Seong-Min Lee, Supramaniam Srinivasan, Charles E. Chamberlin. 1995. "Modeling of Proton Exchange Membrane Fuel Cell Performance with an Empirical Equation." Journal of The Electrochemical Society (The Electrochemical Society) 142 (8): 2670-2674. doi:10.1149/1.2050072.
4- I. Sadli, P. Thounthong, J.-P. Martin, S. Rael, B. Davat. 2006. "Behaviour of a PEMFC supplying a low voltage static converter." Journal of Power Sources (Elsevier) 156: 119–125. doi:10.1016/j.jpowsour.2005.08.021.
5- J. Padulles, G.W. Ault, J.R. McDonald. 2000. "An integrated SOFC plant dynamic model for power systems simulation." Journal of Power Sources (Elsevier) 86 (1-2): 495-500. doi:10.1016/S0378-7753(99)00430-9.
6- Hauer, K.-H. 2001. "Analysis tool for fuel cell vehicle hardware and software (controls) with an application to fuel economy comparisons of alternative system designs." Ph.D. dissertation, Transportation Technology and Policy, University of California Davis.
7- A. Saadi, M. Becherif, A. Aboubou, M.Y. Ayad. 2013. "Comparison of proton exchange membrane fuel cell static models." Renewable Energy (Elsevier) 56: 64-71. doi:dx.doi.org/10.1016/j.renene.2012.10.012.
8- Diego Feroldi, Marta Basualdo. 2012. "Description of PEM Fuel Cells System." Green Energy and Technology (Springer) 49-72. doi:10.1007/978-1-84996-184-4_2
9- Gottesfeld, Shimshon. n.d. The Polymer Electrolyte Fuel Cell: Materials Issues in a Hydrogen Fueled Power Source. http://physics.oregonstate.edu/~hetheriw/energy/topics/doc/electrochemistry/fc/basic/The_Polymer_Electrolyte_Fuel_Cell.htm
10- Mohamed Becherif, Aïcha Saadi, Daniel Hissel, Abdennacer Aboubou, Mohamed Yacine Ayad. 2011. "Static and dynamic proton exchange membrane fuel cell models." Journal of Hydrocarbons Mines and Environmental Research 2 (1)
11- Larminie, J., Dicks, A., & McDonald, M. S. 2003. Fuel cell systems explained (Vol. 2, pp. 207-225). Chichester, UK: J. Wiley. doi: 10.1002/9781118706992.
12- Rho, Y. W., Srinivasan, S., & Kho, Y. T. 1994. ''Mass transport phenomena in proton exchange membrane fuel cells using o 2/he, o 2/ar, and o 2/n 2 mixtures ii. Theoretical analysis.'' Journal of the Electrochemical Society, 141(8), 2089-2096. doi: 10.1149/1.2055066.

Cite

If you use OPEM in your research , please cite this paper :

@article{Haghighi2018,
  doi = {10.21105/joss.00676},
  url = {https://doi.org/10.21105/joss.00676},
  year  = {2018},
  month = {jul},
  publisher = {The Open Journal},
  volume = {3},
  number = {27},
  pages = {676},
  author = {Sepand Haghighi and Kasra Askari and Sarmin Hamidi and Mohammad Mahdi Rahimi},
  title = {{OPEM} : Open Source {PEM} Cell Simulation Tool},
  journal = {Journal of Open Source Software}
}


Download OPEM.bib(BibTeX Format)

JOSS DOI badge
Zenodo DOI
Researchgate

License

FOSSA Status

Donate to our project

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 ;-) .

OPEM Donation

Comments
  • Plagiarism of `PEM.md`

    Plagiarism of `PEM.md`

    In its current form, PEM.md is plagiarized, word-for-word, from http://physics.oregonstate.edu/~hetheriw/energy/topics/doc/electrochemistry/fc/basic/The_Polymer_Electrolyte_Fuel_Cell.htm

    opened by engnadeau 5
  • Do not use `except Exception`

    Do not use `except Exception`

    • E.g.,: https://github.com/ECSIM/opem/blob/d9748c65ff00ff9f6b730420dc7bb6cad8bc2fca/opem/Static/Amphlett.py#L22-L25
    • See the following links for why this is considered poor coding practice:
      • https://stackoverflow.com/questions/10594113/bad-idea-to-catch-all-exceptions-in-python
      • https://stackoverflow.com/questions/2416316/why-is-the-catchexception-almost-always-a-bad-idea
      • https://softwareengineering.stackexchange.com/questions/164256/is-catching-general-exceptions-really-a-bad-thing
    • If this is really necessary, the reasoning should be commented.
    opened by engnadeau 5
  • Padulles-Amphlett B

    Padulles-Amphlett B

    Reference Issues/PRs

    What does this implement/fix? Explain your changes.

    • Padulles-Amphlett dynamic model modified
    • Travis and Appveyor configs updated
    • Dockerfile updated

    Any other comments?

    enhancement 
    opened by sepandhaghighi 4
  • Bump art from 5.1 to 5.2

    Bump art from 5.1 to 5.2

    Bumps art from 5.1 to 5.2.

    Release notes

    Sourced from art's releases.

    Version 5.2

    • 10 new 1-line-art added #95 1- playing cards waterfall 2- playing cards waterfall (trump) 3- playing cards hearts waterfall 4- playing cards diamonds waterfall 5- playing cards clubs waterfall 6- playing cards spades waterfall 7- joker1 8- joker2 9- joker3 10- joker4
    • 23 new decorations added #151 1- fancy87 2- fancy88 3- fancy89 4- fancy90 5- fancy91 6- fancy92 7- fancy93 8- fancy94 9- fancy95 10- heart10 11- heart11 12- heart12 13- heart13 14- heart14 15- heart15 16- star18 17- star19 18- star20 19- star21 20- star22 21- star23 22- star24 23- star25
    • 5 new fonts added #151 1- old_italic 2- ninja 3- tai_viet 4- subscript2 5- fancy130
    • Test system modified #149
    • subscript font renamed to subscript1
    • Logo changed (Designed by Arta Khanalizadeh)
    Changelog

    Sourced from art's changelog.

    [5.2] - 2021-05-05

    Added

    • 10 new 1-line-art
      1. playing cards waterfall
      2. playing cards waterfall (trump)
      3. playing cards hearts waterfall
      4. playing cards diamonds waterfall
      5. playing cards clubs waterfall
      6. playing cards spades waterfall
      7. joker1
      8. joker2
      9. joker3
      10. joker4
    • 23 new decorations
      1. fancy87
      2. fancy88
      3. fancy89
      4. fancy90
      5. fancy91
      6. fancy92
      7. fancy93
      8. fancy94
      9. fancy95
      10. heart10
      11. heart11
      12. heart12
      13. heart13
      14. heart14
      15. heart15
      16. star18
      17. star19
      18. star20
      19. star21
      20. star22
      21. star23
      22. star24
      23. star25
    • 5 new fonts
      1. old_italic
      2. ninja
      3. tai_viet
      4. subscript2
      5. fancy130

    Changed

    • Test system modified
    • subscript font renamed to subscript1
    • Logo changed
    Commits
    • 5396a4d Merge pull request #158 from sepandhaghighi/dev
    • b4622cc Merge pull request #159 from sepandhaghighi/dependabot/add-v2-config-file
    • 38cd1d1 Merge branch 'dev' into dependabot/add-v2-config-file
    • 2c4675d Upgrade to GitHub-native Dependabot
    • c372e82 doc : minor edit in README TOC
    • 653ed09 doc : README donation section updated
    • 8cb5908 doc : CHANGELOG updated
    • 5fc97ff rel : migrate to version 5.2
    • 3f984f2 doc : README donation section updated
    • 4482dc5 doc : README donation section updated
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 3
  • Notebook Test

    Notebook Test

    Reference Issues/PRs

    What does this implement/fix? Explain your changes.

    • notebook_check.py script added
    • -q flag added to matplotlib installation line in notebooks

    Any other comments?

    enhancement 
    opened by sepandhaghighi 3
  • Apply best practices to testing

    Apply best practices to testing

    • Currently, all testing is consolidated in opem/opem/test.py as a pseudo-doctest file
      • This is actually improper usage of doctests
      • It is hard to understand how and what is being tested
    • If doctests are to be used, they should be implemented in the docstrings
    • Otherwise, testing should use a proper framework
    • See http://docs.python-guide.org/en/latest/writing/tests/ for best practices
    opened by engnadeau 3
  • Bump art from 5.6 to 5.7

    Bump art from 5.6 to 5.7

    Bumps art from 5.6 to 5.7.

    Release notes

    Sourced from art's releases.

    Version 5.7

    • 5 new font added 1- fancy144 2- fancy145 3- fancy146 4- fancy147 5- fancy148
    • ASCII_FONTS list added
    • ASCII_ARTS list added
    Changelog

    Sourced from art's changelog.

    [5.7] - 2022-07-06

    Added

    • 5 new font
      1. fancy144
      2. fancy145
      3. fancy146
      4. fancy147
      5. fancy148
    • ASCII_FONTS list
    • ASCII_ARTS list
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump requests from 2.27.1 to 2.28.0

    Bump requests from 2.27.1 to 2.28.0

    Bumps requests from 2.27.1 to 2.28.0.

    Release notes

    Sourced from requests's releases.

    v2.28.0

    2.28.0 (2022-06-09)

    Deprecations

    • ⚠️ Requests has officially dropped support for Python 2.7. ⚠️ (#6091)
    • Requests has officially dropped support for Python 3.6 (including pypy3). (#6091)

    Improvements

    • Wrap JSON parsing issues in Request's JSONDecodeError for payloads without an encoding to make json() API consistent. (#6097)
    • Parse header components consistently, raising an InvalidHeader error in all invalid cases. (#6154)
    • Added provisional 3.11 support with current beta build. (#6155)
    • Requests got a makeover and we decided to paint it black. (#6095)

    Bugfixes

    • Fixed bug where setting CURL_CA_BUNDLE to an empty string would disable cert verification. All Requests 2.x versions before 2.28.0 are affected. (#6074)
    • Fixed urllib3 exception leak, wrapping urllib3.exceptions.SSLError with requests.exceptions.SSLError for content and iter_content. (#6057)
    • Fixed issue where invalid Windows registry entires caused proxy resolution to raise an exception rather than ignoring the entry. (#6149)
    • Fixed issue where entire payload could be included in the error message for JSONDecodeError. (#6079)

    New Contributors

    Full Changelog: https://github.com/psf/requests/blob/main/HISTORY.md#2280-2022-06-09

    Changelog

    Sourced from requests's changelog.

    2.28.0 (2022-06-09)

    Deprecations

    • ⚠️ Requests has officially dropped support for Python 2.7. ⚠️ (#6091)
    • Requests has officially dropped support for Python 3.6 (including pypy3.6). (#6091)

    Improvements

    • Wrap JSON parsing issues in Request's JSONDecodeError for payloads without an encoding to make json() API consistent. (#6097)
    • Parse header components consistently, raising an InvalidHeader error in all invalid cases. (#6154)
    • Added provisional 3.11 support with current beta build. (#6155)
    • Requests got a makeover and we decided to paint it black. (#6095)

    Bugfixes

    • Fixed bug where setting CURL_CA_BUNDLE to an empty string would disable cert verification. All Requests 2.x versions before 2.28.0 are affected. (#6074)
    • Fixed urllib3 exception leak, wrapping urllib3.exceptions.SSLError with requests.exceptions.SSLError for content and iter_content. (#6057)
    • Fixed issue where invalid Windows registry entires caused proxy resolution to raise an exception rather than ignoring the entry. (#6149)
    • Fixed issue where entire payload could be included in the error message for JSONDecodeError. (#6036)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump art from 5.4 to 5.5

    Bump art from 5.4 to 5.5

    Bumps art from 5.4 to 5.5.

    Release notes

    Sourced from art's releases.

    Version 5.5

    • 5 new font added 1- tarty4 2- tarty5 3- fancy138 4- fancy139 5- fancy140
    • Anaconda workflow added
    • __word2art function modified
    • font_wizard.py modified
    Changelog

    Sourced from art's changelog.

    [5.5] - 2022-03-02

    Added

    • 5 new font
      1. tarty4
      2. tarty5
      3. fancy138
      4. fancy139
      5. fancy140
    • Anaconda workflow

    Changed

    • __word2art function modified
    • font_wizard.py modified
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Minor edits

    Minor edits

    Reference Issues/PRs

    What does this implement/fix? Explain your changes.

    • pepy.tech link fixed
    • Docker section removed
    • Licence link updated
    • Codacy badge updated

    Any other comments?

    document 
    opened by sepandhaghighi 2
  • Menu Modification

    Menu Modification

    Reference Issues/PRs

    What does this implement/fix? Explain your changes.

    • Menu modified
    • description_print function modified
    • description_control function modified

    Any other comments?

    enhancement 
    opened by sepandhaghighi 2
  • Discord channel

    Discord channel

    Description

    Discord channel would be a nice place for ECSIM's users to share their experiences, request new features and/or issue and etc.

    We can made a discord badge linking to our channel using this tutorial.

    document support 
    opened by sepandhaghighi 0
  • Enhancement: return reports as list items when running in library mode

    Enhancement: return reports as list items when running in library mode

    It would be nice to have the HTML, CSV and OPEM reports returned as items in the results list instead of physical files when running in library mode, so the files could be generated from the item contents somewhere else. This is very useful in the context of a chemical process simulator where you can have multiple instances of OPEM objects.

    enhancement 
    opened by DanWBR 8
Releases(v1.3)
  • v1.3(Jun 30, 2021)

  • v1.2(Mar 12, 2020)

  • v1.1(Jul 5, 2019)

  • v1.0(Mar 1, 2019)

    • Interactive notebooks section added #91
    • version_check.py added #93
    • CODE_OF_CONDUCT.md added #94
    • ISSUE_TEMPLATE.md added #96
    • PULL_REQUEST_TEMPLATE.md added #96
    • build_exe.bat added
    • build_unix.sh added
    • Anaconda cloud package added #14
    • Document modified #92
    • Test system modified
    • README.md modified
    • dev-requirements.txt modified #84
    • requirements.txt modified #84
    • CONTRIBUTING.md modified
    • linear_plot function bug fixed
    • INSTALL.md modified
    Source code(tar.gz)
    Source code(zip)
    OPEM-1.0.dmg(6.77 MB)
    OPEM-1.0.exe(5.56 MB)
  • v0.9(Jul 13, 2018)

  • v0.8(Apr 10, 2018)

    • Overall Parameters Added
    • Linear Approximation Added
    • Power(Thermal) Parameter Added
    • Efficiency vs I Plot Added
    • PH2 vs I Plot
    • PO2 vs I Plot
    • Power vs Efficiency Plot Added
    • Loss vs I Plot Added
    • Power(Thermal) vs I Plot Added
    • macOS Version Added
    • Simulation Error Response Modified
    Source code(tar.gz)
    Source code(zip)
  • v0.7(Mar 17, 2018)

    • Standard Test Vectors Added
    • Model Description Added
    • Help Page Added
    • Warning System Added
    • System Block Diagram Added
    • HTML Report Layout Modified
    Source code(tar.gz)
    Source code(zip)
  • v0.6(Mar 1, 2018)

    • Padulles-Amphlett Dynamic Model Added
    • Check Update Function Added
    • Webpage Document Section Added
    • Get_Input Function Default Params Changed
    • Exe-File Incompatibility Fixed
    Source code(tar.gz)
    Source code(zip)
  • v0.5(Feb 16, 2018)

    • Padulles-Hauer Dynamic Model Added
    • Simulation Name Added
    • Interactive HTML Report Added
    • ReportMode & PrintMode Flags Added (StaticAnalysis & DynamicAnalysis Functions)
    • Function Output In Dict Format Added (StaticAnalysis & DynamicAnalysis Functions)
    • qH2O and qH2 In Padulles Dynamic Model 2 Merged
    Source code(tar.gz)
    Source code(zip)
  • v0.4(Feb 6, 2018)

  • v0.3(Jan 31, 2018)

  • v0.2(Jan 5, 2018)

  • v0.1(Dec 25, 2017)

    OPEM Version 0.1 :

    • Amphlett Static Model
      • Nernst Voltage
      • PEMFC losses model
      • Power of PEMFC
      • Efficiency of PEMFC
    • Flat Output
      • Simulation Result
      • CSV File
    Source code(tar.gz)
    Source code(zip)
Owner
ECSIM
Electrochemistry Simulation Tools
ECSIM
A logical, reasonably standardized, but flexible project structure for doing and sharing data science work.

Cookiecutter Data Science A logical, reasonably standardized, but flexible project structure for doing and sharing data science work. Project homepage

6.4k Jan 02, 2023
A simple computer program made with Python on the brachistochrone curve.

Brachistochrone-curve This is a simple computer program made with Python on the brachistochrone curve. I decided to write it after a physics lesson on

Diego Romeo 1 Dec 16, 2021
CoCalc: Collaborative Calculation in the Cloud

logo CoCalc Collaborative Calculation and Data Science CoCalc is a virtual online workspace for calculations, research, collaboration and authoring do

SageMath, Inc. 1k Dec 29, 2022
A mathematica expression evaluator with PokemonTypes

A simple mathematical expression evaluator that uses Pokemon types to replace symbols.

Arnav Jindal 2 Nov 14, 2021
Float2Binary - A simple python class which finds the binary representation of a floating-point number.

Float2Binary A simple python class which finds the binary representation of a floating-point number. You can find a class in IEEE754.py file with the

Bora Canbula 3 Dec 14, 2021
Veusz scientific plotting application

Veusz 3.3.1 Veusz is a scientific plotting package. It is designed to produce publication-ready PDF or SVG output. Graphs are built-up by combining pl

Veusz 613 Dec 16, 2022
An open-source application for biological image analysis

CellProfiler is a free open-source software designed to enable biologists without training in computer vision or programming to quantitatively measure

CellProfiler 734 Jan 08, 2023
Incubator for useful bioinformatics code, primarily in Python and R

Collection of useful code related to biological analysis. Much of this is discussed with examples at Blue collar bioinformatics. All code, images and

Brad Chapman 560 Dec 24, 2022
Book on Julia for Data Science

Book on Julia for Data Science

Julia Data Science 349 Dec 25, 2022
Read-only mirror of https://gitlab.gnome.org/GNOME/pybliographer

Pybliographer Pybliographer provides a framework for working with bibliographic databases. This software is licensed under the GPLv2. For more informa

GNOME Github Mirror 15 May 07, 2022
Statsmodels: statistical modeling and econometrics in Python

About statsmodels statsmodels is a Python package that provides a complement to scipy for statistical computations including descriptive statistics an

statsmodels 8.1k Dec 30, 2022
SCICO is a Python package for solving the inverse problems that arise in scientific imaging applications.

Scientific Computational Imaging COde (SCICO) SCICO is a Python package for solving the inverse problems that arise in scientific imaging applications

Los Alamos National Laboratory 37 Dec 21, 2022
A flexible package manager that supports multiple versions, configurations, platforms, and compilers.

Spack Spack is a multi-platform package manager that builds and installs multiple versions and configurations of software. It works on Linux, macOS, a

Spack 3.1k Dec 31, 2022
Discontinuous Galerkin finite element method (DGFEM) for Maxwell Equations

DGFEM Maxwell Equations Discontinuous Galerkin finite element method (DGFEM) for Maxwell Equations. Work in progress. Currently, the 1D Maxwell equati

Rafael de la Fuente 9 Aug 16, 2022
Graphic notes on Gilbert Strang's "Linear Algebra for Everyone"

Graphic notes on Gilbert Strang's "Linear Algebra for Everyone"

Kenji Hiranabe 3.2k Jan 08, 2023
Metaflow is a human-friendly Python/R library that helps scientists and engineers build and manage real-life data science projects

Metaflow Metaflow is a human-friendly Python/R library that helps scientists and engineers build and manage real-life data science projects. Metaflow

Netflix, Inc. 6.3k Jan 03, 2023
A modular single-molecule analysis interface

MOSAIC: A modular single-molecule analysis interface MOSAIC is a single molecule analysis toolbox that automatically decodes multi-state nanopore data

National Institute of Standards and Technology 35 Dec 13, 2022
Efficient Python Tricks and Tools for Data Scientists

Why efficient Python? Because using Python more efficiently will make your code more readable and run more efficiently.

Khuyen Tran 944 Dec 28, 2022
Mathics is a general-purpose computer algebra system (CAS). It is an open-source alternative to Mathematica

Mathics is a general-purpose computer algebra system (CAS). It is an open-source alternative to Mathematica. It is free both as in "free beer" and as in "freedom".

Mathics 535 Jan 04, 2023
ckan 3.6k Dec 27, 2022