#define PETSC_DLL #include "petscsys.h" /*I "petscsys.h" I*/ #undef __FUNCT__ #define __FUNCT__ "PetscObjectSetName" /*@C PetscObjectSetName - Sets a string name associated with a PETSc object. Not Collective Input Parameters: + obj - the Petsc variable Thus must be cast with a (PetscObject), for example, PetscObjectSetName((PetscObject)mat,name); - name - the name to give obj Level: advanced Concepts: object name^setting .seealso: PetscObjectGetName() @*/ PetscErrorCode PETSCSYS_DLLEXPORT PetscObjectSetName(PetscObject obj,const char name[]) { PetscErrorCode ierr; PetscFunctionBegin; PetscValidHeader(obj,1); ierr = PetscFree(obj->name);CHKERRQ(ierr); ierr = PetscStrallocpy(name,&obj->name);CHKERRQ(ierr); PetscFunctionReturn(0); } #undef __FUNCT__ #define __FUNCT__ "PetscObjectName" /*@C PetscObjectName - Gives an object a name if it does not have one Not Collective Input Parameters: . obj - the Petsc variable Thus must be cast with a (PetscObject), for example, PetscObjectSetName((PetscObject)mat,name); Level: advanced Concepts: object name^setting default .seealso: PetscObjectGetName(), PetscObjectSetName() @*/ PetscErrorCode PETSCSYS_DLLEXPORT PetscObjectName(PetscObject obj) { PetscErrorCode ierr; PetscCommCounter *counter; PetscMPIInt flg; char name[64]; PetscFunctionBegin; PetscValidHeader(obj,1); if (!obj->name) { void *commp = 0; ierr = MPI_Attr_get(obj->comm,Petsc_Counter_keyval,(void*)&counter,&flg);CHKERRQ(ierr); if (!flg) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_CORRUPT,"Bad MPI communicator supplied; must be a PETSc communicator"); ierr = PetscMemcpy(&commp,&obj->comm,PetscMin(sizeof(commp),sizeof(obj->comm)));CHKERRQ(ierr); ierr = PetscSNPrintf(name,64,"%s_%p_%D",obj->class_name,commp,counter->namecount++);CHKERRQ(ierr); ierr = PetscStrallocpy(name,&obj->name);CHKERRQ(ierr); } PetscFunctionReturn(0); } #undef __FUNCT__ #define __FUNCT__ "PetscObjectChangeTypeName" PetscErrorCode PETSCSYS_DLLEXPORT PetscObjectChangeTypeName(PetscObject obj,const char type_name[]) { PetscErrorCode ierr; PetscFunctionBegin; PetscValidHeader(obj,1); ierr = PetscObjectTakeAccess(obj);CHKERRQ(ierr); ierr = PetscFree(obj->type_name);CHKERRQ(ierr); ierr = PetscStrallocpy(type_name,&obj->type_name);CHKERRQ(ierr); ierr = PetscObjectGrantAccess(obj);CHKERRQ(ierr); PetscFunctionReturn(0); }