static char help[] = "Element closure restrictions in tensor/lexicographic/spectral-element ordering using DMPlex\n\n"; #include static PetscErrorCode ViewOffsets(DM dm, Vec X) { PetscInt num_elem, elem_size, num_comp, num_dof; PetscInt *elem_restr_offsets; const PetscScalar *x = NULL; const char *name; PetscErrorCode ierr; PetscFunctionBegin; ierr = PetscObjectGetName((PetscObject)dm, &name);CHKERRQ(ierr); ierr = DMPlexGetLocalOffsets(dm, NULL, 0, 0, 0, &num_elem, &elem_size, &num_comp, &num_dof, &elem_restr_offsets);CHKERRQ(ierr); ierr = PetscPrintf(PETSC_COMM_SELF,"DM %s offsets: num_elem %" PetscInt_FMT ", size %" PetscInt_FMT ", comp %" PetscInt_FMT ", dof %" PetscInt_FMT "\n", name, num_elem, elem_size, num_comp, num_dof);CHKERRQ(ierr); if (X) {ierr = VecGetArrayRead(X, &x);CHKERRQ(ierr);} for (PetscInt c=0; c