In the spring of 2002 I wrote a maple program to compute integrals over the
moduli space of maps to a smooth curve. The algorithm is due to Rahul
Pandharipande and Andrei Okounkov and is based on their joint work and also
the joint work of Pandharipande and Faber. The integrand can have arbitrary
gravitational descendants (i.e. descendants of a point, a loop, or 1) or
insertions of "Hodge type". "Hodge type" insertions are of the form
ch_{i}(R^{·}p_{*}f^{*}(L)) where p is the universal curve, f is the universal map and
L is a line bundle on the target curve. For example, if L is the trivial
bundle, then these insertions are the Chern characters of the dual Hodge
bundle.
The program computes
One of the applications of the program is to compute the local GW
invariants of a curve in a Calabi-Yau 3-fold (this was the main motivation
for writing the program). Here the integrand is the "top" Chern class of
-R The algorithm is highly recursive and can use up a lot of RAM. Rahul and I spend a good two months optimizing the algorithm and I believe that the program is basically as efficient as the algorithm allows. The program does slow down as the degree and the target genus go up, but I think the main barrier is the number of insertions. The maximum number of insertions is typically 5 or 6. I intend to write up a complete description of the algorithm and the use of the program and eventually post it on the arXiv, in the mean time, I will post it here. Use at your own risk. The "documentation" for using the program appears at the beginning of the file. The auxiliary programs (procedures "Z" and "Y") for computing the local GW invariants of a curve in a Calabi-Yau 3-fold occur toward the end of the file and their documentation is there. The code has been fairly well tested and seems to be pretty reliable. If you find any problems please email me. The only "bug" that I know of has to do with certain loop descendants. For each insertion which is a gravitational descendant of a loop, there must be another insertion which is a descendant of the poincare dual loop. If this is not the case, the invariant is zero, however the program gives an error. (An earlier version of the program correctly returned zero, but we changed to a much faster algorithm that assumes that the loops are inserted in poincare pairs). The code: GWall . |