1 2 #include "petscsys.h" /*I "petscsys.h" I*/ 3 4 /* 5 If true then every PETSc object will be published with the AMS 6 */ 7 PetscTruth PetscAMSPublishAll; 8 9 #undef __FUNCT__ 10 #define __FUNCT__ "PetscObjectPublish" 11 /*@C 12 PetscObjectPublish - Publish an object 13 14 Collective on PetscObject 15 16 Input Parameters: 17 . obj - the Petsc variable 18 Thus must be cast with a (PetscObject), for example, 19 PetscObjectSetName((PetscObject)mat,name); 20 21 Level: advanced 22 23 Concepts: publishing object 24 25 .seealso: PetscObjectSetName() 26 27 @*/ 28 PetscErrorCode PETSCSYS_DLLEXPORT PetscObjectPublish(PetscObject obj) 29 { 30 PetscErrorCode ierr; 31 AMS_Memory amem; 32 AMS_Comm acomm; 33 34 PetscFunctionBegin; 35 PetscValidHeader(obj,1); 36 if (obj->amem != -1) PetscFunctionReturn(0); 37 ierr = PetscObjectName(obj);CHKERRQ(ierr); 38 39 ierr = PetscViewerAMSGetAMSComm(PETSC_VIEWER_AMS_(obj->comm),&acomm);CHKERRQ(ierr); 40 ierr = AMS_Memory_create(acomm,obj->name,&amem);CHKERRQ(ierr); 41 obj->amem = (int)amem; 42 43 ierr = AMS_Memory_take_access(amem);CHKERRQ(ierr); 44 ierr = AMS_Memory_add_field(amem,"Class",&obj->class_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 45 ierr = AMS_Memory_add_field(amem,"Type",&obj->type_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 46 ierr = AMS_Memory_add_field(amem,"Id",&obj->id,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 47 ierr = AMS_Memory_add_field(amem,"ParentId",&obj->parentid,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 48 ierr = AMS_Memory_add_field(amem,"Name",&obj->name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 49 ierr = AMS_Memory_publish(amem);CHKERRQ(ierr); 50 ierr = AMS_Memory_grant_access(amem);CHKERRQ(ierr); 51 52 if (obj->bops->publish) { 53 ierr = (*obj->bops->publish)(obj);CHKERRQ(ierr); 54 } 55 PetscFunctionReturn(0); 56 } 57 58 #undef __FUNCT__ 59 #define __FUNCT__ "PetscObjectUnPublish" 60 PetscErrorCode PetscObjectUnPublish(PetscObject obj) 61 { 62 AMS_Comm acomm; 63 PetscErrorCode ierr; 64 65 PetscFunctionBegin; 66 if (obj->amem == -1) PetscFunctionReturn(0); 67 ierr = PetscViewerAMSGetAMSComm(PETSC_VIEWER_AMS_(obj->comm),&acomm);CHKERRQ(ierr); 68 ierr = AMS_Memory_destroy(obj->amem);CHKERRQ(ierr); 69 obj->amem = -1; 70 PetscFunctionReturn(0); 71 } 72 73