void NodeManagerPrimitive::EchoNodeSets (ModelManagerT& model, MakeCSE_IOManager& theInput)
{
  /* read in nodes set that are to be transferred */
  theInput.NodeSetsMapped (fNodeSetID, fTransMethods);
  fNodeSetData.Allocate (fNodeSetID.Length());

  out << "\n N o d e   S e t   D a t a :\n\n";
  out << " Number of Node Sets . . . . . . . . . . . . . . = " 
      << fNodeSetData.Length() << endl;

  /* read node sets */
  for (int i=0; i < fNodeSetData.Length(); i++)
    {
      fNodeSetData[i] = model.NodeSet (fNodeSetID[i]);
      out << "  Node Set . . . . . . . . . . . . . . . . . . . = " 
	  << fNodeSetID[i] << '\n';
      out << "   Number of Nodes in Set. . . . . . . . . . . . = "
	  << fNodeSetData[i].Length() << '\n'; 
    }

  out << " Node Set Transfer Methods . . . . . . . . . . . = "
      << fTransMethods.Length() << '\n';
  out << "  Method  Set ID\n";
  for (int g=0; g < fNodeSetID.Length(); g++)
    out << setw (kIntWidth) << fTransMethods[g] << setw (kIntWidth) 
	<< fNodeSetID[g] << '\n';

  /* checks */
  bool okay = true;
  if (fTransMethods.Length() < 0) okay = false;
  for (int t=0; t < fTransMethods.Length() && okay; t++)
    if (fTransMethods[t] < CSEConstants::kSurface1 || fTransMethods[t] > CSEConstants::kSplit)
      okay = false;
  if (!okay)
    {
      cout << "Invalid Node Transfer Method" << endl;
      throw ExceptionT::kBadInputValue;
    }
}