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