"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 :)

Attachment: pgpRssquYWTEK.pgp
Description: PGP signature

Reply via email to