This page describes staggered fermions in the Chroma library from a UK perspective. There are two groups of people using staggered fermions in Chroma. One group is based in the UK (at the moment at least), and the other group is led by Kostas Orginos. This page deals with the UK based code. The differences between the two groups are on the main programs and top level routines. They both share the same inverters and data structures.
Below is a piece of code that computes an improved staggered quark propagator from a single source.
// Typedefs to save typing
typedef LatticeStaggeredFermion T;
typedef multi1d<LatticeColorMatrix> P;
typedef multi1d<LatticeColorMatrix> Q;
Handle< StaggeredTypeFermAct< T,P,Q> > fermact(TheStagTypeFermActFactory::Instance().createObject(input.param.fermact.id, fermact_reader, input.param.fermact.path));
// Cast of a pointer to a reference?
StaggeredTypeFermAct<T,P,Q>& S_f= *(fermact);
// Set up a state for the current u, (gauge fields)
// (compute fat & triple links)
// Use S_f.createState so that S_f can pass in u0
Handle< FermState<T,P,Q> > state(S_f.createState(u)) ;
// Compute the propagator for given source colour
SystemSolverResults_t res = (*qprop)(psi, q_source);
ncg_had += res.n_count;
There is an interface to the SciDac qopqdp library. There are some notes on how to compile the code to take advantage of this optimized code. These are attached at the bottom of this page.
Highly improved staggered quarks on the lattice, with applications to charm physics.
By HPQCD Collaboration and UKQCD Collaboration (E. Follana et al.)..
Published in Phys.Rev.D75:054502,2007, e-Print: hep-lat/0610092
The code has been tested against Eduardo Follana's code for a small lattice.
The code has now been integrated into the Chroma world view,
so that either the HISQ or ASQTAD action can be selected at
run time. See: chroma/tests/spectrum_s/
The correction to the Naik term, epsilon (equation 24 in the above paper) is NOT
automatically included, so must be loaded from the input file.
This correction will (maybe) be computed in perturbation theory one day.
<boundary>1 1 1 1</boundary>
No doubt having epsilon as a input parameter will cause some confusion.
The HISQ inverter ignores the value of U0.
There are some example input xml files in the directory tests/spectrum_s/
The spectrum_s application code is written in the style of chroma that was typically used around 2004. We have not found time to upgrade to the more modern xml
programming style. Essentially different measurements are slotted by switching on and off boolean variables in the XML.
The applications that code will do are:
There are simpler simpler wrappers to the inverters in the directory chroma/mainprogs/tests
The staggered measurement code was developed by Eric Gregory, Alan Irving, Craig McNeile, Chris Richards, and Zbyszek Sroczynski. Balint Joo made a
number of important changes and design decisions.