if (Layout::primaryNode()) nml.get() << "   [OUTER]" << endl;
xml.openTag("OLattice"); XMLWriterAPI::AttributeList alist;
NmlWriter& operator<<(NmlWriter& nml, const OLattice<T>& d){  T recv_buf;  if (Layout::primaryNode())    nml.get() << "   [OUTER]" << endl;  // Find the location of each site and send to primary node  for(int site=0; site < Layout::vol(); ++site)  {    multi1d<int> coord = crtesn(site, Layout::lattSize());    int node   = Layout::nodeNumber(coord);    int linear = Layout::linearSiteIndex(coord);    // Copy to buffer: be really careful since max(linear) could vary among nodes    if (Layout::nodeNumber() == node)      recv_buf = d.elem(linear);    // Send result to primary node. Avoid sending prim-node sending to itself    if (node != 0)    {      if (Layout::primaryNode())	Internal::recvFromWait((void *)&recv_buf, node, sizeof(T));      if (Layout::nodeNumber() == node)	Internal::sendToWait((void *)&recv_buf, 0, sizeof(T));    }    if (Layout::primaryNode())    {      nml.get() << "   Site =  " << site << "   = ";      nml << recv_buf;      nml.get() << " ," << endl;    }  }  return nml;}