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__ "PetscObjectPublishBaseBegin" 14 int PetscObjectPublishBaseBegin(PetscObject obj) 15 { 16 AMS_Memory amem; 17 AMS_Comm acomm; 18 PetscErrorCode ierr; 19 20 PetscFunctionBegin; 21 ierr = PetscObjectName(obj);CHKERRQ(ierr); 22 23 ierr = PetscViewerAMSGetAMSComm(PETSC_VIEWER_AMS_(obj->comm),&acomm);CHKERRQ(ierr); 24 ierr = AMS_Memory_create(acomm,obj->name,&amem);CHKERRQ(ierr); 25 obj->amem = (int)amem; 26 27 ierr = AMS_Memory_take_access(amem);CHKERRQ(ierr); 28 ierr = AMS_Memory_add_field(amem,"Class",&obj->class_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 29 ierr = AMS_Memory_add_field(amem,"Type",&obj->type_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 30 ierr = AMS_Memory_add_field(amem,"Id",&obj->id,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 31 ierr = AMS_Memory_add_field(amem,"ParentId",&obj->parentid,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 32 ierr = AMS_Memory_add_field(amem,"Name",&obj->name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 33 PetscFunctionReturn(0); 34 } 35 36 #undef __FUNCT__ 37 #define __FUNCT__ "PetscObjectPublishBaseEnd" 38 int PetscObjectPublishBaseEnd(PetscObject obj) 39 { 40 AMS_Memory amem = (AMS_Memory) obj->amem; 41 PetscErrorCode ierr; 42 43 PetscFunctionBegin; 44 45 if (amem < 0) SETERRQ(obj->comm,PETSC_ERR_ARG_WRONGSTATE,"Called without a call to PetscObjectPublishBaseBegin()"); 46 ierr = AMS_Memory_publish(amem);CHKERRQ(ierr); 47 ierr = AMS_Memory_grant_access(amem);CHKERRQ(ierr); 48 PetscFunctionReturn(0); 49 } 50 51