1 2 /* 3 Provides utility routines for manulating any type of PETSc object. 4 */ 5 #include <petsc/private/petscimpl.h> /*I "petscsys.h" I*/ 6 7 /*@C 8 PetscObjectGetType - Gets the object type of any PetscObject. 9 10 Not Collective 11 12 Input Parameter: 13 . obj - any PETSc object, for example a Vec, Mat or KSP. 14 Thus must be cast with a (PetscObject), for example, 15 PetscObjectGetType((PetscObject)mat,&type); 16 17 Output Parameter: 18 . type - the object type 19 20 Level: advanced 21 22 Concepts: object type 23 @*/ 24 PetscErrorCode PetscObjectGetType(PetscObject obj, const char *type[]) 25 { 26 PetscFunctionBegin; 27 PetscValidHeader(obj,1); 28 PetscValidPointer(type,2); 29 *type = obj->type_name; 30 PetscFunctionReturn(0); 31 } 32 33 /*@C 34 PetscObjectSetType - Sets the object type of any PetscObject. 35 36 Not Collective 37 38 Input Parameters: 39 + obj - any PETSc object, for example a Vec, Mat or KSP. 40 Thus must be cast with a (PetscObject), for example, 41 PetscObjectGetType((PetscObject)mat,&type); 42 - type - the object type 43 44 Note: This does not currently work since we need to dispatch by type. 45 46 Level: advanced 47 48 Concepts: object type 49 @*/ 50 PetscErrorCode PetscObjectSetType(PetscObject obj, const char type[]) 51 { 52 PetscFunctionBegin; 53 PetscValidHeader(obj,1); 54 PetscValidCharPointer(type,2); 55 SETERRQ(PETSC_COMM_SELF,PETSC_ERR_SUP, "Cannot set the type of a generic PetscObject"); 56 } 57