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__ 36*317d6ea6SBarry Smith #define __FUNCT__ "PetscObjectPrintClassNamePrefixType" 37*317d6ea6SBarry Smith /*@C 38*317d6ea6SBarry Smith PetscObjectPrintTypeNamePrefix - used in the XXXView() methods to display information about the class, name, prefix and type of an object 39*317d6ea6SBarry Smith 40*317d6ea6SBarry Smith Input Parameters: 41*317d6ea6SBarry Smith + obj - the PETSc object 42*317d6ea6SBarry Smith . viewer - ASCII viewer where the information is printed 43*317d6ea6SBarry Smith - string - for example "Matrix Object" 44*317d6ea6SBarry Smith 45*317d6ea6SBarry Smith Level: developer 46*317d6ea6SBarry Smith 47*317d6ea6SBarry Smith .seealso: PetscObjectSetName(), PetscObjectName() 48*317d6ea6SBarry Smith 49*317d6ea6SBarry Smith @*/ 50*317d6ea6SBarry Smith PetscErrorCode PetscObjectPrintClassNamePrefixType(PetscObject obj,PetscViewer viewer,const char string[]) 51*317d6ea6SBarry Smith { 52*317d6ea6SBarry Smith PetscErrorCode ierr; 53*317d6ea6SBarry Smith 54*317d6ea6SBarry Smith PetscFunctionBegin; 55*317d6ea6SBarry Smith ierr = PetscViewerASCIIPrintf(viewer,"%s:",string);CHKERRQ(ierr); 56*317d6ea6SBarry Smith if (obj->name) { 57*317d6ea6SBarry Smith ierr = PetscViewerASCIIPrintf(viewer,"%s",obj->name);CHKERRQ(ierr); 58*317d6ea6SBarry Smith } 59*317d6ea6SBarry Smith if (obj->prefix) { 60*317d6ea6SBarry Smith ierr = PetscViewerASCIIPrintf(viewer,"(%s)",obj->prefix);CHKERRQ(ierr); 61*317d6ea6SBarry Smith } 62*317d6ea6SBarry Smith ierr = PetscViewerASCIIPrintf(viewer,"\n");CHKERRQ(ierr); 63*317d6ea6SBarry Smith if (obj->type_name) { 64*317d6ea6SBarry Smith ierr = PetscViewerASCIIPrintf(viewer," type: %s\n",obj->type_name);CHKERRQ(ierr); 65*317d6ea6SBarry Smith } else { 66*317d6ea6SBarry Smith ierr = PetscViewerASCIIPrintf(viewer," type not yet set\n");CHKERRQ(ierr); 67*317d6ea6SBarry Smith } 68*317d6ea6SBarry Smith PetscFunctionReturn(0); 69*317d6ea6SBarry Smith } 70*317d6ea6SBarry Smith 71*317d6ea6SBarry Smith #undef __FUNCT__ 72e5c89e4eSSatish Balay #define __FUNCT__ "PetscObjectName" 73e5c89e4eSSatish Balay /*@C 74e5c89e4eSSatish Balay PetscObjectName - Gives an object a name if it does not have one 75e5c89e4eSSatish Balay 76e5c89e4eSSatish Balay Not Collective 77e5c89e4eSSatish Balay 78e5c89e4eSSatish Balay Input Parameters: 79e5c89e4eSSatish Balay . obj - the Petsc variable 80e5c89e4eSSatish Balay Thus must be cast with a (PetscObject), for example, 81*317d6ea6SBarry Smith PetscObjectName((PetscObject)mat,name); 82e5c89e4eSSatish Balay 83*317d6ea6SBarry Smith Level: developer 84e5c89e4eSSatish Balay 85e5c89e4eSSatish Balay Concepts: object name^setting default 86e5c89e4eSSatish Balay 87*317d6ea6SBarry Smith Notes: This is used in a small number of places when an object NEEDS a name, for example when it is saved to Matlab with that variable name. 88*317d6ea6SBarry Smith Use PetscObjectSetName() to set the name of an object to what you want. 89*317d6ea6SBarry Smith 90e5c89e4eSSatish Balay .seealso: PetscObjectGetName(), PetscObjectSetName() 91e5c89e4eSSatish Balay @*/ 928738c821SJed Brown PetscErrorCode PETSCSYS_DLLEXPORT PetscObjectName(PetscObject obj) 93e5c89e4eSSatish Balay { 94e5c89e4eSSatish Balay PetscErrorCode ierr; 95480cf27aSJed Brown PetscCommCounter *counter; 96480cf27aSJed Brown PetscMPIInt flg; 97e5c89e4eSSatish Balay char name[64]; 98e5c89e4eSSatish Balay 99e5c89e4eSSatish Balay PetscFunctionBegin; 1003cfa8680SLisandro Dalcin PetscValidHeader(obj,1); 101e5c89e4eSSatish Balay if (!obj->name) { 102a2c4bf20SJed Brown void *commp = 0; 103480cf27aSJed Brown ierr = MPI_Attr_get(obj->comm,Petsc_Counter_keyval,(void*)&counter,&flg);CHKERRQ(ierr); 104e32f2f54SBarry Smith if (!flg) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_CORRUPT,"Bad MPI communicator supplied; must be a PETSc communicator"); 105a2c4bf20SJed Brown ierr = PetscMemcpy(&commp,&obj->comm,PetscMin(sizeof(commp),sizeof(obj->comm)));CHKERRQ(ierr); 106a2c4bf20SJed Brown ierr = PetscSNPrintf(name,64,"%s_%p_%D",obj->class_name,commp,counter->namecount++);CHKERRQ(ierr); 107e5c89e4eSSatish Balay ierr = PetscStrallocpy(name,&obj->name);CHKERRQ(ierr); 108e5c89e4eSSatish Balay } 109e5c89e4eSSatish Balay PetscFunctionReturn(0); 110e5c89e4eSSatish Balay } 111e5c89e4eSSatish Balay 112e5c89e4eSSatish Balay 113e5c89e4eSSatish Balay 114e5c89e4eSSatish Balay #undef __FUNCT__ 115e5c89e4eSSatish Balay #define __FUNCT__ "PetscObjectChangeTypeName" 1168738c821SJed Brown PetscErrorCode PETSCSYS_DLLEXPORT PetscObjectChangeTypeName(PetscObject obj,const char type_name[]) 117e5c89e4eSSatish Balay { 118e5c89e4eSSatish Balay PetscErrorCode ierr; 119e5c89e4eSSatish Balay 120e5c89e4eSSatish Balay PetscFunctionBegin; 1213cfa8680SLisandro Dalcin PetscValidHeader(obj,1); 122e5c89e4eSSatish Balay ierr = PetscObjectTakeAccess(obj);CHKERRQ(ierr); 123503cfb0cSBarry Smith ierr = PetscFree(obj->type_name);CHKERRQ(ierr); 124e5c89e4eSSatish Balay ierr = PetscStrallocpy(type_name,&obj->type_name);CHKERRQ(ierr); 125e5c89e4eSSatish Balay ierr = PetscObjectGrantAccess(obj);CHKERRQ(ierr); 126e5c89e4eSSatish Balay PetscFunctionReturn(0); 127e5c89e4eSSatish Balay } 128e5c89e4eSSatish Balay 129