SparseTileLayoutData<Dim>::SparseTileLayoutData(const Domain_t &bbox,
						const Partitioner &gpar,
						const ContextMapper<Dim> &cmap)
   :  LayoutBaseData<Dim>(false,false,
			  GuardLayers_t(0),GuardLayers_t(0),
			  bbox,bbox),
    Observable<SparseTileLayoutData>(*this)
{
  this->blocks_m = Loc<Dim>();
  // 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);
    }
    
  initialize(bbox, gpar,cmap);
}
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);

}