[petsc-dev] changed ISCreateGeneral/NC/WithArray()

Lisandro Dalcin dalcinl at gmail.com
Sun Oct 3 17:45:01 CDT 2010

On 3 October 2010 14:57, Barry Smith <bsmith at mcs.anl.gov> wrote:
>   I find the three routines ISCreateGeneral(), ISCreateGeneralNC() and ISCreateGeneralWithArray() to be confusing and code redundant.
>   Therefore in PETSc-dev I have introduced
> /*E
>    PetscCopyMode  - Determines how an array passed to certain functions is copied or retained
>   Level: beginner
> $   PETSC_COPY_VALUES - the array values are copied into new space, the user is free to reuse or delete the passed in array
> $   PETSC_OWN_POINTER - the array values are NOT copied, the object takes ownership of the array and will free it later, the user cannot change or
> $                       delete the array. The array MUST have been obtained with PetscMalloc(). Hence this mode cannot be used in Fortran.
> $   PETSC_USE_POINTER - the array values are NOT copied, the object uses the array but does NOT take ownership of the array. The user cannot use
>                        the array but the user must delete the array after the object is destroyed.
> E*/
> extern const char *PetscCopyModes[];
> and merged  ISCreateGeneral/NC/WithArray() into a single routine with an additional PetscCopyMode argument.
> I have also merged ISLocalToGlobalMappingCreate() and ISLocalToGlobalMappingCreateNC() into a single routine.
> There may be other places we can use this paradigm in the future, keep your eyes open,
>  Happy computing,
>    Barry

I would prefer to have:


and then implement

ISCreateGeneral(comm,n,ptr,&is) {
return ISCreateGeneralWithArray(comm,n,ptr,PETSC_COPY_VALUES,&is);

What do you think?

Lisandro Dalcin
Predio CONICET-Santa Fe
Colectora RN 168 Km 472, Paraje El Pozo
Tel: +54-342-4511594 (ext 1011)
Tel/Fax: +54-342-4511169

More information about the petsc-dev mailing list