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
Karate Club: An API Oriented Open-source Python Framework for Unsupervised Learning on Graphs (CIKM 2020)

Karate Club is an unsupervised machine learning extension library for NetworkX. Please look at the Documentation, relevant Paper, Promo Video, and Ext

Benedek Rozemberczki 1.8k Dec 31, 2022
Open Delmic Microscope Software

Odemis Odemis (Open Delmic Microscope Software) is the open-source microscopy software of Delmic B.V. Odemis is used for controlling microscopes of De

Delmic 32 Dec 14, 2022
ReproZip is a tool that simplifies the process of creating reproducible experiments from command-line executions, a frequently-used common denominator in computational science.

ReproZip ReproZip is a tool aimed at simplifying the process of creating reproducible experiments from command-line executions, a frequently-used comm

267 Jan 01, 2023
Wikidata scholarly profiles

Scholia is a python package and webapp for interaction with scholarly information in Wikidata. Webapp As a webapp, it currently runs from Wikimedia To

Finn Årup Nielsen 180 Dec 28, 2022
Algorithms covered in the Bioinformatics Course part of the Cambridge Computer Science Tripos

Bioinformatics This is a repository of all the algorithms covered in the Bioinformatics Course part of the Cambridge Computer Science Tripos Algorithm

16 Jun 30, 2022
Book on Julia for Data Science

Book on Julia for Data Science

Julia Data Science 349 Dec 25, 2022
🍊 :bar_chart: :bulb: Orange: Interactive data analysis

Orange Data Mining Orange is a data mining and visualization toolbox for novice and expert alike. To explore data with Orange, one requires no program

Bioinformatics Laboratory 3.9k Jan 05, 2023
3D medical imaging reconstruction software

InVesalius InVesalius generates 3D medical imaging reconstructions based on a sequence of 2D DICOM files acquired with CT or MRI equipments. InVesaliu

443 Jan 01, 2023
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
Doing bayesian data analysis - Python/PyMC3 versions of the programs described in Doing bayesian data analysis by John K. Kruschke

Doing_bayesian_data_analysis This repository contains the Python version of the R programs described in the great book Doing bayesian data analysis (f

Osvaldo Martin 851 Dec 27, 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
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
An interactive explorer for single-cell transcriptomics data

an interactive explorer for single-cell transcriptomics data cellxgene (pronounced "cell-by-gene") is an interactive data explorer for single-cell tra

Chan Zuckerberg Initiative 424 Dec 15, 2022
OPEM (Open Source PEM Fuel Cell Simulation Tool)

Table of contents What is PEM? Overview Installation Usage Executable Library Telegram Bot Try OPEM in Your Browser! MATLAB Issues & Bug Reports Contr

ECSIM 133 Jan 04, 2023
CS 506 - Computational Tools for Data Science

CS 506 - Computational Tools for Data Science Code, slides, and notes for Boston University CS506 Fall 2021 The Final Project Repository can be found

Lance Galletti 14 Mar 23, 2022
ckan 3.6k Dec 27, 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
PsychoPy is an open-source package for creating experiments in behavioral science.

PsychoPy is an open-source package for creating experiments in behavioral science. It aims to provide a single package that is: precise enoug

PsychoPy 1.3k Dec 31, 2022
Zipline, a Pythonic Algorithmic Trading Library

Zipline is a Pythonic algorithmic trading library. It is an event-driven system for backtesting. Zipline is currently used in production as the backte

Quantopian, Inc. 15.7k Jan 07, 2023
Validated, scalable, community developed variant calling, RNA-seq and small RNA analysis

Validated, scalable, community developed variant calling, RNA-seq and small RNA analysis. You write a high level configuration file specifying your in

Blue Collar Bioinformatics 915 Dec 29, 2022