Releases: DrudgeCAS/drudge
drudge: v0.11.1
drudge: v0.11.0
v0.11.0-alpha
This new release implements a feature for simultaneous batch substitution. It also fixes the examples and tests, and revamps the support for Drudge on new Python versions, enhancing compatibility with libraries such as sympy.
What's Changed
- Simultaneous batch substitutions for
Tensor.subst_allby @chenpeizhi in #11 - Modernize building and CI and fix bugs due to SymPy upgrades by @chenpeizhi in #22
Full Changelog: 0.9.0...0.11.0-alpha
0.9.0
0.9.0
This is a relatively small release fixing problems found in the initial lessons
of using the drudge script. Specifically, bugs with pickling symbols in drudge
scripts has been fixed. Also, generally better error handling and reporting
can be seen in using drudge scripts. To facilitate advanced manipulation
inside drudge scripts, tensors are also given a full pack of three core
manipulation functions, map, filter, and bind. Also, the
documentation has been improved.
0.8.0
0.8.0
The primary highlight of this research is the introduction of drudge scripts,
which is a convenient and flexible domain-specific language for doing symbolic
computations in drudge. This could make drudge a lot more convenient for simple
tasks and more accessible for new comers, especially those unfamiliar with the
Python language. Drudge scripts can be executed either by using exec_drs
method of the Drudge class or using drudge as the main program.
Motivated by the drudge script, the tensor definitions are made more convenient
to use even in the normal Python interface. Now tensor definitions subclasses
the tensor class. So all arithmetic operations are automatically available.
And they can be more conveniently created by the new Drudge.def_ method and
added to the name archive by the Drudge.set_name method.
Also the LaTeX formatting has been improved with the option to suppress
summations and the capability of using the LaTeX breqn package to
automatically format long terms with a lot of factors. Also the LaTeX printing
of tensors whose base is parsed by SymPy to have a subscript is fixed.
Previously we get double subscripts for a base, which crashes both the original
TeX and MathJAX.
0.7.0
This releases adds some convenience operations defined for tensorial objects,
like direct negation and division by scalars. For instance, to negate a tensor
t, now we can just write -t instead of the more cumbersome -1 * t.
Similarly, to divide it by two, we can now just write t / 2, compared with
the previous syntax of
t * sympy.Rational(1, 2)
The examples for CC theories are also updated for the new syntax. And some
other convenience enhancements are added. For instance, now LaTeX or pdf report
can directly be generated, with the structure of the report more flexible and
tunable. And the LaTeX formatting is enhanced with more options to fine tune
its behaviour. Also memoize method is added to the Drudge class for the
convenience of caching intermediate results.
Also multiple bugs are fixed,
-
Now the code no longer crashes when a deltas contains no dummy.
-
Incorrectness from highly cyclic delta resolution result is fixed.
-
The dummies in simplified result for particle-hole problems are made
conventional. -
Simplification of
TensorDefnow resets external dummies as well. -
Core dependency
libcanonis updated to 0.1.2 such that the erroneous
requirement of twice simplification for some complex expressions is fixed. -
A PySpark bug in
reduceis circumvented by doing boolean reduction
locally.
0.6.0
0.6.0
In the previous release, RestrictedPartHoleDrudge is narrower in scope than
the SpinOneHalfPartHoleDrudge. After some internal revision, now all
problems for SpinOneHalfPartHoleDrudge should be able to be handled with
RestrictedPartHoleDrudge. For expressions with many terms coming from
concrete spin summation, significant speed up can be brought.
To update to the new drudge,
-
When your theory is already based on unitary group generators, just remove
your definition and use the definition from the drudge. -
When your theory is not written in terms of unitary group generators, it is
strongly advised that your theory is rewritten in terms of them. If it
really cannot, use symbolic summation over spin values as much as possible. -
Even when the spin values are never summed abstractly, simply change the
drudge to this new one might still be beneficial.
0.5.0
0.5.0
The most prominent change of this release is the addition of the
RestrictedPartHoleDrudge. Compared with the SpinOneHalfPartHoleDrudge,
this class is less flexible but can be orders of magnitude faster. Note that
no backward compatibility is broken by this. All previous script should still
run fine. For problems originally written in terms of the unitary group
generators, switching to this new drudge can be really easy. All these needs
to be done is to remove your own definitions of the unitary group generators,
and use the generator e_ provided by the drudge instead. For instance, as
in the patch for the RCCSD example.
With such simple changes, the internals of the evaluations will be switched to
the new scheme and the code will be significantly faster.
In addition of this change, there are also some other revisions,
-
A bug in Spark has been circumvented in tensor rewriting. Thanks to Ethan
Qiu for pointing this out. -
Tensor definition now allow generic external indices without explicit range.
-
A new simplification heuristics is added to simplify summations whose dummy
is not actually involved in the tensor. -
Add total timing support in
Stopwatch. -
Optimize summation discovery based on Einstein summation convention.
0.4.0
0.4.0
This is mainly a bug-fix release.
-
The incomplete simplification problem for Fock drudge is fixed. Thanks to
Ethan Qiu for pointing this out. -
The incompetent script for running Spark inside SLURM is removed and got
improved in the separatespark-in-slurmproject. -
Spin-1/2 particle-hole drudge now has explicit orbital range sizes. Thanks to
Roman Schutski for fixing this.
0.3.0
In this release, in addition to various performance optimization, small bug
fixing, and some internal cleaning-up, the most significant enhancement is the
handling of algebraic systems other than the fermion/boson algebra. Currently,
Clifford algebra and su(2) algebra are supported. Other
algebraic systems should be able to be added with ease.
Also the documentation has been expanded, especially with more examples in the
API reference guide. Also the utilities are added for convenient pickling of
tensors.