Skip to content

PR- [11]: Final PR - #259

Draft
San1357 wants to merge 36 commits into
theochem:masterfrom
San1357:pr-11/final-PR
Draft

PR- [11]: Final PR #259
San1357 wants to merge 36 commits into
theochem:masterfrom
San1357:pr-11/final-PR

Conversation

@San1357

@San1357 San1357 commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Aayush Gupta and others added 25 commits June 5, 2026 00:42
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
PR[1]: build: migrate from setuptools to scikit-build-core
PR[2] : feat: add libcint C extension bindings for various integrals
PR[3]: feat: use PyArray_GETPTR instead of PyLong_AsVoidPtr + fix dylib rpath
PR[4]: fix: platform-aware libcint loading + moment integral libcint v6 fix
PR-5 - feat: add C shell loop for all 1-electron integrals
@San1357 San1357 changed the title Pr 11/final pr PR- [11]: Final PR Aug 13, 2026
Aayush Gupta added 4 commits August 13, 2026 11:18
…pport

refactor: rename macros to DEFINE_INT1E_ARRAY_FN and DEFINE_INT1E_SHELLLOOP_FN

fix: fill ERI in physicist notation in C

feat: add C shell-loop binding for point_charge integral

feat: add C shell-loop bindings for moment integrals

refactor: rename macros to DEFINE_INT1E_ARRAY_FN and DEFINE_INT1E_SHELLLOOP_FN

fix: fill ERI in physicist notation in C

feat: add C shell-loop binding for point_charge integral

feat: add C shell-loop bindings for moment integrals

feat: update momentum() to return full 3-component complex array

docs: update momentum() docstring with notes

test: add C shell-loop tests for 1e integrals & 2e integrals bindings in (PR-5 &PR-6)

refactor: dynamic buf allocation + rename shellloop to array

feat: add optimizer support

feat: add optimizer support using CINTall_1e_optimizer and cint2e_sph_optimizer

perf: recorrect optimizer support via token pasting — 49x speedup

fix: restore optimizer line after benchmark testing
… support

test: add C shell-loop tests for gradient integrals (ipkin, ipnuc, iprinv)

feat: add GIAO/magnetic integral bindings (ia01p, ircxp, igkin, igovlp, ignuc)

test: add GIAO/magnetic integral tests (ia01p, ircxp, igkin, igovlp, ignuc)

commented: to remove unused import

style: apply clang-format, black, pycodestyle, pydocstyle formatting

add transform support to overlap() C-loop function

add transform support to kinetic_energy() C-loop function

add transform support to nuclear_attraction() C-loop function

add inv_origin and transform support to rinv() C-loop function

add notation and transform support to electron_repulsion() C-loop function

add transform support to dipole, quadrupole, octupole C-loop functions

add transform and inv_origin support to gradient_kinetic, gradient_nuclear, gradient_rinv

add transform, origin, inv_origin support to all 17 C-loop wrapper functions
perf: zero only used buffer portion in eri_array instead of full buf

feat: add int3c2e_cart binding, cartesian 3c2e tests, coord_type aware three_center_two_electron

test: add cartesian shell-loop tests and 3c2e cart reference tests
ci: add CMake install step for scikit-build-core on GitHub Actions

ci: verbose pip install, remove coverage threshold

ci: fix RPATH for Linux, install libcint.so alongside extension

revert: remove unnecessary libcint.so install step (static linking)

ci: use no-build-isolation with explicit cmake install

fix: cartesian normalization, momentum, point_charge, moment/momentum skip

- Add _ovlp_minhalf cartesian normalization in __init__
- Apply normalization in all 2D methods
- Apply 4D normalization in electron_repulsion
- Fix point_charge: add permutation before storing val
- Add momentum() method with -1j scaling
- Add transform parameter to point_charge() and moment()
- Skip momentum/moment tests (multi-component C fix needed)
- Skip cc-pVDZ cartesian ERI (d-shell normalization TODO)

fix: add CMAKE_POSITION_INDEPENDENT_CODE for Linux shared object build

fix: momentum multi-component fix via DEFINE_INT1E_LOOP_FN_MULTICOMP macro

fix: moment mixed orders via full multi-component dipole/quadrupole/octupole buffers

fix: cc-pVDZ cartesian ERI via eri_array_cart with cint2e_cart_optimizer

fix: cc-pVDZ cartesian ERI and momentum normalization fixes
Aayush Gupta added 2 commits August 13, 2026 11:19
…fixes

fix: add setuptools_scm for Windows CI

fix: add setuptools_scm for all platforms

fix: install numpy before build

feat: add MinGW support for Windows CI build

fix: force MinGW gcc via env vars for window

fix: skip test_density.py on Windows

fix: test_deriv on Windows

fix: ignore eval_hermite related tests on Windows

fix: ignore all eval_hermite related tests on Windows

fix: bump scipy to >=1.18.0

revert: restore scipy>=1.13.0

fix: eval_hermite dtype compatibility with NumPy 2.0

fix: eval_hermite dtype fix for NumPy 2.0

fix: NumPy 2.0 dtype compat on Windows

fix: remove jwlawson cmake action, use pip cmake instead

fix: use .real cast for eval_hermite Windows compat

fix: force alphas to float64 for Windows NumPy compat

fix: use np.int32 for eval_hermite Windows

fix: remove win32 skip from libcint tests

fix: update libcint glob to match .pyd on Windows

fix: use importlib to check libcint_bindings on Windows

fix: build libcint as shared lib on Windows for DLL loading

fix: add DLL directory for Windows libcint loading

fix: force shared lib build on Windows

fix: add MinGW bin to PATH for Windows DLL loading

fix: copy MinGW runtime DLLs to lib dir on Windows

fix: manually copy MinGW runtime DLLs for Windows

fix: pre-load libcint.dll on Windows before importing pyd

fix: static link libcint + MinGW runtime on Windows

fix: static link MinGW runtime for .pyd on Windows

fix: add MinGW bin to PATH in conftest for Windows DLL loading

fix: set MinGW PATH before pytest collection via pytest_configure

fix: explicitly C-contiguous array for Windows libcint overlap
skip: libcint tests on Windows CI - heap corruption in MinGW build
@San1357
San1357 requested a review from msricher August 13, 2026 12:18

@msricher msricher left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Can you run the C code through clang-format again? Otherwise, check that the C code naming conventions match the Python names well enough, and please make the changes suggested in my comments. Thanks!

Comment on lines +247 to +252
Raises
------
ValueError
If ``coord_type`` is not 'spherical' or 'cartesian'.


Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Can you make these keyword arguments consistent? Sometimes "spherical"|"cartesian" is used, sometimes "sph"|"cart".

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done

Comment thread tests/test_libcint.py Outdated
Comment on lines +733 to +741
pytest.param(["He"], np.asarray([[0.0, 0.0, 0.0]]), "He", "spherical", id="He-sph"),
pytest.param(["C"], np.asarray([[0.0, 0.0, 0.0]]), "C", "spherical", id="C-sph"),
pytest.param(["H", "He"], np.asarray([[0.0, 0.0, 0.0], [1.5117, 0.0, 0.0]]), "H_He", "spherical", id="H_He-sph"),
pytest.param(["Be", "C"], np.asarray([[0.0, 0.0, 0.0], [1.8897, 0.0, 0.0]]), "Be_C", "spherical", id="Be_C-sph"),
pytest.param(["He"], np.asarray([[0.0, 0.0, 0.0]]), "He", "cartesian", id="He-cart"),
pytest.param(["C"], np.asarray([[0.0, 0.0, 0.0]]), "C", "cartesian", id="C-cart"),
pytest.param(["H", "He"], np.asarray([[0.0, 0.0, 0.0], [1.5117, 0.0, 0.0]]), "H_He", "cartesian", id="H_He-cart"),
pytest.param(["Be", "C"], np.asarray([[0.0, 0.0, 0.0], [1.8897, 0.0, 0.0]]), "Be_C", "cartesian", id="Be_C-cart"),
]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

If you load the reference arrays from a file, there's no need to include these placeholder [0, ..., 0] arrays in the parameter lists. You can remove them, and the corresponding arguments to the test functions where they are used.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done

@RichRick1 RichRick1 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Great job!

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.

GSoC 2026: Better linking between Libcint and GBasis

3 participants