message: Bugfix for SidreDataCollection::createMeshBlueprintAdjacencies().
  Only create a group when the adjacency relation is not empty.
  Creating views with 0 elements triggers warning in Sidre and Conduit (invalid casts).
diff: @@ -522,6 +522,12 @@ void SidreDataCollection::createMeshBlueprintAdjacencies(bool hasBP)
  }
  for (int gi = 1; gi < pmesh->GetNGroups(); ++gi)
  + {
  + int num_gneighbors = pmesh->gtopo.GetGroupSize(gi);
  + int num_gvertices = pmesh->GroupNVertices(gi);
  +
  + // Skip creation of empty groups
  + if (num_gneighbors > 1 && num_gvertices > 0)
  {
  std::snprintf(group_str, GRP_SZ, "adjacencies/g%d_%d",
  pmesh->gtopo.GetGroupMasterRank(gi),
  @@ -531,13 +537,12 @@ void SidreDataCollection::createMeshBlueprintAdjacencies(bool hasBP)
  group_grp->createViewString("association", "vertex");
  group_grp->createViewString("topology", "mesh");
  - const int* gneighbors = pmesh->gtopo.GetGroup(gi);
  - int num_gneighbors = pmesh->gtopo.GetGroupSize(gi);
  sidre::View* gneighbors_view = group_grp->createViewAndAllocate(
  "neighbors", sidre::INT_ID, num_gneighbors - 1);
  -
  - // skip all instances of the local domain when adding Blueprint neighbors
  int* gneighbors_data = gneighbors_view->getData<int*>();
  +
  + // skip local domain when adding Blueprint neighbors
  + const int* gneighbors = pmesh->gtopo.GetGroup(gi);
  for (int ni = 0, noff = 0; ni < num_gneighbors; ++ni)
  {
  if ( gneighbors[ni] == 0 )
  @@ -546,11 +551,11 @@ void SidreDataCollection::createMeshBlueprintAdjacencies(bool hasBP)
  }
  else
  {
  - gneighbors_data[ni - noff] = pmesh->gtopo.GetNeighborRank(gneighbors[ni]);
  + gneighbors_data[ni - noff] =
  + pmesh->gtopo.GetNeighborRank(gneighbors[ni]);
  }
  }
  - int num_gvertices = pmesh->GroupNVertices(gi);
  sidre::View* gvertices_view = group_grp->createViewAndAllocate(
  "values", sidre::INT_ID, num_gvertices);
  @@ -561,6 +566,7 @@ void SidreDataCollection::createMeshBlueprintAdjacencies(bool hasBP)
  }
  }
  }
  +}
  #endif
  // private method
  @@ -856,7 +862,7 @@ addScalarBasedGridFunction(const std::string &field_name, GridFunction *gf,
  }
  MFEM_ASSERT((numDofs > 0 && vv->isApplied()) ||
  (numDofs == 0 && vv->isEmpty() && vv->isDescribed()),
  - "invlid View state");
  + "invalid View state");
  MFEM_ASSERT(numDofs == 0 || vv->getData() == gf->GetData(),
  "View data is different from GridFunction data");
  MFEM_ASSERT(vv->getNumElements() == numDofs,
  @@ -944,7 +950,7 @@ addVectorBasedGridFunction(const std::string& field_name, GridFunction *gf,
  sidre::View *xv = vg->getView(fidxName);
  MFEM_ASSERT((ndof > 0 && xv->isApplied()) ||
  (ndof == 0 && xv->isEmpty() && xv->isDescribed()),
  - "invlid View state");
  + "invalid View state");
  MFEM_ASSERT(ndof == 0 || xv->getData() == gf->GetData() + d*vdim_stride,
  "View data is different from GridFunction data");
  MFEM_ASSERT(xv->getNumElements() == ndof,
  