feat: add geomeTRIC optimizer backend#133
Merged
karmachoi merged 9 commits intoMay 25, 2026
Merged
Conversation
- Add geomeTRIC engine for state-specific optimization and MECI objectives - Wire lib=geometric through optimizer dispatch and input validation - Add dependency metadata and focused regression tests
- Add GeometricMECPOpt wrapper around the existing OpenQP MECP objective - Wire lib=geometric for runtype=mecp - Extend validation and dispatch regression tests
- Add geomeTRIC reference examples for minimum optimization, MECI, and MECP - Include reference JSONs verified through openqp --run_tests - Extend regression coverage to require geomeTRIC examples and references
- Add GeometricTSOpt using geomeTRIC transition mode - Wire lib=geometric for runtype=ts and validate it - Add HCN TS geomeTRIC example with reference JSON
- Add GeometricIRCOpt wrapper around state-specific gradients - Wire runtype=irc through runner, optimizer dispatch, and input validation - Add HCN geomeTRIC IRC example/reference and regression coverage
This was referenced May 25, 2026
Closed
- Add constraints_file, enforce, and conmethod options under [geometric] - Resolve constraint files relative to the OpenQP input file - Add constrained HCN geomeTRIC example/reference coverage
Closed
- Use an initial Hessian for geomeTRIC TS searches by default - Run full input validation for IRC optimize settings - Add regression tests for TS Hessian and full IRC validation - Refresh TS example references for Hessian-backed TS runs
karmachoi
commented
May 25, 2026
Contributor
Author
karmachoi
left a comment
There was a problem hiding this comment.
Codex re-review after latest fixes:
No blocking issues found.
Focused local check run by Codex:
PYTHONDONTWRITEBYTECODE=1 python -m unittest tests/test_geometric_optimizer.pyResult: 15 tests OK.
Notes:
- The earlier TS Hessian and full IRC input-validation findings were addressed in commit
03e73fa. - OpenTrustRegion/LINALG build-system items are out of scope for this PR and were handled separately by PR #134.
This was referenced May 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
lib=geometricoptimizer backend using geomeTRIC's custom-engine interface.[geometric]input defaults, including IRC direction handling (forward/backward, withreversenormalized tobackward).[geometric] constraints_file,enforce, andconmethod.Scope
This PR is intentionally limited to geomeTRIC optimizer integration and examples.
Advanced guess-mode work is separate. OpenTrustRegion / BLAS / LAPACK build-system configuration, including early rejection of
LINALG_LIB=none, was handled separately by PR #134 and has been merged into the base history used by this branch.Test Plan
python3 -m unittest tests/test_geometric_optimizer.py -vpython3 -m py_compile pyoqp/oqp/library/libgeometric.py pyoqp/oqp/library/libscipy.py pyoqp/oqp/library/runfunc.py pyoqp/oqp/molecule/oqpdata.py pyoqp/oqp/utils/input_checker.pyopenqp --run_tests examples/OPT/H2O_RHF-DFT_OPTIMIZE_GEOMETRIC.inp --nompiopenqp --run_tests examples/OPT/HCN_RHF-DFT_CONSTRAINED_GEOMETRIC.inp --nompiopenqp --run_tests examples/OPT/C2H4_BHHLYP-MRSFTDDFT_MECI_GEOMETRIC.inp --nompiopenqp --run_tests examples/OPT/C2H4_BHHLYP-MRSFTDDFT_MECP_GEOMETRIC.inp --nompiopenqp --run_tests examples/OPT/HCN_RHF-DFT_TS_GEOMETRIC.inp --nompiopenqp --run_tests examples/OPT/HCN_BHHLYP-MRSFTDDFT_TS_GEOMETRIC.inp --nompiopenqp --run_tests examples/OPT/HCN_RHF-DFT_IRC_GEOMETRIC.inp --nompi