-
Notifications
You must be signed in to change notification settings - Fork 7
Throw and fix #32
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
base: master
Are you sure you want to change the base?
Throw and fix #32
Conversation
chemiskyy
commented
Apr 14, 2025
- Add exception for eig_sym function of armadillo : exception_eig_sym
- Add throw exception for all functions that are using eig_sym
- optimize tensorial product
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces exception handling for Armadillo’s eig_sym function by throwing simcoon-specific exceptions, adds tests for these exception triggers, and refactors various source and header files to use updated simcoon constants and improve documentation.
- Replace sim_iota with simcoon::iota in ODF.cpp.
- Add try/catch wrapping around inv and eig_sym calls in objective_rates.cpp and test files.
- Update documentation and constants (e.g., sim_pi to simcoon::pi) across header files.
Reviewed Changes
Copilot reviewed 93 out of 94 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| software/ODF.cpp | Uses simcoon::iota in linspace call for consistency. |
| simcoon-python-builder/test/exception_test/*.py/cpp | Adds and tests exception handling for eig_sym failures. |
| simcoon-python-builder/src/python_wrappers/*.cpp | Registers new simcoon exceptions with pybind11 and wraps functions in try/catch. |
| include/simcoon/parameter.hpp, exception.hpp, and others | Refactors constants and updates documentation for clarity and consistency. |
| Various documentation files | Updates parameter descriptions and usage examples to reflect new simcoon constants. |
Files not reviewed (1)
- simcoon-python-builder/CMakeLists.txt: Language not supported
simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/objective_rates.cpp
Show resolved
Hide resolved
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
6d25939 to
a92e3ea
Compare
- Fix duplicate umat_plugin_aba target in CMakeLists.txt - Remove empty PREFIX/SUFFIX to use OS-default library naming - Replace sim_iota with iota in criteria.cpp and aniso_T.cpp - Replace sim_limit with limit in aniso_T.cpp These constants were renamed in parameter.hpp but some references were not updated.
- Add exception_solver class for solver-specific errors - Protect all inv() calls in solver.cpp with try-catch: - Jacobian inversions during Newton-Raphson iterations - Hughes-Winget rotation updates - Natural basis rotation updates - Protect inv() call in step_meca.cpp for deformation gradient - Register exception_solver in Python bindings This prevents silent crashes when: - Jacobian becomes singular during convergence - Deformation gradient is singular - Rotation updates fail due to numerical issues Python users will now see clear error messages instead of crashes.
a92e3ea to
85d3ebe
Compare