UniformGridLayoutData<Dim>::
UniformGridLayoutData(const Domain_t &gdom, 
		      const Partitioner &gpar,
		      const ContextMapper<Dim> & cmap )
  : LayoutBaseData<Dim>(false,
			false,
			GuardLayers_t(0),
			GuardLayers_t(0),
			gdom,
			gdom),
    Observable<UniformGridLayoutData>(*this)
{
  // Figure out if we have guards to worry about.
    
  if (gpar.hasInternalGuards() && gpar.maxSize() > 1)
    {
      this->hasInternalGuards_m = true;
      this->internalGuards_m = gpar.internalGuards();
    }
      
  if (gpar.hasExternalGuards())
    {
      this->hasExternalGuards_m = true;
      this->externalGuards_m = gpar.externalGuards();
      GuardLayers<Dim>::addGuardLayers(this->domain_m,this->externalGuards_m);
    }
    
  // Do the partitioning. 
  // This initializes allDomain_m, firsti_m, etc.
      
  partition(gpar,cmap);

}
void SparseTileLayoutData<Dim>::initialize(const Domain_t &bbox,
					   const Partitioner &gpar,
					   const ContextMapper<Dim> &cmap)
{
  this->blocks_m = Loc<Dim>();
  initialize(bbox,gpar.internalGuards(),gpar.externalGuards());
  gpar.partition(bbox,this->all_m,cmap);
  syncPatch();
}