So something like VecGetSubVectorDM(vec,subdm,&subvec)? I hate having so many functions but don't see how to avoid it. Or
VecGetSubVectorDM(vec,PetscInt numfields,PetscInt *fields,&subvec)? The problem with this one is each new call has to create a new subdm unless we stash it in the DM. > On Nov 7, 2016, at 6:17 AM, Matthew Knepley <[email protected]> wrote: > > 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
