Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds "fast with events" as default echem solver #301

Merged

Conversation

BradyPlanden
Copy link
Member

@BradyPlanden BradyPlanden commented Apr 20, 2024

Description

This PR updates the default solver for the echem models to include the "fast with events" mode. More information on this solver can be found:

https://github.com/pybamm-team/PyBaMM/blob/develop/pybamm/solvers/casadi_solver.py
https://docs.pybamm.org/en/stable/source/api/solvers/casadi_solver.html#casadi-solver

This is currently listed as experimental within the PyBaMM documentation, so I'm open to input on whether this should be blocked for a bit to ensure robustness.

Issue reference

Fixes #300

Review

Before you mark your PR as ready for review, please ensure that you've considered the following:

  • Updated the CHANGELOG.md in reverse chronological order (newest at the top) with a concise description of the changes, including the PR number.
  • Noted any breaking changes, including details on how it might impact existing functionality.

Type of change

  • New Feature: A non-breaking change that adds new functionality.
  • Optimization: A code change that improves performance.
  • Examples: A change to existing or additional examples.
  • Bug Fix: A non-breaking change that addresses an issue.
  • Documentation: Updates to documentation or new documentation for new features.
  • Refactoring: Non-functional changes that improve the codebase.
  • Style: Non-functional changes related to code style (formatting, naming, etc).
  • Testing: Additional tests to improve coverage or confirm functionality.
  • Other: (Insert description of change)

Key checklist:

  • No style issues: $ pre-commit run (or $ nox -s pre-commit) (see CONTRIBUTING.md for how to set this up to run automatically when committing locally, in just two lines of code)
  • All unit tests pass: $ nox -s tests
  • The documentation builds: $ nox -s doctest

You can run integration tests, unit tests, and doctests together at once, using $ nox -s quick.

Further checks:

  • Code is well-commented, especially in complex or unclear areas.
  • Added tests that prove my fix is effective or that my feature works.
  • Checked that coverage remains or improves, and added tests if necessary to maintain or increase coverage.

Thank you for contributing to our project! Your efforts help us to deliver great software.

@BradyPlanden BradyPlanden linked an issue Apr 20, 2024 that may be closed by this pull request
Copy link

codecov bot commented Apr 20, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 95.80%. Comparing base (fed4a12) to head (02bd80a).
Report is 3 commits behind head on develop.

Additional details and impacted files
@@           Coverage Diff            @@
##           develop     #301   +/-   ##
========================================
  Coverage    95.79%   95.80%           
========================================
  Files           38       38           
  Lines         2045     2048    +3     
========================================
+ Hits          1959     1962    +3     
  Misses          86       86           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Member

@agriyakhetarpal agriyakhetarpal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @BradyPlanden, would you also consider using numpy.testing.assert_allclose instead – it's the more recommended option nowadays, maybe not here, but in another PR, or here if you feel like it? The tolerances to check for would have to be adjusted in some test cases. I think the changes look good, though, and I'll let others review it too.

Copy link
Contributor

@martinjrobins martinjrobins left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changes look good, buth how have you found the "fast with events" solver compare against the idaklu solver? If events are important (e.g. in an experiment) the idaklu solver can be quite a bit faster.

@agriyakhetarpal
Copy link
Member

agriyakhetarpal commented Apr 23, 2024

The IDAKLU solver was tried in #176 and #217 and it's partially working for Unix-like platforms (with a non-repaired wheel and when built from source, so that's not ideal).

Windows support is probably still going to be broken for a while, because of the reasons described on the PyBaMM side where it doesn't work with pybamm.Interpolant and idaklu-cp3X-win-amd64.pyd cannot find the CasADi libs. I am not sure if it would work here or not – it might.

@martinjrobins
Copy link
Contributor

fair enough! happy to stick with casadi then!

@BradyPlanden BradyPlanden merged commit 1431f67 into develop Apr 26, 2024
28 checks passed
@BradyPlanden BradyPlanden deleted the 300-update-default-casadi-solver-mode-to-fast-with-events branch April 26, 2024 02:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Update default Casadi solver mode to "fast with events"
4 participants