2.1.0
The second release of SeQuant2 is its first "feature-complete" release. It includes the following new essential features:
feature-complete CC equation engine:
ground, excited, Fock-space, linear response
traditional and unitary
conventional and CSV (cluster-specific virtuals, i.e. OSV, PNO, etc.)
implicit-spin ("spin-orbital" or spinor), closed-shell (semibiorthogonal), open-shell
feature-complete tensor network canonicalizer (#349)
interpretation ("eval") of conventional, CSV, and noncovariant expressions
code generation ("export") for several backends, including Python (NumPy/Torch) and Julia (#220)
user-defined index spaces (#187)
user-defined custom operators (#456)
revamped I/O:
new TeX-like text format for encoding expressions
unified serialization/deseralization of expressions (#467)
modular organization (#477)
What's Changed
Documentation
Other Changes
- remove SeQuant's FindTBB (very very legacy at this point) and adapt u… by @bimalgaudel in #74
- merge conner_tensorwick by @bimalgaudel in #75
- [cmake] user can define the desired C++ standard … by @evaleev in #80
- Python bindings by @evaleev in #81
- Evaleev/tests/tensor network by @evaleev in #82
- Evaleev/feature/misc by @evaleev in #83
- Evaleev/refactor/cceqs by @evaleev in #84
- move Index::ascii_label: index.hpp -> index.cpp by @evaleev in #85
- [cmake] use CMAKE_{C,CXX}COMPILER_LAUNCHER instead of RULE_LAUNCH{COMPILE,LINK} by @evaleev in #86
- TA interpreter uses lazy cleanup instead of fence by @evaleev in #87
- Implements tot evaluation and evaluation order improvements by @bimalgaudel in #76
- Refactor evaluation code. by @bimalgaudel in #88
- Refactor mbpt context by @bimalgaudel in #89
- introduced proper ExprPtr by @evaleev in #91
- Constant implementation uses boost::rational by @evaleev in #93
- [test]: Update Catch to v2.13.9 by @Krzmbrzl in #95
mbpt::Operatortrack #s of Ops by @evaleev in #98- CC lambda equations by @evaleev in #90
- Evaleev/fix/csv by @evaleev in #104
- {Sum,Product}::{append,prepend} need to clone the arguments by @evaleev in #103
- Remove clone_packed. by @bimalgaudel in #105
- Use multiprecision for
Constantby @ajay-mk in #106 - use multiprecision for
sequant::factorialby @ajay-mk in #109 - Address issue #110. by @bimalgaudel in #111
- Single-term optimization support for fully contracted tensor networks. by @bimalgaudel in #116
- gaudel/generalized evaluation by @bimalgaudel in #117
- introduce support for correlated vacuum by @evaleev in #112
- [mbpt] F() takes an optional argument ... by @evaleev in #119
- robust(er) spintrace + spin-free WickTheorem by @evaleev in #126
- Generate a log of evaluation when requested. by @bimalgaudel in #125
- complete mbpt::{s,m}r::op::vac_av by @evaleev in #130
- Unicode characters (non-space) can appear as tensor label while parsing string into sequant expression. by @bimalgaudel in #129
- support evaluation of expressions with runtime variables appearing as leafs by @evaleev in #131
- Support asymptotic cost computation with user provided cost function. by @bimalgaudel in #133
- Reorder terms for better cache utilization by @bimalgaudel in #147
- Add a function to estimate the peak memory required for intermediate by @bimalgaudel in #148
- Function for similarity transformation and Refactoring by @ajay-mk in #139
- Update dependencies by @bimalgaudel in #150
- Rename Lambda() functions to Λ() by @ajay-mk in #151
- Coupled Cluster Response by @ajay-mk in #141
- Fix complex ctor ignoring imaginary part by @Krzmbrzl in #137
- Prevent optimize::reorder from swallowing terms by @Krzmbrzl in #154
- Replace expression parser by @Krzmbrzl in #146
- Support energy expressions to be spintraced by @Krzmbrzl in #136
- Conner/feature/fast e3 decomp by @cmasteran1 in #144
- add complete_inactive_unoccupied space. by @cmasteran1 in #140
- fix unity builds by @evaleev in #156
- Fix sparse structure loss during evaluation by @ajay-mk in #158
- Bugfix: MPQC Doesn't compile by @ajay-mk in #159
- Feature: Distinguish adjoints with labels by @ajay-mk in #157
- resolve compilation issues in ast.hpp due to cyclic dep by @evaleev in #163
- misc cleanup by @evaleev in #164
- MBPT Misc Changes by @ajay-mk in #166
- UCC by @evaleev in #168
- [cmake] repeg pybind11 and TA by @evaleev in #169
- find python before building pybind11 by @evaleev in #170
- modularized Boost v2 by @evaleev in #176
- bump Boost requirements to 1.81 by @evaleev in #182
- Fix hash_value template resolution by @Krzmbrzl in #180
- cleanup hashing-dependent unit test results since boost <1.81 is not supported any longer by @evaleev in #184
- support for spintracing expressions with protoindices by @evaleev in #186
- Improve missing space instance error by @Krzmbrzl in #188
- Revamp and fix enable-ifs in expr.cpp by @Krzmbrzl in #138
- Streamline includes by @Krzmbrzl in #142
- Implements evaluations involving tensor-of-tensor using TiledArray by @bimalgaudel in #173
- fix mr qn
combinelogic by @evaleev in #190 - [ci] Fix macOS CI by @ajay-mk in #193
- inlclude boost numeric cast header. by @bimalgaudel in #195
- Add libPerm FetchContent by @Krzmbrzl in #191
- find or fetch catch2, use slim headers by @evaleev in #197
- CI: Add formatting check by @Krzmbrzl in #194
- Fix catch2 fetching by @Krzmbrzl in #198
- Implement ITF translator by @Krzmbrzl in #160
- Conner local/runtime_IndexSpace by @cmasteran1 in #187
- Doxygen cleanup by @evaleev in #199
- build fixes for c++17 by @evaleev in #201
- Bugfix in perturbed T and Λ ops by @ajay-mk in #205
- README: adjust the description of SeQuant by @evaleev in #206
- Use
IndexSpaceRegistry::approximate_sizein optimization by @bimalgaudel in #203 - Empty string deparses to nullptr-like
ExprPtr. by @bimalgaudel in #208 - Fix clang-format by @ajay-mk in #210
constexprreserved bitset and null bitset. by @bimalgaudel in #209- Factor out the gcd of the scalars when two
Productsummands are fused. by @bimalgaudel in #211 - Parse improvements by @Krzmbrzl in #214
- Change tracked libPerm version to v1.5.0 by @Krzmbrzl in #217
- Generalize spintracing functions by @Krzmbrzl in #219
- Use a default-constructed IndexSpaceRegistry instead of nullptr by @Krzmbrzl in #221
- Miscellaneous improvements by @Krzmbrzl in #218
- Improve clang format script by @Krzmbrzl in #215
Singletonis thread-safe by @evaleev in #222- Various fixes in clang-format.sh by @Krzmbrzl in #223
- Singleton::instance() returns ref by @evaleev in #225
- introduced strong types by @evaleev in #228
- EOM-CC by @ajay-mk in #174
- subspaces constructed with ignore spin on lead to faulty index compar… by @cmasteran1 in #224
- Tensors with proto-indices supported for hashing in a leaf node. by @bimalgaudel in #227
- [CI] Cancel duplicate workflows by @ajay-mk in #232
- Introduce a general operator by @ajay-mk in #229
- Support evaluation of non-particle-conserving tensors by @ajay-mk in #231
- Sphinx Documentation by @ajay-mk in #230
- [doc] Only update docs from master branch by @ajay-mk in #234
- Used for successful PNO-CCSD calculations by @bimalgaudel in #204
- Fix badges in README by @ajay-mk in #235
- Fix projection with zero ranks by @ajay-mk in #236
{rdm,antisymmetrize}: split decl and impl by @evaleev in #239- [docs] Fixes in README by @ajay-mk in #240
- Generalize printing of antisymm Tensors by @ajay-mk in #242
- support for non-vector-space (aux) modes in tensorials by @evaleev in #243
- Log evaluation timings beside the expressions by @bimalgaudel in #246
- Bugfix in
evaluate()by @ajay-mk in #249 - Get rid of grand_index_list_ member variable by @Krzmbrzl in #252
- Test improvements by @Krzmbrzl in #253
- Implement Wick benchmark by @Krzmbrzl in #254
- More benchmarks by @Krzmbrzl in #256
TN::canonicalize_slotsproduces phase associated with reordering antisymmetric bra/ket slots bundles by @evaleev in #258- Mention Köhn group as second SeQuant dev center by @Krzmbrzl in #255
- Misc Changes related to
mbpt::opby @ajay-mk in #259 - Make TensorBlockIndexComparer compare tensor blocks (slots) again by @Krzmbrzl in #251
- Robuster common sub-expression elimination by @bimalgaudel in #257
- EOM-EA/IP by @ajay-mk in #238
- CSV trans logic and logger flush. by @bimalgaudel in #260
- Log terms being evaluated. by @bimalgaudel in #261
- bliss graph produced with texlabels for tensors by @evaleev in #262
- named args make bliss graph by @evaleev in #263
- Documentation Revamp by @ajay-mk in #266
- Refactor deprecated use of shared_ptr atomic access API by @Krzmbrzl in #269
- Improve test setup by @Krzmbrzl in #270
- Explicitly enable building tests on CI by @Krzmbrzl in #273
- support for AO spaces by @evaleev in #264
- reorg Logger's eval fields by @evaleev in #277
- disable eval tracing by default even if configured with
SEQUANT_EVAL_TRACE=ONby @evaleev in #278 - Put CSV-transformation tensors after the full-basis tensors. by @bimalgaudel in #279
- fixups for CSV integral transform by @evaleev in #281
- Switch over to using TensorNetworkV2 by @Krzmbrzl in #268
- More doc improvements by @Krzmbrzl in #271
- MR support by @Krzmbrzl in #267
- Cmake fix export by @Krzmbrzl in #283
- evaluation tracing includes size of TA tensors by @evaleev in #284
- Restore docs sections by @ajay-mk in #289
- Fix scalar * tensor binarizing to tree with tensor as root by @Krzmbrzl in #286
- Fix bugs in TNv2::canonicalize_slots phase detection by @Krzmbrzl in #293
- Restore more docs by @ajay-mk in #292
- docs: Fixup #292 by @ajay-mk in #294
- Add ext index consistency check to spintrace() by @Krzmbrzl in #282
- Modernize the evaluation code. by @bimalgaudel in #288
- Fix Operator canonicalization related bugs by @ajay-mk in #275
- Improve CC Docs by @ajay-mk in #295
- docs: fix a typo in cc.rst by @ajay-mk in #298
- deparse is cleaner than to_latex as label of Constant by @bimalgaudel in #299
- fix: Handle empty range in
input_to_canonical_parityfunction by @ajay-mk in #300 - Update Dependency Versions by @ajay-mk in #301
TNV2::create_graph: optional labels by @evaleev in #302- Add usage examples for external interface by @Krzmbrzl in #308
- Misc improvements by @Krzmbrzl in #311
- Fix Include Guards by @ajay-mk in #310
- Include cstdlib header and find catch2 before fetching. by @bimalgaudel in #312
- Add CC benchmark by @Krzmbrzl in #313
- Run
/doc/examples/by @ajay-mk in #318 - Drop
find_packagefrom FindOrFetchGoogleBenchmark by @ajay-mk in #319 - faster Index by @evaleev in #315
- introduced
IndexSpace::Attr::reserved(=Index::default_space_attr) by @evaleev in #320 - faster and slimmer space registries by @evaleev in #322
- Fix parenthesization in condition by @Krzmbrzl in #323
- Compute intermediate hashes strictly. by @bimalgaudel in #317
- Update tracked libPerm version by @Krzmbrzl in #324
- Can disable thread-safety of context manipulation by @evaleev in #326
- illustrate TNv1 flaw by @evaleev in #325
Op: can override default ISR when calling {is_pure_qpcreator,is_qpcreator,qpcreator_space,is_pure_qpannihilator,is_qpannihilator,qpannihilator_space} by @evaleev in #327- Fixup 327 by @ajay-mk in #330
- use
boost::container::small_vectorforbliss::{Graph,Digraph}::Vertex::edges*by @evaleev in #332 - TNv1: avoid
Index::full_label()by @evaleev in #333 - TNv2 performance improvements by @Krzmbrzl in #314
- Harden CI by @Krzmbrzl in #328
- Fix wrong vertex determination in TNv2::canonicalize_slots by @Krzmbrzl in #337
- Optimize docs deployment by @ajay-mk in #334
- optimized
Sumcanonicalization by @ABesharat in #305 - locale switch:
en_US.UTF8->C.UTF8by @evaleev in #339 memoizing_hashimprovements by @evaleev in #338- fix "empty" unit tests by @evaleev in #341
- [eval] tensor products are deduced to be asymmetric in all respects by @evaleev in #348
Tensor::static_equalchecks{braket,particle}_symmetryby @evaleev in #346- Tensor::hash_value accounts for braket and particle symmetry by @evaleev in #344
- TNV3 by @evaleev in #349
- [unit] "long" wick tests had wrong reference term counts by @evaleev in #350
- support for cosub braket typesetting by @evaleev in #352
- null
Indexusable in bra and ketTensorslots by @evaleev in #354 - amends #354 by @evaleev in #356
- TNV3: support for
BraKetSymmetryby @evaleev in #357 - fixup TNV3 dot generation flaws by @evaleev in #358
- TNV3: create tex version of aux_ labels by @evaleev in #359
- Undo indices() -> braketaux() renaming by @Krzmbrzl in #360
- Export framework by @Krzmbrzl in #220
- Misc small fixes by @Krzmbrzl in #362
- TNV3: tuneup/cleanup by @evaleev in #364
- Revert "build executables for tests as needed" by @Krzmbrzl in #365
canonicalize: method used for canonicalizing TNs can be controlled by user via param/context by @evaleev in #366- Code maintenance by @Krzmbrzl in #363
- Better error handling by @Krzmbrzl in #367
- Revamp ext interface by @Krzmbrzl in #369
- Remove invalid enums entries by @Krzmbrzl in #370
- Update Python bindings setup by @Krzmbrzl in #368
- Change license to LGPL by @Krzmbrzl in #371
- Improve Biorthogonalization by @ABesharat in #297
- Rename particle symmetry to column symmetry by @Krzmbrzl in #372
- use 64-bit hash to produce bliss graph hashes for users by @evaleev in #373
- TensorBlockCompare benchmark by @Krzmbrzl in #375
IndexSpaceRegistrycleanup + paper example by @evaleev in #376- better support for noncovariant expressions by @evaleev in #377
- fix contractions by @evaleev in #378
- Add validation assertions at runtime for evaluation examples by @bimalgaudel in #382
- fix TN sum canonicalization by @evaleev in #379
- cleanup of
closed_shell_CC_spintraceby @ABesharat in #383 - Get rid of sequant/core/any.hpp by @Krzmbrzl in #385
- Fix dependencies by @Krzmbrzl in #386
- Detailed CC Profiling Options by @ajay-mk in #374
Sum::canonicalize()does not assume perfect hash by @evaleev in #387- better support for noncovariant networks in TN/WT by @evaleev in #388
- spin(trace) code is moved to
mbptnamespace by @evaleev in #389 - WK biorthogonalization: rename "Cleanup" into "NNS Project" by @evaleev in #390
- move all TN versions into
tensor_networksubdir, aliasTensrNetworktoTensorNetworkV3by @evaleev in #394 - Implement substitution/replacement capabilities by @Krzmbrzl in #392
- introduce
flattenby @evaleev in #396 - fixup SEQUANT_UNREACHABLE for safe uses with unscoped if-else clauses by @evaleev in #397
- CI: Hush Warnings and Update Versions by @ajay-mk in #398
WickTheorem: contract and reduce rules handle noncovariance better by @evaleev in #401- WickTheorem::reduce: do not use exceptions to return zero result by @evaleev in #402
- fixup
ISR::valid_intersectionby @evaleev in #404 - Fix Printing of A/S/P Operators by @ajay-mk in #403
- MBPT Utility Functions & Refactor by @ajay-mk in #400
- cleanup
vac_avby @evaleev in #405 - Workaround bug in external interface by @Krzmbrzl in #406
- Fix ext interface by @Krzmbrzl in #407
- Disable maybe-uninitialized warning by @Krzmbrzl in #408
- Custom asserts by @Krzmbrzl in #409
- Misc improvements by @Krzmbrzl in #410
- ResultExpr improvements by @Krzmbrzl in #411
- Yet more misc improvements by @Krzmbrzl in #412
- More
SEQUANT_ASSERTby @ajay-mk in #414 - fixes
Sum(Range)ctor work correctly whenRange={Expr,ExprPtr}by @evaleev in #413 Product(Expr)andProduct(ExprPtr)do the "right" thing by @evaleev in #415- Improved assert message by @Krzmbrzl in #416
- Implement an expression validation function by @Krzmbrzl in #417
- Initialize remaining members of AbstractGraph by @Krzmbrzl in #420
- Fix Git Metadata Fetching by @ajay-mk in #422
- CC examples/integration tests: Print Git revision and number of threads by @ajay-mk in #423
- (more) eager reduction by @evaleev in #424
- Include
.ippfiles inclang-formatcheck by @ajay-mk in #425 - Benchmark Comparison Workflow by @ajay-mk in #331
- Batching Index Support by @ajay-mk in #309
- temporarily revert default canonicalization to complete by @evaleev in #427
- domain/eval -> core/eval by @evaleev in #428
- Fix shell injection vulnerability in test_export_python.cpp by @Copilot in #430
- [example] csv density by @evaleev in #434
- [example]: Triples CSV Density by @ajay-mk in #436
- [export] minimal numpy support by @evaleev in #429
- Tensor hypercontraction by @obackhouse in #433
mbpt::lst: add support for explicit commutators by @ajay-mk in #439- [doc] optionally use doxygen HTML API docs rather than breathe/exhale-generated HTML by @evaleev in #440
- published API docs to be generated by breathe/exhale by @evaleev in #443
- [skip ci] publish docs if dispatched workflow manually by @evaleev in #444
- [dox] revised the logos by @evaleev in #445
- fixup ODR violations in
ast.hppby @evaleev in #448 - CI: Add time limit by @ajay-mk in #447
- Extend overloads for arithmetic operators of ExprPtr by @Krzmbrzl in #450
- Fix external index determination by @Krzmbrzl in #449
- ci: Use CPU PyTorch wheel by @ajay-mk in #453
- Extend overloads for arithmetic operators of
ExprPtrby @ajay-mk in #452 - Only attempt to apply DF tensor to viable tensors by @Krzmbrzl in #454
- Addressing closed-shell spin-tracing issues by @ABesharat in #441
- Update
vac_avfiles by @ajay-mk in #455 - Add manuscript examples to test suite by @ajay-mk in #451
- Document SEQUANT_ASSERT_BEHAVIOR option by @Krzmbrzl in #460
- Fix multiple blocks for same result overwriting each other by @Krzmbrzl in #461
- Deprecate INSTALL.md by @Krzmbrzl in #458
- Revamp handling of Eigen dependency by @Krzmbrzl in #459
SQ/evalbackends reorganization by @evaleev in #465- Azam/feature/hardcoded biorthogonal coefficients by @ABesharat in #457
- amends #457 by @evaleev in #466
- (Anti)symmetrization operators include normalization to ensure idempotency by @ABesharat in #464
- Custom Operator Registry Support by @ajay-mk in #456
- Update actions by @Krzmbrzl in #468
- Revamp label decoration logic in
mbpt::Operatorby @ajay-mk in #469 - remove the redundant NF in srcc by @ABesharat in #470
- Fix integration tests by @Krzmbrzl in #472
- Revise fix for integration tests by @Krzmbrzl in #473
- Handle full contraction in Flops computation by @ajay-mk in #474
- Combine biortho and post-process steps by @ABesharat in #475
- Remove redundant index_list function by @Krzmbrzl in #479
- Azam/feature/move WK-related functions by @ABesharat in #480
- CC: Improved Unitary ansatz support by @ajay-mk in #478
- Finish Up UCC PR by @ajay-mk in #481
- modularization by @evaleev in #477
- Remove
.codecov.ymlby @ajay-mk in #483 - TAPP as interpreter backend by @evaleev in #482
- Introduce explicit I/O namespace by @Krzmbrzl in #467
- Make external index handling more robust by @Krzmbrzl in #476
- Separate optimize by @Krzmbrzl in #484
- check if P0522R0 is implemented by the compiler by @evaleev in #485
- Misc Fixes by @ajay-mk in #486
- [cmake] sync with ValeevGroup/tiledarray#537 by @evaleev in #487
- Support non-covariant indices in evaluation expressions. by @bimalgaudel in #462
- [ci] switch formatting_check.yml to direct use of clang-format-17 package by @evaleev in #489
- add noncovariant export tests by @evaleev in #488
- initial boilerplate refresh for 2.1.0 by @evaleev in #490
New Contributors
- @Krzmbrzl made their first contribution in #95
- @ABesharat made their first contribution in #305
- @Copilot made their first contribution in #430
- @obackhouse made their first contribution in #433
Full Changelog: v2.0.0...v2.1.0