xref: /petsc/src/sys/ams/pams.c (revision b35069460922d961ba8e1d6962339587123d7b53)
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