[petsc-dev] BlockGetIndices and GetBlockIndices

Stefano Zampini stefano.zampini at gmail.com
Wed Oct 16 03:02:59 CDT 2019

> On Oct 16, 2019, at 9:50 AM, Pierre Jolivet via petsc-dev <petsc-dev at mcs.anl.gov> wrote:
> Hello,
> I’m trying to understand what is the rationale for naming a function ISBlockGetIndices and another ISLocalToGlobalMappingGetBlockIndices (BlockGet vs. GetBlock).

Well ISBlock is a class, as ISLocalToGlobalMapping is; however, the latter does not have a Block variant (albeit you can pass in an IS of type ISBLOCK to generate it.

> Also, it looks to me like the implementation of ISBlockGetIndices is somehow less versatile than ISLocalToGlobalMappingGetBlockIndices.
> Indeed, I may call ISLocalToGlobalMappingGetBlockIndices with an underlying non-block IS, while I can’t for ISBlockGetIndices, so a check must be performed by the user, e.g., https://www.mcs.anl.gov/petsc/petsc-current/src/vec/is/is/examples/tutorials/ex3.c.html#line58 <https://www.mcs.anl.gov/petsc/petsc-current/src/vec/is/is/examples/tutorials/ex3.c.html#line58> or this (IMHO) ugly code duplication https://www.mcs.anl.gov/petsc/petsc-dev/src/vec/is/utils/isltog.c.html#line322 <https://www.mcs.anl.gov/petsc/petsc-dev/src/vec/is/utils/isltog.c.html#line322>.

Well, as most of the getters in PETSc, you incur in an error if the object is not of the type expected 
> Thoughts and/or comments? Would it make sense to add an ISGetBlockIndices/ISRestoreBlockIndices or would that be too confusing for the user?

That would be more general and I think it makes sense, and should pair with  ISGetBlockSize

> Thanks,
> Pierre

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20191016/bba0abc2/attachment.html>

More information about the petsc-dev mailing list