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