Add nuclear derivative calculators#500
Open
nabbelbabbel wants to merge 16 commits into
Open
Conversation
added 2 commits
June 2, 2026 12:14
📊 Coverage Summary
Detailed Coverage ReportsC++ Coverage DetailsPython Coverage DetailsPybind11 Coverage Details |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces nuclear-derivative functionality (energy + nuclear gradients, with optional Hessians) across the C++ core and Python API, including data containers, algorithm implementations (finite-difference + QDK analytic-gradient path), pybind11 bindings, and accompanying tests.
Changes:
- Add
NuclearGradientsandNuclearHessianDataClass types with JSON/HDF5 serialization and Python bindings. - Add
NuclearDerivativeCalculatoralgorithms (finite-difference and QDK analytic gradient) plus factory registration/exposure in Python and C++. - Extend the internal SCF backend to optionally return analytic nuclear gradients and implement ERI gradient support in
LIBINT2_DIRECT.
Reviewed changes
Copilot reviewed 24 out of 24 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| python/tests/test_nuclear_derivative.py | Adds Python tests for new nuclear-derivative data types and factory registration. |
| python/src/qdk_chemistry/data/init.py | Exposes NuclearGradients / NuclearHessian in the public Python data API. |
| python/src/qdk_chemistry/algorithms/registry.py | Registers NuclearDerivativeCalculatorFactory in the Python algorithm registry. |
| python/src/qdk_chemistry/algorithms/nuclear_derivative.py | Adds public Python re-export module for nuclear derivative calculators. |
| python/src/qdk_chemistry/algorithms/init.py | Re-exports the new nuclear derivative calculator classes from qdk_chemistry.algorithms. |
| python/src/pybind11/module.cpp | Wires new pybind11 binders for gradients, Hessian, and nuclear derivative algorithms. |
| python/src/pybind11/data/nuclear_gradients.cpp | Implements Python bindings for NuclearGradients. |
| python/src/pybind11/data/nuclear_hessian.cpp | Implements Python bindings for NuclearHessian. |
| python/src/pybind11/algorithms/nuclear_derivative.cpp | Implements Python bindings + factory binding for nuclear derivative calculators. |
| python/CMakeLists.txt | Adds new pybind11 source files to the Python extension build. |
| cpp/tests/test_nuclear_derivative.cpp | Adds C++ tests for data round-trips and analytic vs numeric gradient behavior. |
| cpp/src/qdk/chemistry/data/nuclear_gradients.cpp | Implements NuclearGradients storage and (JSON/HDF5) serialization. |
| cpp/src/qdk/chemistry/data/nuclear_hessian.cpp | Implements NuclearHessian storage and (JSON/HDF5) serialization. |
| cpp/src/qdk/chemistry/data/CMakeLists.txt | Adds new data sources to the C++ library build. |
| cpp/src/qdk/chemistry/algorithms/nuclear_derivative.cpp | Implements finite-difference and QDK analytic nuclear-derivative calculators and factory registration. |
| cpp/src/qdk/chemistry/algorithms/microsoft/scf/src/eri/LIBINT2_DIRECT/libint2_direct.cpp | Adds ERI gradient implementation and RSX-related exchange handling. |
| cpp/src/qdk/chemistry/algorithms/microsoft/scf.hpp | Adds SCF result type returning optional analytic nuclear gradients. |
| cpp/src/qdk/chemistry/algorithms/microsoft/scf.cpp | Adds run_with_analytic_gradient() and plumbs gradient retrieval via SCF config. |
| cpp/src/qdk/chemistry/algorithms/CMakeLists.txt | Adds new algorithm source to the C++ library build. |
| cpp/src/qdk/chemistry/algorithms/algorithm_defaults.cpp | Registers defaults init for NuclearDerivativeCalculatorFactory. |
| cpp/include/qdk/chemistry/data/nuclear_gradients.hpp | Adds public header for NuclearGradients. |
| cpp/include/qdk/chemistry/data/nuclear_hessian.hpp | Adds public header for NuclearHessian. |
| cpp/include/qdk/chemistry/algorithms/nuclear_derivative.hpp | Adds public header for nuclear derivative calculators + settings/factory. |
| cpp/include/qdk/chemistry.hpp | Adds umbrella-header exports for new data/algorithm types. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
mmoerchen
reviewed
Jun 5, 2026
added 2 commits
June 6, 2026 18:43
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.
No description provided.