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 #undef __FUNCT__ 10*9fb22e1aSBarry Smith #define __FUNCT__ "PetscObjectAMSPublish" 11c457296dSBarry Smith /*@C 12*9fb22e1aSBarry Smith PetscObjectAMSPublish - Publish an object 13c457296dSBarry Smith 14c457296dSBarry Smith Collective on PetscObject 15c457296dSBarry Smith 16c457296dSBarry Smith Input Parameters: 17c457296dSBarry Smith . obj - the Petsc variable 18c457296dSBarry Smith Thus must be cast with a (PetscObject), for example, 19c457296dSBarry Smith PetscObjectSetName((PetscObject)mat,name); 20c457296dSBarry Smith 21*9fb22e1aSBarry Smith Notes: PetscViewer objects are not published 22*9fb22e1aSBarry Smith 23c457296dSBarry Smith Level: advanced 24c457296dSBarry Smith 25c457296dSBarry Smith Concepts: publishing object 26c457296dSBarry Smith 27*9fb22e1aSBarry Smith .seealso: PetscObjectSetName(), PetscObjectUnPublish() 28c457296dSBarry Smith 29c457296dSBarry Smith @*/ 30*9fb22e1aSBarry Smith PetscErrorCode PETSCSYS_DLLEXPORT PetscObjectAMSPublish(PetscObject obj) 31b3506946SBarry Smith { 32c457296dSBarry Smith PetscErrorCode ierr; 33b3506946SBarry Smith AMS_Memory amem; 34b3506946SBarry Smith AMS_Comm acomm; 35b3506946SBarry Smith 36b3506946SBarry Smith PetscFunctionBegin; 37c457296dSBarry Smith PetscValidHeader(obj,1); 38*9fb22e1aSBarry Smith if (obj->classid == PETSC_VIEWER_CLASSID) PetscFunctionReturn(0); 39d8501e9cSBarry Smith if (obj->amem != -1) PetscFunctionReturn(0); 40b3506946SBarry Smith ierr = PetscObjectName(obj);CHKERRQ(ierr); 41b3506946SBarry Smith 42b3506946SBarry Smith ierr = PetscViewerAMSGetAMSComm(PETSC_VIEWER_AMS_(obj->comm),&acomm);CHKERRQ(ierr); 43b3506946SBarry Smith ierr = AMS_Memory_create(acomm,obj->name,&amem);CHKERRQ(ierr); 44b3506946SBarry Smith obj->amem = (int)amem; 45b3506946SBarry Smith 46b3506946SBarry Smith ierr = AMS_Memory_take_access(amem);CHKERRQ(ierr); 47b3506946SBarry Smith ierr = AMS_Memory_add_field(amem,"Class",&obj->class_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 48b3506946SBarry Smith ierr = AMS_Memory_add_field(amem,"Type",&obj->type_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 49b3506946SBarry Smith ierr = AMS_Memory_add_field(amem,"Id",&obj->id,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 50b3506946SBarry Smith ierr = AMS_Memory_add_field(amem,"ParentId",&obj->parentid,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 51b3506946SBarry Smith ierr = AMS_Memory_add_field(amem,"Name",&obj->name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 52b3506946SBarry Smith ierr = AMS_Memory_publish(amem);CHKERRQ(ierr); 53b3506946SBarry Smith ierr = AMS_Memory_grant_access(amem);CHKERRQ(ierr); 54c457296dSBarry Smith 55c457296dSBarry Smith if (obj->bops->publish) { 56c457296dSBarry Smith ierr = (*obj->bops->publish)(obj);CHKERRQ(ierr); 57c457296dSBarry Smith } 58b3506946SBarry Smith PetscFunctionReturn(0); 59b3506946SBarry Smith } 60b3506946SBarry Smith 6192e62aa6SBarry Smith #undef __FUNCT__ 62c457296dSBarry Smith #define __FUNCT__ "PetscObjectUnPublish" 63c457296dSBarry Smith PetscErrorCode PetscObjectUnPublish(PetscObject obj) 6492e62aa6SBarry Smith { 6592e62aa6SBarry Smith AMS_Comm acomm; 6692e62aa6SBarry Smith PetscErrorCode ierr; 6792e62aa6SBarry Smith 6892e62aa6SBarry Smith PetscFunctionBegin; 69*9fb22e1aSBarry Smith if (obj->classid == PETSC_VIEWER_CLASSID) PetscFunctionReturn(0); 7069590be7SBarry Smith if (obj->amem == -1) PetscFunctionReturn(0); 7192e62aa6SBarry Smith ierr = PetscViewerAMSGetAMSComm(PETSC_VIEWER_AMS_(obj->comm),&acomm);CHKERRQ(ierr); 7292e62aa6SBarry Smith ierr = AMS_Memory_destroy(obj->amem);CHKERRQ(ierr); 73d8501e9cSBarry Smith obj->amem = -1; 7492e62aa6SBarry Smith PetscFunctionReturn(0); 7592e62aa6SBarry Smith } 7692e62aa6SBarry Smith 77