"Mark F. Adams" <[email protected]> writes: >> >> I can't think of any reason for this to be an ISGeneral. I would like >> to have better IS matching, but this would obviously be better an >> ISStride, and if that fixes it, it's enough until someone thinks of a >> versatile and performant way to do IS matching. >> > > I am testing with ISStride now. > >>> creates a general IS (obviously) but matnest.c use ISStrideGetInfo, >>> which returns 1 for start. >> >> Why would it return 1? > > No idea. Do you want me to find out? What should a general IS return > as 'start'?
ISStrideGetInfo does not dispatch through dynamically registered functionals.
PetscErrorCode ISStrideGetInfo(IS is,PetscInt *first,PetscInt *step)
{
IS_Stride *sub;
PetscFunctionBegin;
PetscValidHeaderSpecific(is,IS_CLASSID,1);
if (first) PetscValidIntPointer(first,2);
if (step) PetscValidIntPointer(step,3);
sub = (IS_Stride*)is->data;
if (first) *first = sub->first;
if (step) *step = sub->step;
PetscFunctionReturn(0);
}
> 'start' seems ill defined for ISGeneral … can it have any meaningful
> semantics? and the other arg to ISGetInfo, 'stride', is obviously
> nonsensical for ISGeneral. Perhaps ISGetInfo(is,&astart,&step) should
> throw an error for ISGeneral? This would have saved me a few days of
> Fieldsplit/MatComposite, printf debugging, on a bleeding edge machine,
> fun :)
pgpRssquYWTEK.pgp
Description: PGP signature
