1e5c89e4eSSatish Balay #define PETSC_DLL 2e5c89e4eSSatish Balay 3d382aafbSBarry Smith #include "petscsys.h" /*I "petscsys.h" I*/ 4e5c89e4eSSatish Balay 5e5c89e4eSSatish Balay #undef __FUNCT__ 6e5c89e4eSSatish Balay #define __FUNCT__ "PetscObjectSetName" 7e5c89e4eSSatish Balay /*@C 8e5c89e4eSSatish Balay PetscObjectSetName - Sets a string name associated with a PETSc object. 9e5c89e4eSSatish Balay 10e5c89e4eSSatish Balay Not Collective 11e5c89e4eSSatish Balay 12e5c89e4eSSatish Balay Input Parameters: 13e5c89e4eSSatish Balay + obj - the Petsc variable 14e5c89e4eSSatish Balay Thus must be cast with a (PetscObject), for example, 15e5c89e4eSSatish Balay PetscObjectSetName((PetscObject)mat,name); 16e5c89e4eSSatish Balay - name - the name to give obj 17e5c89e4eSSatish Balay 18e5c89e4eSSatish Balay Level: advanced 19e5c89e4eSSatish Balay 20e5c89e4eSSatish Balay Concepts: object name^setting 21e5c89e4eSSatish Balay 22e5c89e4eSSatish Balay .seealso: PetscObjectGetName() 23e5c89e4eSSatish Balay @*/ 248738c821SJed Brown PetscErrorCode PETSCSYS_DLLEXPORT PetscObjectSetName(PetscObject obj,const char name[]) 25e5c89e4eSSatish Balay { 26e5c89e4eSSatish Balay PetscErrorCode ierr; 27e5c89e4eSSatish Balay 28e5c89e4eSSatish Balay PetscFunctionBegin; 293cfa8680SLisandro Dalcin PetscValidHeader(obj,1); 30503cfb0cSBarry Smith ierr = PetscFree(obj->name);CHKERRQ(ierr); 31e5c89e4eSSatish Balay ierr = PetscStrallocpy(name,&obj->name);CHKERRQ(ierr); 32e5c89e4eSSatish Balay PetscFunctionReturn(0); 33e5c89e4eSSatish Balay } 34e5c89e4eSSatish Balay 35e5c89e4eSSatish Balay #undef __FUNCT__ 36e5c89e4eSSatish Balay #define __FUNCT__ "PetscObjectName" 37e5c89e4eSSatish Balay /*@C 38e5c89e4eSSatish Balay PetscObjectName - Gives an object a name if it does not have one 39e5c89e4eSSatish Balay 40e5c89e4eSSatish Balay Not Collective 41e5c89e4eSSatish Balay 42e5c89e4eSSatish Balay Input Parameters: 43e5c89e4eSSatish Balay . obj - the Petsc variable 44e5c89e4eSSatish Balay Thus must be cast with a (PetscObject), for example, 45e5c89e4eSSatish Balay PetscObjectSetName((PetscObject)mat,name); 46e5c89e4eSSatish Balay 47e5c89e4eSSatish Balay Level: advanced 48e5c89e4eSSatish Balay 49e5c89e4eSSatish Balay Concepts: object name^setting default 50e5c89e4eSSatish Balay 51e5c89e4eSSatish Balay .seealso: PetscObjectGetName(), PetscObjectSetName() 52e5c89e4eSSatish Balay @*/ 538738c821SJed Brown PetscErrorCode PETSCSYS_DLLEXPORT PetscObjectName(PetscObject obj) 54e5c89e4eSSatish Balay { 55e5c89e4eSSatish Balay PetscErrorCode ierr; 56480cf27aSJed Brown PetscCommCounter *counter; 57480cf27aSJed Brown PetscMPIInt flg; 58e5c89e4eSSatish Balay char name[64]; 59e5c89e4eSSatish Balay 60e5c89e4eSSatish Balay PetscFunctionBegin; 613cfa8680SLisandro Dalcin PetscValidHeader(obj,1); 62e5c89e4eSSatish Balay if (!obj->name) { 63*a2c4bf20SJed Brown void *commp = 0; 64480cf27aSJed Brown ierr = MPI_Attr_get(obj->comm,Petsc_Counter_keyval,(void*)&counter,&flg);CHKERRQ(ierr); 65e32f2f54SBarry Smith if (!flg) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_CORRUPT,"Bad MPI communicator supplied; must be a PETSc communicator"); 66*a2c4bf20SJed Brown ierr = PetscMemcpy(&commp,&obj->comm,PetscMin(sizeof(commp),sizeof(obj->comm)));CHKERRQ(ierr); 67*a2c4bf20SJed Brown ierr = PetscSNPrintf(name,64,"%s_%p_%D",obj->class_name,commp,counter->namecount++);CHKERRQ(ierr); 68e5c89e4eSSatish Balay ierr = PetscStrallocpy(name,&obj->name);CHKERRQ(ierr); 69e5c89e4eSSatish Balay } 70e5c89e4eSSatish Balay PetscFunctionReturn(0); 71e5c89e4eSSatish Balay } 72e5c89e4eSSatish Balay 73e5c89e4eSSatish Balay 74e5c89e4eSSatish Balay 75e5c89e4eSSatish Balay #undef __FUNCT__ 76e5c89e4eSSatish Balay #define __FUNCT__ "PetscObjectChangeTypeName" 778738c821SJed Brown PetscErrorCode PETSCSYS_DLLEXPORT PetscObjectChangeTypeName(PetscObject obj,const char type_name[]) 78e5c89e4eSSatish Balay { 79e5c89e4eSSatish Balay PetscErrorCode ierr; 80e5c89e4eSSatish Balay 81e5c89e4eSSatish Balay PetscFunctionBegin; 823cfa8680SLisandro Dalcin PetscValidHeader(obj,1); 83e5c89e4eSSatish Balay ierr = PetscObjectTakeAccess(obj);CHKERRQ(ierr); 84503cfb0cSBarry Smith ierr = PetscFree(obj->type_name);CHKERRQ(ierr); 85e5c89e4eSSatish Balay ierr = PetscStrallocpy(type_name,&obj->type_name);CHKERRQ(ierr); 86e5c89e4eSSatish Balay ierr = PetscObjectGrantAccess(obj);CHKERRQ(ierr); 87e5c89e4eSSatish Balay PetscFunctionReturn(0); 88e5c89e4eSSatish Balay } 89e5c89e4eSSatish Balay 90