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 /* 10 Publishes the common header part of any PETSc object to the AMS 11 */ 12 #undef __FUNCT__ 13 #define __FUNCT__ "PetscObjectPublishBase" 14 int PetscObjectPublishBase(PetscObject obj) 15 { 16 AMS_Memory amem; 17 AMS_Comm acomm; 18 PetscErrorCode ierr; 19 20 PetscFunctionBegin; 21 if (obj->amem != -1) PetscFunctionReturn(0); 22 ierr = PetscObjectName(obj);CHKERRQ(ierr); 23 24 ierr = PetscViewerAMSGetAMSComm(PETSC_VIEWER_AMS_(obj->comm),&acomm);CHKERRQ(ierr); 25 ierr = AMS_Memory_create(acomm,obj->name,&amem);CHKERRQ(ierr); 26 obj->amem = (int)amem; 27 28 ierr = AMS_Memory_take_access(amem);CHKERRQ(ierr); 29 ierr = AMS_Memory_add_field(amem,"Class",&obj->class_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 30 ierr = AMS_Memory_add_field(amem,"Type",&obj->type_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 31 ierr = AMS_Memory_add_field(amem,"Id",&obj->id,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 32 ierr = AMS_Memory_add_field(amem,"ParentId",&obj->parentid,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 33 ierr = AMS_Memory_add_field(amem,"Name",&obj->name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 34 ierr = AMS_Memory_publish(amem);CHKERRQ(ierr); 35 ierr = AMS_Memory_grant_access(amem);CHKERRQ(ierr); 36 PetscFunctionReturn(0); 37 } 38 39 #undef __FUNCT__ 40 #define __FUNCT__ "PetscObjectPublishBaseDestroy" 41 int PetscObjectPublishBaseDestroy(PetscObject obj) 42 { 43 AMS_Comm acomm; 44 PetscErrorCode ierr; 45 46 PetscFunctionBegin; 47 ierr = PetscViewerAMSGetAMSComm(PETSC_VIEWER_AMS_(obj->comm),&acomm);CHKERRQ(ierr); 48 ierr = AMS_Memory_destroy(obj->amem);CHKERRQ(ierr); 49 obj->amem = -1; 50 PetscFunctionReturn(0); 51 } 52 53