Skip to content
Open
Show file tree
Hide file tree
Changes from 233 commits
Commits
Show all changes
240 commits
Select commit Hold shift + click to select a range
4c00ac8
Flexible basis sets and initial guess (#224)
mmoerchen Dec 18, 2025
1b482e9
Limit Parallelism in Dev Container Build (#228)
v-georgen Dec 18, 2025
b1df0bc
Add upper bound on numpy version (#240)
v-georgen Dec 22, 2025
2f253bd
Move CaseInsensitiveStrEnum to utils.enum module (#236)
Copilot Dec 23, 2025
44eac61
Refactor Top Level Documentation (#229)
wavefunction91 Dec 26, 2025
438d438
Consistent Capitalization in references.bib (#246)
wavefunction91 Dec 29, 2025
cc74792
Fix documentation problems (#251)
sobolevnrm Dec 31, 2025
cb58937
Add Pauli Math to QDK/Chemistry (#218)
wavefunction91 Jan 1, 2026
2b1be20
Fix spelling errors in docs (#253)
ConradJohnston Jan 3, 2026
6e111fc
Fix spelling errors in codebase (#254)
ConradJohnston Jan 3, 2026
831f89a
Refactor doc examples to load structures from XYZ files (#252)
ConradJohnston Jan 5, 2026
ebfe72e
(De)serialization for rdms (#256)
puckvg Jan 5, 2026
77eaa62
Unify json / hdf5 serialization (#262)
puckvg Jan 6, 2026
e81e927
Bug in naming of coupled cluster container (#265)
puckvg Jan 7, 2026
54d7d3d
Refactor Hamiltonian into a Container Model (#221)
rainli323 Jan 7, 2026
b6cc8df
Add test to example/sample_rdkit_structure.py (#231)
rainli323 Jan 7, 2026
d3ae335
Update demo notebook scf_solver.run() arguments to latest version. (#…
sobolevnrm Jan 7, 2026
ea213da
Add modified GDM code and trial energy function (#222)
Jan 7, 2026
3f405c9
Remove deprecated names (#227)
mmoerchen Jan 8, 2026
117f22e
Update qiskit dependency version constraints (#274)
wavefunction91 Jan 8, 2026
eaba4f6
Add @ConradJohnston as a global code owner (#272)
wavefunction91 Jan 9, 2026
3c2828c
Adapt QDK/Chemistry to Qiskit 2.3.0 (#281)
MarcoEckhoff Jan 9, 2026
b596541
Add trademarks section to README (#270)
wavefunction91 Jan 12, 2026
2c3b417
Fix conversion from QDK/Chemistry Orbitals to PySCF SCF (#280)
MarcoEckhoff Jan 12, 2026
d284d12
Add SUPPORT.md (#282)
wavefunction91 Jan 12, 2026
98936d8
Add CI/CD for macOS build (#263)
v-georgen Jan 13, 2026
90605a9
Fix Sample SCI Workflow (#288)
MarcoEckhoff Jan 13, 2026
f9d879c
Allow to load ansatz from separate wfn / hamiltonian files (#276)
puckvg Jan 14, 2026
1924654
fix: preserve active space indices after orbital localization (#259)
ConradJohnston Jan 14, 2026
096558a
Expose ConfigurationSet in python (#289)
puckvg Jan 14, 2026
0ecfd4f
provide an example in passing QDK electronic Hamiltonian to OpenFermi…
rainli323 Jan 14, 2026
99ff193
Add stability analysis in QDK Chemistry (#230)
Jan 14, 2026
175c40c
Add time evolution unitary dataclass and constructor algorithms (#219)
RushiGong Jan 15, 2026
1b2ab5e
Add N2 iterative QPE demo (#291)
RushiGong Jan 15, 2026
33672bc
Autocas Docs (#261)
mmoerchen Jan 15, 2026
99966d1
Add `merge_group` trigger to CI/CD workflows (#307)
ConradJohnston Jan 16, 2026
34b9f4d
Improve robustness of Python CI/CD (#311)
v-georgen Jan 17, 2026
520ab76
Bind _data_type_name for cpp data classes (#279)
puckvg Jan 19, 2026
7cd3b0f
Fix minor issues (#317)
nabbelbabbel Jan 19, 2026
e88b4a4
Reorganize examples into new directory setups (#312)
rainli323 Jan 19, 2026
becc963
Add QDK-native QubitMapper (#255)
wavefunction91 Jan 19, 2026
b2b1c86
Add macOS wheels (#285)
v-georgen Jan 20, 2026
e8ce53d
QDK-Chemistry Insights: Usage Tracking (#271)
awoodwa Jan 20, 2026
72f6d9d
PMC Docs (#260)
mmoerchen Jan 20, 2026
bccb157
Clarify Telemetry discussion forum instructions (#322)
sobolevnrm Jan 20, 2026
1d85aa4
Add tests and overflow guards for factorial and binomial_coefficient …
Copilot Jan 20, 2026
5998dc1
Better logging in active space selector algorithms (#319)
mmoerchen Jan 20, 2026
82c74af
Move get_top_determinants, fix citations originating in cpp docs and …
nabbelbabbel Jan 20, 2026
20727c1
MCSCF docs (#233)
mmoerchen Jan 20, 2026
0770017
Add Schatten norm property to QubitHamiltonian (#320)
Copilot Jan 20, 2026
c447b1d
Basisset Docs (#257)
mmoerchen Jan 20, 2026
04cd302
Docs: restructure `algorithm` classes `toctree` to match `data` class…
ConradJohnston Jan 20, 2026
1af660d
Fix edge cases in single atom calculations (#315)
MarcoEckhoff Jan 20, 2026
22a6b86
Add tests for example notebooks (#323)
nabbelbabbel Jan 20, 2026
4433d44
Add changelog and wavefunction truncation helper (#328)
nabbelbabbel Jan 21, 2026
c4f5a7c
Add encoding metadata to prevent silent bugs from mixed fermion-to-qu…
Copilot Jan 21, 2026
806e3a1
Refactor quantum phase estimation implementation (#310)
RushiGong Jan 21, 2026
f742d38
Update top level name in README.md (#330)
v-georgen Jan 22, 2026
3ae7e4b
Bump qdk dependency version (#331)
RushiGong Jan 22, 2026
9fe246b
Style 'AutoCAS' as 'autoCAS' in user-facing text (#334)
ConradJohnston Jan 22, 2026
1817d87
ECPs in atom initial guess (#309)
mmoerchen Jan 23, 2026
4ffc1d9
QDK/Chemistry v1.0.0 (#327)
wavefunction91 Jan 24, 2026
a11d660
Remove failing filter (#344)
nabbelbabbel Jan 25, 2026
674af80
Enhance INSTALL.md with clearer installation steps (#341)
sobolevnrm Jan 25, 2026
ae53aa8
Add support for Python 3.10 (#343)
wavefunction91 Jan 26, 2026
65ac09c
QDK/Chemistry v1.0.1 (#345)
wavefunction91 Jan 26, 2026
a2641b2
Update plugins optional dependencies (#346)
RushiGong Jan 28, 2026
1e32db6
Fix installation instructions for Ubuntu compatibility (#347)
Copilot Jan 29, 2026
d79e3db
More efficient CI/CD & Nightly Release Builds (#348)
v-georgen Jan 30, 2026
843d65e
QDK/Chemistry 1.0.2 (#349)
wavefunction91 Feb 2, 2026
2ef4fad
Update iQPE example to match demo (#325)
sobolevnrm Feb 3, 2026
8468d6a
Bump version to 1.0.2 and update changelog (#352)
ConradJohnston Feb 3, 2026
3334c63
Add dedicated [jupyter] extra to `pip install` and update notebook (#…
ConradJohnston Feb 5, 2026
51e3744
Limit pyscf version to <2.12.1 for ARM/Python 3.14 compatibility (#355)
ConradJohnston Feb 5, 2026
e2b7bb9
Prevent oscillations during ASCI refinement (#359)
MarcoEckhoff Feb 10, 2026
5a41a7f
Add cholesky decomposition for ao2mo (#360)
mmoerchen Feb 10, 2026
1f1a923
Add arXiv paper citation (#356)
ConradJohnston Feb 11, 2026
1c80495
Raise MACIS sCI active-orbital limit from 127 to 255 (#362)
ConradJohnston Feb 13, 2026
e74d70c
Add Qdrift and partial scheme (#354)
nabbelbabbel Feb 17, 2026
ce2a791
Centralize version in single VERSION file (#353)
ConradJohnston Feb 19, 2026
bf8ce1b
Release Pipeline Hardening (#374)
v-georgen Feb 20, 2026
57b2ef9
S1 entropies and mutual information in MACIS (#358)
mmoerchen Feb 20, 2026
c13f6a0
Add check for unrestricted orbitals in MACIS calculators (#369)
mmoerchen Feb 23, 2026
0806acb
Add DIIS ROHF (#361)
Feb 24, 2026
f756ca5
Update trial wavefunction generation in sample script to use pmc calc…
RushiGong Feb 24, 2026
f470bf5
Add CI coefficients for CC/MP2 (#226)
nabbelbabbel Feb 24, 2026
e94c083
Add Path wrappers to Wavefunction Cpp bindings (#378)
nabbelbabbel Feb 25, 2026
c8ae754
Add accuracy-aware Trotter parameterization with unified commutator i…
Copilot Feb 26, 2026
e9f37e0
fixed vvhv bug by reimplementing proto_hv construction (#367)
Feb 27, 2026
3d1d436
Add `qdk-chemistry-data` companion repo references (#380)
ConradJohnston Feb 27, 2026
8783fda
Add Model Hamiltonians (#373)
mmoerchen Mar 2, 2026
557e28a
Remove year from LICENSE.txt (#387)
wavefunction91 Mar 3, 2026
e26ebd1
Replacing proto hv canonicalization by proper one-shot localization (…
Mar 5, 2026
d2888c1
Implement Q# circuit generation (#363)
RushiGong Mar 5, 2026
d2fdc1f
Internal Debug Symbol Publishing (#393)
v-georgen Mar 10, 2026
84d85a7
Add logging and stability checks to Cholesky decomp (#399)
mmoerchen Mar 12, 2026
f9b7e17
Fix serialization in time evolution container (#394)
nabbelbabbel Mar 13, 2026
18d0dea
Initial OpenFermion Plugin and Introduction of "Symmetries" Data Clas…
wavefunction91 Mar 16, 2026
748957e
2nd order Trotter and Corresponding Error Bounds (#384)
Mar 17, 2026
0b48ab7
Documentation Improvements + Python Installation QoL (#402)
wavefunction91 Mar 17, 2026
832835b
Add Ising and Heisenberg Hamiltonians (#401)
mmoerchen Mar 19, 2026
2ed7e67
Make ERI threshold configurable (#403)
mmoerchen Mar 19, 2026
f8d7d44
Fix Active space MP2 orbital energies (#404)
rainli323 Mar 19, 2026
d9512cf
Add dimension check for inactive Fock when constructing Hamiltonian (…
rainli323 Mar 19, 2026
aebc932
Telemetry Sanitization (#398)
wavefunction91 Mar 19, 2026
f4a5ec1
Raise MACIS orbital limit to 2048 (#410)
ConradJohnston Mar 20, 2026
318703c
Add Q# factory data support in Circuit (#397)
RushiGong Mar 24, 2026
6353700
Arbitrary Order Trotter (#389)
Mar 24, 2026
ecd2c47
Fix SCF logging suppression and logger flush policy (#407)
ConradJohnston Mar 24, 2026
2eaba5a
Minor documentation fixes (#413)
lorisercole Mar 25, 2026
91c0a6d
Refactor energy estimator and update qiskit to an optional dependency…
RushiGong Mar 26, 2026
3a0e748
Refactor High-Level Framing in the Documentation (#415)
wavefunction91 Mar 27, 2026
6913b48
PyPI: Development Releases (#414)
v-georgen Mar 27, 2026
aef4b46
Fix: Entropy Threshold for normalized entropies (#423)
mmoerchen Mar 27, 2026
6fa6a8a
Original CI/CD Build Order (#425)
v-georgen Mar 30, 2026
606974e
Update energy estimator to include commuting grouping (#426)
RushiGong Mar 30, 2026
29042c2
Encapsulate `qsharp.estimate` into `Circuit` (#428)
wavefunction91 Apr 2, 2026
050128a
CI/CD hardening (#424)
nabbelbabbel Apr 2, 2026
bf554f9
Model Hamiltonian Docs (#411)
mmoerchen Apr 2, 2026
290705e
Version 1.1 (#422)
wavefunction91 Apr 3, 2026
5df5f42
Support newer PyQIR versions (#436)
swernli Apr 7, 2026
fef12b7
Fix bug in ScfSolver for ROHF stability check (#433)
Apr 15, 2026
24c0aea
Store Cholesky MO integrals and save them in serialization (#440)
rainli323 Apr 15, 2026
372656f
Remove _to_fcidump_file method from Hamiltonian (#445)
nabbelbabbel Apr 17, 2026
095aaa4
Fix int32 overflow in two-body integral and RDM indexing (#439)
ConradJohnston Apr 17, 2026
43d8fc7
Add qubit loss support in QuantumErrorProfile and noise config suppor…
RushiGong Apr 21, 2026
f5434e2
Add tolerance configration to PySCF AVAS module (#442)
wavefunction91 Apr 27, 2026
6e3d611
Bugfix: Add ECP Contributions (#447)
wavefunction91 Apr 27, 2026
27e0f3a
Add dense solver path for MACIS CAS (#443)
wavefunction91 Apr 27, 2026
bf58de7
Bump dev version to 2.0.0 (#458)
wavefunction91 Apr 27, 2026
adf012b
Algorithm nesting update (#455)
nabbelbabbel Apr 28, 2026
84ad809
Nightly rebuilds of Ubuntu 24.04 image use for runner pools (#460)
priyanshu6246 May 1, 2026
93c587e
Generalize `TimeEvolutionUnitary` and related builders to `Unitary` (…
YingrongChen May 4, 2026
a3ed603
Fix conflict between Orbital instance and the custom basis (#469)
May 8, 2026
d5e916d
Add Lattice Edge Coloring and Subsequent Trotter Optimizations (#467)
wavefunction91 May 8, 2026
8a70207
Fix Slow Tests (#472)
wavefunction91 May 12, 2026
33039d3
Include double-d-shell orbitals in valence space selection (#451)
ConradJohnston May 12, 2026
52a1bdc
Migrating to HB120v3 + Switch to Ubuntu nightly image (#481)
priyanshu6246 May 15, 2026
8424c88
Fix python-wheels ADO pipeline to use internal artifact feed (#476)
lorisercole May 18, 2026
833268f
Adding time-dependent Hamiltonian evolution (#431)
May 22, 2026
e447a6a
Support qdk 1.29 API migrations (#493)
RushiGong May 26, 2026
618a34f
Replace Pyenv with Anaconda / ms-ensureconda in pip-wheels CI (#487)
wavefunction91 May 27, 2026
24a3972
Update CODEOWNERS to include @RushiGong (#494)
wavefunction91 May 27, 2026
43b9c55
Fix bug in stability checker (#491)
May 27, 2026
ef5d260
print available options for factory settings (#496)
rainli323 May 29, 2026
217da28
Refactor + Optimize Fermion-to-Qubit Infrastructure with MajoranaMapp…
wavefunction91 Jun 1, 2026
fa72c2c
Docs: Python Structure constructor wrong units (#501)
eimrek Jun 2, 2026
c67ad17
Enable slow CI test runs and fix identity-only energy-estimator workf…
Copilot Jun 3, 2026
27c4c6c
CI/CG: switch to ms-ensureconda everywhere, fix CVE-flagged transitiv…
lorisercole Jun 3, 2026
0be20b0
Fix requirement.txt for Py3.10 compatibility + slow test (#504)
lorisercole Jun 5, 2026
3efb205
Separate QPE circuit builder with simulator (#471)
YingrongChen Jun 5, 2026
80633d0
Add SymmetryBlockedTensor (#497)
wavefunction91 Jun 7, 2026
a56002f
Add target_accuracy/Campbell-bound auto-N to qDRIFT builder (#503)
feisuxiaozhu Jun 8, 2026
6f2ea4a
Add deterministic content hashing and local caching for algorithms (#…
nabbelbabbel Jun 11, 2026
1ea203b
fix 2RDM spin component order to `(aaaa, aabb, bbbb)` (#499)
eimrek Jun 12, 2026
51a43b7
draft with exachem ducc integration and reference ducc implementation
Jun 12, 2026
58f0d1d
draft with exachem ducc integration and reference ducc implementation
Jun 12, 2026
8048acd
added up-to-doubly projection
Jun 12, 2026
0693c96
added up-to-doubly projection
Jun 12, 2026
70d8736
Temporarily disable PR coverage comment to unblock hackathon PRs (#531)
windowtothewest Jun 14, 2026
5161fa0
Flatten Wavefunction Containers and Introduce Sector Lookup (#523)
wavefunction91 Jun 16, 2026
f520909
Specialized QubitMapper paths for sparse/factorized Hamiltonians (#47…
luffy-orf Jun 17, 2026
af6e587
Add qrev3 resource estimation in example notebook (#524)
YingrongChen Jun 18, 2026
5177fb2
GH action to package examples zip with release (#537)
eimrek Jun 19, 2026
5b79c52
Add qdk standard QPE circuit builder (#511)
RushiGong Jun 19, 2026
ef6c10c
Verstraete-Cirac mapping (#505)
nirajvenkat Jun 22, 2026
b053297
BCH order 0
Jun 22, 2026
a251a27
BCH order 0
Jun 22, 2026
03e0981
added reference ducc
Jun 22, 2026
5590fc2
added reference ducc
Jun 22, 2026
77fd910
Zassenhaus time evolution `HamiltonianUnitaryBuilder` (#526)
nirajvenkat Jun 24, 2026
cb55f8e
Docs: switch default example tab from C++ to Python (#546)
eimrek Jun 24, 2026
83ba2c6
Add Hadamard test algorithm (#405)
Jun 25, 2026
783d546
Optimize ASCI workflow (#464)
Jun 25, 2026
e2502cf
Add block encoding algorithm (#468)
YingrongChen Jun 26, 2026
4040dee
Add Windows build support with MSVC/clang-cl and vcpkg (#450)
lorisercole Jun 26, 2026
5311e06
Temporarily disable Py3.10 in CI/CD (#538)
YingrongChen Jun 27, 2026
7c46fb3
CI/CD improvements (#547)
lorisercole Jun 27, 2026
55a42a7
Add MO visualization widget's occupations and entropies to `qpe_stret…
Jun 30, 2026
cb67d0d
Add ROHF GDM (#453)
BoqinZhang Jul 1, 2026
7e592a8
Docs: replace xyz files with xyz strings (#545)
eimrek Jul 1, 2026
af9ba3f
Adding `EulerEvolutionCircuitBuilder`, refactoring `EulerIntegrator`,…
Jul 1, 2026
0e50366
Add natural orbital localizer (#456)
mmoerchen Jul 1, 2026
99830d7
Add Windows CI/CD (#552)
wavefunction91 Jul 2, 2026
e516f02
Update EsrpRelease task to v12 with required PyPI inputs (#557)
lorisercole Jul 2, 2026
265d640
Merge remote-tracking branch 'origin/main' into feature/agamshayit/du…
Jul 8, 2026
7fe14d5
Merge remote-tracking branch 'origin/main' into feature/agamshayit/du…
Jul 8, 2026
cf773cc
Merge origin/main into feature/agamshayit/ducc_sequant
Jul 10, 2026
6a2a671
Merge remote-tracking branch 'origin/feature/agamshayit/ducc_sequant'…
Jul 10, 2026
76b6b8d
bigfix basis mapping to exachem
Jul 10, 2026
5d9ec67
added test file
Jul 10, 2026
dbf6a82
added comments to ducc wicked file
Jul 10, 2026
ff6ab29
started spin-traced ducc
Jul 10, 2026
3b770e1
WIP: spin-integrated DUCC (wicked_ducc_si) - level 0 works, levels 1,…
Jul 11, 2026
a344833
spin-blocked ducc
Jul 11, 2026
7472cd9
active-space only assembly
Jul 11, 2026
d4e4d23
4-space implemetation
Jul 11, 2026
ec4f002
skippin inactive blocks and 0 Ts in 4-space
Jul 11, 2026
803d917
started ambit implementation
agamshayit-ms Jul 17, 2026
9db5d3b
Feed exachem the basis set file used by qdk-chemistry, eliminating AO…
agamshayit-ms Jul 21, 2026
6d14bde
add ducc level 3, add assemble_active_hamiltonian to handle orbital m…
agamshayit-ms Jul 21, 2026
5bbfc76
started adding support for open-shell
agamshayit-ms Jul 24, 2026
eaaf75f
open-shell with ambit
agamshayit-ms Jul 24, 2026
88a5c6e
cleanup
agamshayit-ms Jul 24, 2026
144f653
cleanup
agamshayit-ms Jul 24, 2026
2affadd
openfermion 2e-ints 8-fold symmetry bugfix
agamshayit-ms Jul 28, 2026
99e841b
plumbing, sequant+btas in cmake
agamshayit-ms Jul 30, 2026
7b0ac1a
working end-to-end sequant+btas SO implementation
agamshayit-ms Jul 31, 2026
79d851f
ducc with BTAS codegen
agamshayit-ms Jul 31, 2026
d64d8c1
Merge remote-tracking branch 'origin/main' into feature/agamshayit/du…
agamshayit-ms Aug 1, 2026
c9c3ec4
changed test API
agamshayit-ms Aug 1, 2026
04c3e00
fixing BTAS cmake
agamshayit-ms Aug 3, 2026
3f38b8e
better fix for BTAS cmake
agamshayit-ms Aug 3, 2026
9350b59
Merge branch 'main' into feature/agamshayit/ducc_prototype
agamshayit-ms Aug 3, 2026
a9e3f2c
fixing Windows build
agamshayit-ms Aug 3, 2026
fd8dfec
fixing Windows build
agamshayit-ms Aug 4, 2026
ebedd21
Merge branch 'main' into feature/agamshayit/ducc_prototype
agamshayit-ms Aug 4, 2026
25093e9
fixing Windows build
agamshayit-ms Aug 4, 2026
561d345
Fixing Windows build
agamshayit-ms Aug 4, 2026
d9aff5a
retired depricated functions
agamshayit-ms Aug 4, 2026
0c368c9
adding boost random to vcpkg
agamshayit-ms Aug 4, 2026
928baea
fixing Windows build
agamshayit-ms Aug 4, 2026
b4bee38
fixing Windows build
agamshayit-ms Aug 4, 2026
b803343
add hardcoded reference values to test
agamshayit-ms Aug 4, 2026
c12b707
fixing Windows build
agamshayit-ms Aug 4, 2026
14becc3
Merge branch 'main' into feature/agamshayit/ducc_prototype
agamshayit-ms Aug 4, 2026
ba9bd5f
enabling windows C++ tests
agamshayit-ms Aug 5, 2026
65dad41
spin-blocked ducc implementation
agamshayit-ms Aug 5, 2026
7ec90cb
using sequants native spin-blocking
agamshayit-ms Aug 6, 2026
d4077ef
Merge branch 'main' into feature/agamshayit/ducc_prototype
agamshayit-ms Aug 7, 2026
3e85ff0
fixing default effective hamiltonian algorithm
agamshayit-ms Aug 7, 2026
7a345d9
copilot comments
agamshayit-ms Aug 7, 2026
b527488
Potential fix for pull request finding
agamshayit-ms Aug 7, 2026
0f6619b
pre-commit
agamshayit-ms Aug 7, 2026
def8cc1
fixed test message
agamshayit-ms Aug 7, 2026
5c34704
Merge branch 'main' into feature/agamshayit/ducc_prototype
agamshayit-ms Aug 7, 2026
f1c14d6
Merge origin/main into feature/agamshayit/ducc_prototype
agamshayit-ms Aug 12, 2026
63b0a69
fixing docs
agamshayit-ms Aug 13, 2026
c37d7ac
Merge branch 'main' into feature/agamshayit/ducc_prototype
agamshayit-ms Aug 13, 2026
0c6bede
cleanup
agamshayit-ms Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .devcontainer/scripts/install_cpp_dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,11 @@ if [[ -z "$GAUXC_COMMIT" ]]; then
echo "Error: Could not find gauxc commit hash in $CGMANIFEST"
exit 1
fi
BTAS_COMMIT=$(get_commit_hash "$CGMANIFEST" "BTAS/btas")
if [[ -z "$BTAS_COMMIT" ]]; then
echo "Error: Could not find BTAS commit hash in $CGMANIFEST"
exit 1
fi

# Read versions from macis cgmanifest
BLASPP_COMMIT=$(get_commit_hash "$MACIS_CGMANIFEST" "icl-utk-edu/blaspp")
Expand All @@ -148,6 +153,7 @@ echo " lapackpp: $LAPACKPP_COMMIT"
echo " libecpint: ${LIBECPINT_TAG:-$LIBECPINT_COMMIT}"
echo " libint: $LIBINT_URL"
echo " gauxc: $GAUXC_COMMIT"
echo " btas: $BTAS_COMMIT"

mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
Expand Down Expand Up @@ -203,6 +209,26 @@ make install
cd "$BUILD_DIR"
rm -rf lapackpp

# Install BTAS
# Must follow blaspp/lapackpp and share their prefix: BTAS installs the
# `blaspp_headers` marker beside them, where its installed config looks for it.
echo "=== Installing BTAS ==="
git clone https://github.com/BTAS/btas.git btas
cd btas
git checkout "$BTAS_COMMIT"
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
-DCMAKE_INSTALL_PREFIX="$INSTALL_PREFIX" \
-DCMAKE_PREFIX_PATH="$INSTALL_PREFIX" \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DBUILD_TESTING=OFF \
-DBTAS_BUILD_UNITTEST=OFF \
-DBUILD_SHARED_LIBS="$BUILD_SHARED_LIBS"
make install
cd "$BUILD_DIR"
rm -rf btas

# Install libint2
echo "=== Installing libint2 ==="
LIBINT_TARBALL=$(basename "$LIBINT_URL")
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/build-and-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -625,7 +625,10 @@ jobs:
uses: actions/cache/restore@v5
with:
path: vcpkg_installed
key: windows-vcpkg-${{ env.VCPKG_TRIPLET }}-vs${{ steps.env.outputs.toolset }}-${{ hashFiles('vcpkg.json', 'vcpkg-configuration.json', 'vcpkg-overlay/**', '.pipelines/install-scripts/install-cpp-deps-windows.ps1') }}
# Keyed only on what determines the vcpkg package set. The install script is
# deliberately excluded: editing its CMake-dependency section would otherwise
# force a cold vcpkg rebuild, which re-exposes flaky upstream downloads.
key: windows-vcpkg-${{ env.VCPKG_TRIPLET }}-vs${{ steps.env.outputs.toolset }}-${{ hashFiles('vcpkg.json', 'vcpkg-configuration.json', 'vcpkg-overlay/**') }}

- name: Restore deps-install cache
id: cache-deps
Expand All @@ -652,7 +655,7 @@ jobs:
uses: actions/cache/save@v5
with:
path: vcpkg_installed
key: windows-vcpkg-${{ env.VCPKG_TRIPLET }}-vs${{ steps.env.outputs.toolset }}-${{ hashFiles('vcpkg.json', 'vcpkg-configuration.json', 'vcpkg-overlay/**', '.pipelines/install-scripts/install-cpp-deps-windows.ps1') }}
key: windows-vcpkg-${{ env.VCPKG_TRIPLET }}-vs${{ steps.env.outputs.toolset }}-${{ hashFiles('vcpkg.json', 'vcpkg-configuration.json', 'vcpkg-overlay/**') }}

- name: Save deps-install cache
if: steps.cache-deps.outputs.cache-hit != 'true'
Expand Down
19 changes: 19 additions & 0 deletions cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,22 @@ else()
endif()
endif()

# BTAS for dense tensor contraction in DUCC; must follow MACIS to reuse its BLAS and blaspp/lapackpp.
find_package(BTAS QUIET)
if(NOT BTAS_FOUND)
include(FetchContent)
FetchContent_Declare(BTAS
GIT_REPOSITORY https://github.com/BTAS/btas.git
GIT_TAG 287b145ead818a0332f2b7ce0b7375a83d328bae
)
# BTAS's linalg kit force-writes the BUILD_TESTING it sees back into the cache.
set(_qdk_build_testing "${BUILD_TESTING}")
set(BUILD_TESTING OFF CACHE BOOL "Build the testing tree." FORCE)
FetchContent_MakeAvailable(BTAS)
set(BUILD_TESTING "${_qdk_build_testing}" CACHE BOOL "Build the testing tree." FORCE)
add_library(BTAS::BTAS ALIAS BTAS)
endif()
Comment thread
agamshayit-ms marked this conversation as resolved.

# Enable CUDA for GPU bindings in QDK Chemistry
if(QDK_CHEMISTRY_ENABLE_GPU)
enable_language(CUDA)
Expand Down Expand Up @@ -167,6 +183,9 @@ target_link_libraries(chemistry PUBLIC
macis::macis
)

# Header-only and absent from public headers, so keep BTAS out of the export.
target_link_libraries(chemistry PRIVATE $<BUILD_INTERFACE:BTAS::BTAS>)
Comment thread
agamshayit-ms marked this conversation as resolved.

# Conditionally link OpenMP
if(QDK_ENABLE_OPENMP)
if(TARGET OpenMP::OpenMP_CXX)
Expand Down
3 changes: 3 additions & 0 deletions cpp/cmake/third_party.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,9 @@ handle_dependency(gauxc
REQUIRED
)

# Boost for BTAS
find_package(Boost CONFIG REQUIRED)

# Restore previous settings
set(CMAKE_WARN_DEPRECATED ${_old_warn_deprecated} CACHE BOOL "" FORCE)
set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS ${_old_suppress_dev} CACHE BOOL "" FORCE)
1 change: 1 addition & 0 deletions cpp/include/qdk/chemistry.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include <qdk/chemistry/algorithms/active_space.hpp>
#include <qdk/chemistry/algorithms/dynamical_correlation_calculator.hpp>
#include <qdk/chemistry/algorithms/effective_hamiltonian.hpp>
#include <qdk/chemistry/algorithms/geometry_optimization.hpp>
#include <qdk/chemistry/algorithms/hamiltonian.hpp>
#include <qdk/chemistry/algorithms/localization.hpp>
Expand Down
117 changes: 117 additions & 0 deletions cpp/include/qdk/chemistry/algorithms/effective_hamiltonian.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See LICENSE.txt in the project root for
// license information.

#pragma once

#include <memory>
#include <qdk/chemistry/algorithms/algorithm.hpp>
#include <qdk/chemistry/data/hamiltonian.hpp>
#include <qdk/chemistry/data/symmetry/symmetry_blocked_index_set.hpp>
#include <qdk/chemistry/data/wavefunction.hpp>
#include <string>

namespace qdk::chemistry::algorithms {

/**
* @class EffectiveHamiltonianConstructor
* @brief Abstract base for constructing an effective Hamiltonian.
*
* Given a reference wavefunction and an input Hamiltonian, a concrete
* implementation constructs an effective Hamiltonian in an explicitly
* specified target P-space.
*
* Typical usage:
* @code
* auto constructor =
* EffectiveHamiltonianConstructorFactory::create("algorithm_name");
* auto effective_hamiltonian =
* constructor->run(reference, hamiltonian, p_indices);
* @endcode
*
* @see EffectiveHamiltonianConstructorFactory for creating instances
* @see data::Wavefunction for the reference wavefunction input
* @see data::Hamiltonian for the input and output Hamiltonians
* @see data::SymmetryBlockedIndexSet for the target P-space indices
*/
class EffectiveHamiltonianConstructor
: public Algorithm<EffectiveHamiltonianConstructor,
std::shared_ptr<data::Hamiltonian>,
std::shared_ptr<data::Wavefunction>,
std::shared_ptr<data::Hamiltonian>,
std::shared_ptr<const data::SymmetryBlockedIndexSet>> {
public:
/**
* @brief Default constructor.
*/
EffectiveHamiltonianConstructor() = default;

/**
* @brief Virtual destructor.
*/
virtual ~EffectiveHamiltonianConstructor() = default;

/**
* @brief Construct the effective Hamiltonian acting on the target space P.
*
* \cond DOXYGEN_SUPRESS (Doxygen warning suppression for argument packs)
Comment thread
agamshayit-ms marked this conversation as resolved.
* @param reference Reference wavefunction providing the reference state.
* @param hamiltonian Input Hamiltonian built over the whole window W = P u Q.
* @param p_indices The target space P (indices into the window's active
* space W).
* \endcond
* @return The effective Hamiltonian acting on the target space P.
* @throws qdk::chemistry::data::SettingsAreLocked if attempting to modify
* settings after run() is called.
* @note Settings are automatically locked when this method is called and
* cannot be modified during or after execution.
*/
using Algorithm::run;

/**
* @brief Access the algorithm's name.
*/
virtual std::string name() const override = 0;

/**
* @brief Access the algorithm's type name.
*/
std::string type_name() const override {
return "effective_hamiltonian_constructor";
}

protected:
/**
* @brief Implementation of the effective-Hamiltonian construction.
*
* Contains the actual construction logic. It is automatically called by
* run() after settings have been locked, and must be implemented by derived
* classes.
*
* @param reference Reference wavefunction providing the reference state.
* @param hamiltonian Input Hamiltonian built over the whole window W = P u Q.
* @param p_indices The target space P (indices into the window's active
* space W).
* @return The effective Hamiltonian acting on the target space P.
*/
virtual std::shared_ptr<data::Hamiltonian> _run_impl(
std::shared_ptr<data::Wavefunction> reference,
std::shared_ptr<data::Hamiltonian> hamiltonian,
std::shared_ptr<const data::SymmetryBlockedIndexSet> p_indices)
const override = 0;
};

/**
* @brief Factory for effective-Hamiltonian constructor instances.
*/
struct EffectiveHamiltonianConstructorFactory
: public AlgorithmFactory<EffectiveHamiltonianConstructor,
EffectiveHamiltonianConstructorFactory> {
static std::string algorithm_type_name() {
return "effective_hamiltonian_constructor";
}
static void register_default_instances();
static std::string default_algorithm_name() { return "ducc"; }
};

} // namespace qdk::chemistry::algorithms
10 changes: 10 additions & 0 deletions cpp/manifest/qdk-chemistry/cgmanifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,16 @@
},
"developmentDependency": false
},
{
"component": {
"type": "git",
"git": {
"repositoryUrl": "https://github.com/BTAS/btas.git",
"commitHash": "287b145ead818a0332f2b7ce0b7375a83d328bae"
}
},
"developmentDependency": false
},
{
"component": {
"type": "git",
Expand Down
1 change: 1 addition & 0 deletions cpp/src/qdk/chemistry/algorithms/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ target_sources(chemistry PRIVATE
pmc.cpp
qdk_nuclear_derivative.cpp
dynamical_correlation_calculator.cpp
effective_hamiltonian.cpp
geometry_optimization.cpp
scf.cpp
Comment on lines 12 to 16
stability.cpp
Expand Down
2 changes: 2 additions & 0 deletions cpp/src/qdk/chemistry/algorithms/algorithm_defaults.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include <qdk/chemistry/algorithms/active_space.hpp>
#include <qdk/chemistry/algorithms/algorithm_defaults.hpp>
#include <qdk/chemistry/algorithms/dynamical_correlation_calculator.hpp>
#include <qdk/chemistry/algorithms/effective_hamiltonian.hpp>
#include <qdk/chemistry/algorithms/geometry_optimization.hpp>
#include <qdk/chemistry/algorithms/hamiltonian.hpp>
#include <qdk/chemistry/algorithms/localization.hpp>
Expand Down Expand Up @@ -42,6 +43,7 @@ std::shared_ptr<data::Settings> resolve_algorithm_defaults(
REGISTER_FACTORY_SETTINGS_INIT(MultiConfigurationCalculatorFactory)
REGISTER_FACTORY_SETTINGS_INIT(ProjectedMultiConfigurationCalculatorFactory)
REGISTER_FACTORY_SETTINGS_INIT(DynamicalCorrelationCalculatorFactory)
REGISTER_FACTORY_SETTINGS_INIT(EffectiveHamiltonianConstructorFactory)
REGISTER_FACTORY_SETTINGS_INIT(GeometryOptimizerFactory)
REGISTER_FACTORY_SETTINGS_INIT(MultiConfigurationScfFactory)
REGISTER_FACTORY_SETTINGS_INIT(NuclearDerivativeCalculatorFactory)
Expand Down
28 changes: 28 additions & 0 deletions cpp/src/qdk/chemistry/algorithms/effective_hamiltonian.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See LICENSE.txt in the project root for
// license information.

#include <qdk/chemistry/algorithms/effective_hamiltonian.hpp>
#include <qdk/chemistry/utils/logger.hpp>

#include "microsoft/ducc/ducc.hpp"

namespace qdk::chemistry::algorithms {

/**
* @brief Factory function to create the BTAS DUCC solver.
*/
std::unique_ptr<EffectiveHamiltonianConstructor> make_ducc_solver() {
QDK_LOG_TRACE_ENTERING();
return std::make_unique<qdk::chemistry::algorithms::microsoft::DuccSolver>();
}

/**
* @brief Register default effective-Hamiltonian implementations.
*/
void EffectiveHamiltonianConstructorFactory::register_default_instances() {
QDK_LOG_TRACE_ENTERING();
EffectiveHamiltonianConstructorFactory::register_instance(make_ducc_solver);
}

} // namespace qdk::chemistry::algorithms
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ target_sources(chemistry PRIVATE
localization/natural_orbitals.cpp
localization/pipek_mezey.cpp
localization/vvhv.cpp
ducc/ducc.cpp
hamiltonian.cpp
cholesky_hamiltonian.cpp
macis_asci.cpp
Expand Down
Loading
Loading