The way we have chosen to manage Vec output is to override the VecView function with DM-specific output functions. This strategy is currently broken for VecGetSubVector().
Really what we want is for the Vec to have the correct subdm if indeed it is a subfield. However, its possible that the IS is some random thing, like points intersecting some surface, so we don't want it to blindly copy over the function pointers. How about we supplement DMCreateSubDM() with VecGetSubvectorDM(), which calls it underneath and sets up the vector correctly? Matt -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
