The expression function constructs an expression from a symbolic format that is easy for users to type in.
Sums a group of expressions.
Returns the terms that have connected diagrams.
Returns the terms with linked disconnected diagrams.
Finds the product of a group of terms.
The first step in the simplification of an expression is
canonicalization. This involves taking each term in an expression and
rearranging its factors to some unique order. If the factor's indices
can be rearranged using the index permutation symmetries that have been
given with the factor
command, then the indices must be
rearranged to a unique form as well. Since more than one of a given
type of factor can occur in a term, the arrangement of indices within a
factor can influence the ordering of factors within a term. Thus, the
index rearrangement and term reordering become coupled in a complex way.
The canonicalize
function completely solves this problem; that
is, no matter how the factors or indices in a term might be permuted,
the canonicalize
function will put the term in the same canonical
form. This is important for the combine
function, which searches
through an expression for terms which are identical. If two identical
terms are found, then they are replaced with a single term equal to the
sum of the two original terms.
The substitute
function is like the substitute
command,
except is does not produce side effects in the expression and instead
returns the new expression, section substitute
The sort
function takes a single expression as an argument.
The terms in the expression are sorted into a canonical order. This
is mainly used so two equivalent expressions generated in different
ways can be easily compared when they are printed out.
The term
function allows the user to construct in a symbolic
format an expression with only one term.
This code fragment sets up the t1 cluster operator. The repeated indices represent an implied summation.
SQ> assign t1op (term +1 t1(a i) ac(a spin1) aa(i spin1));
The expression
function the simplist way to construct an
expression with several terms.
Use Wick's theorem to take a quasivacuum expectation value.
WARNING: THIS ROUTINE IS UNTESTED!!
This converts the expression to a form consisting of normal ordered
operators only. This function is invoked as (wick (n)
exp)
, where n is the number of creation and annihilation
operators in the resulting expression. The sum over all n of
these expressions is equivalent to the original expression.
WARNING: THIS ROUTINE IS UNTESTED!!
Converts an expression to its normal ordered form.
adjoint
computes the adjoint of an expression.
The delta
function attempts to remove Kronecker delta functions
from terms. This can usually be done when one of the delta function's
indices is not an external index. When both of the delta function's
indices are internal and identical, the delta function can be replaced
by the dimension of the range over which the index sums. This is why
the dimensions of subspaces could be given with the
direct_product
command. If a dimension was given as
undefined
and a delta function of this sort was encountered, then
delta
command would leave this delta function in the term.
Otherwise, the multiplicative factor is adjusted by the appropriate
amount.
This function finds the quasivacuum expectation of a product of expressions using Wick's theorem.
This is much more efficient that first taking the product with
times
and then computing the vacuum expectation value with
vewick
. The problem is that many of the terms in the product
will give zero contribution to the expectation value. Knowing in
advance of taking the product that we are going to take the expectation
value, a large number of the products need not be formed. For example,
in open-shell spin-adapted coupled cluster theory, the eighth power in T
is required for some of equations. Since the T expression has nine
terms, computing the product would produce 9 to the eighth power or
43,046,721 terms. But only two of the nine terms can possibly
contribute, meaning that only 2 to the eighth or 256 terms in the
product can contribute to the quasivacuum expectation value. Although
it is true that the user of sqsym could avoid such excessive
computation, to have to explicitly take advantage of these savings would
require long and complex input files, with an increased possibility of
error.
The restore
function obtains an expression from a disk file. It
is similar to the restore
command, section restore. It is not
necessary to use the restore
function as a quoted string giving
the prefix file name and the expression name as described for the
restore
command can be used in place of any expression name.
Switches two external indices in an expression.
The contract
function allows two external indices to be set equal
to each other and summed over throughout all the terms in the
expression.
Given a factor with its list of external indices, find the coefficients of this factor in the given expression. This can be used to compute denominators needed in the cluster coefficient update process. For example,
assign denom (update tph (ae ie) expression 2);
The last argument is an integer which gives the maximum number of factors which may appear in the terms from which will appear in the result (including the factor begin sought).
Given a factor this will find all terms in the expression which contain the factor with all indices but one external.
Given an expression as an argument, this will return an expression which has had all complex ranges split into simple ranges. The expression argument can be followed with a list of external indices. If the ranges of these indices are one and any range in an expression has the given external index, then the summation over that index is replaced with the external index.
This reads a permutation (declared as a scalar
) followed by a
parenthesized list of external indices and then an expression and
replaces terms in the expression which differ by external index
permutations by one term multiplied by the permutation operator.
The vemmaccum
function takes as arguments a parenthesized list of
options followed by a series of vetimes
function invocations.
When vetimes
is called in such a way, the terms will be added
together that requires a minimal amount of memory. Intermediate
expressions will be kept in an external file.
The options include NoUseVEMM
, NoMinimizePaging
,
NoAccumVEMM
, Compress0
, Compress8
, and
Compress16
.
For example,
assign result (sort (vemmaccum (Compress24 UseVEMM AccumVEMM) (vetimes hopn top top top) (vetimes m_1_1 top hopn top top ) (vetimes top top hopn top ) (vetimes m_1_1 top top top hopn )));
The options given in this example are defaults.