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 @*/ 24e5c89e4eSSatish Balay PetscErrorCode PETSC_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 @*/ 53e5c89e4eSSatish Balay PetscErrorCode PETSC_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) { 63480cf27aSJed Brown ierr = MPI_Attr_get(obj->comm,Petsc_Counter_keyval,(void*)&counter,&flg);CHKERRQ(ierr); 64*e32f2f54SBarry Smith if (!flg) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_CORRUPT,"Bad MPI communicator supplied; must be a PETSc communicator"); 65b7784de6SSatish Balay ierr = PetscSNPrintf(name,64,"%s_%D",obj->class_name,counter->namecount++);CHKERRQ(ierr); 66e5c89e4eSSatish Balay ierr = PetscStrallocpy(name,&obj->name);CHKERRQ(ierr); 67e5c89e4eSSatish Balay } 68e5c89e4eSSatish Balay PetscFunctionReturn(0); 69e5c89e4eSSatish Balay } 70e5c89e4eSSatish Balay 71e5c89e4eSSatish Balay #undef __FUNCT__ 72e5c89e4eSSatish Balay #define __FUNCT__ "PetscObjectPublish" 73e5c89e4eSSatish Balay /*@C 74e5c89e4eSSatish Balay PetscObjectPublish - Publish an object 75e5c89e4eSSatish Balay 76e5c89e4eSSatish Balay Collective on PetscObject 77e5c89e4eSSatish Balay 78e5c89e4eSSatish Balay Input Parameters: 79e5c89e4eSSatish Balay . obj - the Petsc variable 80e5c89e4eSSatish Balay Thus must be cast with a (PetscObject), for example, 81e5c89e4eSSatish Balay PetscObjectSetName((PetscObject)mat,name); 82e5c89e4eSSatish Balay 83e5c89e4eSSatish Balay Level: advanced 84e5c89e4eSSatish Balay 85e5c89e4eSSatish Balay Concepts: publishing object 86e5c89e4eSSatish Balay 87e5c89e4eSSatish Balay Notes: Not currently used 88e5c89e4eSSatish Balay 89e5c89e4eSSatish Balay .seealso: PetscObjectSetName() 90e5c89e4eSSatish Balay 91e5c89e4eSSatish Balay @*/ 92e5c89e4eSSatish Balay PetscErrorCode PETSC_DLLEXPORT PetscObjectPublish(PetscObject obj) 93e5c89e4eSSatish Balay { 94e5c89e4eSSatish Balay PetscErrorCode ierr; 95e5c89e4eSSatish Balay 96e5c89e4eSSatish Balay PetscFunctionBegin; 97e5c89e4eSSatish Balay PetscValidHeader(obj,1); 98e5c89e4eSSatish Balay if (obj->bops->publish) { 99e5c89e4eSSatish Balay ierr = (*obj->bops->publish)(obj);CHKERRQ(ierr); 100e5c89e4eSSatish Balay } 101e5c89e4eSSatish Balay PetscFunctionReturn(0); 102e5c89e4eSSatish Balay } 103e5c89e4eSSatish Balay 104e5c89e4eSSatish Balay #undef __FUNCT__ 105e5c89e4eSSatish Balay #define __FUNCT__ "PetscObjectChangeTypeName" 106e5c89e4eSSatish Balay PetscErrorCode PETSC_DLLEXPORT PetscObjectChangeTypeName(PetscObject obj,const char type_name[]) 107e5c89e4eSSatish Balay { 108e5c89e4eSSatish Balay PetscErrorCode ierr; 109e5c89e4eSSatish Balay 110e5c89e4eSSatish Balay PetscFunctionBegin; 1113cfa8680SLisandro Dalcin PetscValidHeader(obj,1); 112e5c89e4eSSatish Balay ierr = PetscObjectTakeAccess(obj);CHKERRQ(ierr); 113503cfb0cSBarry Smith ierr = PetscFree(obj->type_name);CHKERRQ(ierr); 114e5c89e4eSSatish Balay ierr = PetscStrallocpy(type_name,&obj->type_name);CHKERRQ(ierr); 115e5c89e4eSSatish Balay ierr = PetscObjectGrantAccess(obj);CHKERRQ(ierr); 116e5c89e4eSSatish Balay PetscFunctionReturn(0); 117e5c89e4eSSatish Balay } 118e5c89e4eSSatish Balay 119