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