xref: /petsc/src/sys/objects/pname.c (revision e32f2f54e699d0aa6e733466c00da7e34666fe5e)
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