Releases: tschijnmo/drudge
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
TensorDef
now resets external dummies as well. -
Core dependency
libcanon
is updated to 0.1.2 such that the erroneous
requirement of twice simplification for some complex expressions is fixed. -
A PySpark bug in
reduce
is 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-slurm
project. -
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.
0.2.0
In this release, major revisions and enhancements have been made to the drudge
package. Primarily,
-
TensorDef class are added to support better substitution and direct indexing.
-
Drudge.einst and Drudge.sum has been revised to work with existing tensors.
-
Variable-valence symmetry are supported and used in many-body drudges.
-
The timing facility has been renamed to Matlab convention.
Since the code has not yet been widely deployed, a few changes might break
backward compatibility,
-
act method of tensor is removed.
-
set_name method of drudge is updated to a new interface.
-
Timing facility is renamed.
Initial tentative release
This is the first tentative release of this new drudge system. Basically it is now feature complete with some rudimentary documentation. More tests on real problems are still needed.