1b3506946SBarry Smith 2b3506946SBarry Smith #include "petscsys.h" /*I "petscsys.h" I*/ 3b3506946SBarry Smith 4b3506946SBarry Smith /* 5b3506946SBarry Smith If true then every PETSc object will be published with the AMS 6b3506946SBarry Smith */ 7b3506946SBarry Smith PetscTruth PetscAMSPublishAll; 8b3506946SBarry Smith 9b3506946SBarry Smith /* 10b3506946SBarry Smith Publishes the common header part of any PETSc object to the AMS 11b3506946SBarry Smith */ 12b3506946SBarry Smith #undef __FUNCT__ 13b3506946SBarry Smith #define __FUNCT__ "PetscObjectPublishBaseBegin" 14b3506946SBarry Smith int PetscObjectPublishBaseBegin(PetscObject obj) 15b3506946SBarry Smith { 16b3506946SBarry Smith AMS_Memory amem; 17b3506946SBarry Smith AMS_Comm acomm; 18b3506946SBarry Smith PetscErrorCode ierr; 19b3506946SBarry Smith 20b3506946SBarry Smith PetscFunctionBegin; 21b3506946SBarry Smith ierr = PetscObjectName(obj);CHKERRQ(ierr); 22b3506946SBarry Smith 23b3506946SBarry Smith ierr = PetscViewerAMSGetAMSComm(PETSC_VIEWER_AMS_(obj->comm),&acomm);CHKERRQ(ierr); 24b3506946SBarry Smith ierr = AMS_Memory_create(acomm,obj->name,&amem);CHKERRQ(ierr); 25b3506946SBarry Smith obj->amem = (int)amem; 26b3506946SBarry Smith 27b3506946SBarry Smith ierr = AMS_Memory_take_access(amem);CHKERRQ(ierr); 28b3506946SBarry Smith ierr = AMS_Memory_add_field(amem,"Class",&obj->class_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 29b3506946SBarry Smith ierr = AMS_Memory_add_field(amem,"Type",&obj->type_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 30b3506946SBarry Smith ierr = AMS_Memory_add_field(amem,"Id",&obj->id,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 31b3506946SBarry Smith ierr = AMS_Memory_add_field(amem,"ParentId",&obj->parentid,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 32b3506946SBarry Smith ierr = AMS_Memory_add_field(amem,"Name",&obj->name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 33b3506946SBarry Smith PetscFunctionReturn(0); 34b3506946SBarry Smith } 35b3506946SBarry Smith 36*92e62aa6SBarry Smith 37b3506946SBarry Smith #undef __FUNCT__ 38b3506946SBarry Smith #define __FUNCT__ "PetscObjectPublishBaseEnd" 39b3506946SBarry Smith int PetscObjectPublishBaseEnd(PetscObject obj) 40b3506946SBarry Smith { 41b3506946SBarry Smith AMS_Memory amem = (AMS_Memory) obj->amem; 42b3506946SBarry Smith PetscErrorCode ierr; 43b3506946SBarry Smith 44b3506946SBarry Smith PetscFunctionBegin; 45b3506946SBarry Smith if (amem < 0) SETERRQ(obj->comm,PETSC_ERR_ARG_WRONGSTATE,"Called without a call to PetscObjectPublishBaseBegin()"); 46b3506946SBarry Smith ierr = AMS_Memory_publish(amem);CHKERRQ(ierr); 47b3506946SBarry Smith ierr = AMS_Memory_grant_access(amem);CHKERRQ(ierr); 48b3506946SBarry Smith PetscFunctionReturn(0); 49b3506946SBarry Smith } 50b3506946SBarry Smith 51*92e62aa6SBarry Smith #undef __FUNCT__ 52*92e62aa6SBarry Smith #define __FUNCT__ "PetscObjectPublishBaseDestroy" 53*92e62aa6SBarry Smith int PetscObjectPublishBaseDestroy(PetscObject obj) 54*92e62aa6SBarry Smith { 55*92e62aa6SBarry Smith AMS_Comm acomm; 56*92e62aa6SBarry Smith PetscErrorCode ierr; 57*92e62aa6SBarry Smith 58*92e62aa6SBarry Smith PetscFunctionBegin; 59*92e62aa6SBarry Smith ierr = PetscViewerAMSGetAMSComm(PETSC_VIEWER_AMS_(obj->comm),&acomm);CHKERRQ(ierr); 60*92e62aa6SBarry Smith ierr = AMS_Memory_destroy(obj->amem);CHKERRQ(ierr); 61*92e62aa6SBarry Smith PetscFunctionReturn(0); 62*92e62aa6SBarry Smith } 63*92e62aa6SBarry Smith 64