xref: /petsc/src/sys/ams/pams.c (revision dfb205c343fb801ef223ce0215bc23136b0dce1d)
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__ "PetscObjectPublishBaseBegin"
14 int PetscObjectPublishBaseBegin(PetscObject obj)
15 {
16   AMS_Memory     amem;
17   AMS_Comm       acomm;
18   PetscErrorCode ierr;
19 
20   PetscFunctionBegin;
21   ierr = PetscObjectName(obj);CHKERRQ(ierr);
22 
23   ierr      = PetscViewerAMSGetAMSComm(PETSC_VIEWER_AMS_(obj->comm),&acomm);CHKERRQ(ierr);
24   ierr      = AMS_Memory_create(acomm,obj->name,&amem);CHKERRQ(ierr);
25   obj->amem = (int)amem;
26 
27   ierr = AMS_Memory_take_access(amem);CHKERRQ(ierr);
28   ierr = AMS_Memory_add_field(amem,"Class",&obj->class_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr);
29   ierr = AMS_Memory_add_field(amem,"Type",&obj->type_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr);
30   ierr = AMS_Memory_add_field(amem,"Id",&obj->id,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr);
31   ierr = AMS_Memory_add_field(amem,"ParentId",&obj->parentid,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr);
32   ierr = AMS_Memory_add_field(amem,"Name",&obj->name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr);
33   PetscFunctionReturn(0);
34 }
35 
36 
37 #undef __FUNCT__
38 #define __FUNCT__ "PetscObjectPublishBaseEnd"
39 int PetscObjectPublishBaseEnd(PetscObject obj)
40 {
41   AMS_Memory     amem = (AMS_Memory) obj->amem;
42   PetscErrorCode ierr;
43 
44   PetscFunctionBegin;
45   if (amem < 0) SETERRQ(obj->comm,PETSC_ERR_ARG_WRONGSTATE,"Called without a call to PetscObjectPublishBaseBegin()");
46   ierr = AMS_Memory_publish(amem);CHKERRQ(ierr);
47   ierr = AMS_Memory_grant_access(amem);CHKERRQ(ierr);
48   PetscFunctionReturn(0);
49 }
50 
51 #undef __FUNCT__
52 #define __FUNCT__ "PetscObjectPublishBaseDestroy"
53 int PetscObjectPublishBaseDestroy(PetscObject obj)
54 {
55   AMS_Comm       acomm;
56   PetscErrorCode ierr;
57 
58   PetscFunctionBegin;
59   ierr      = PetscViewerAMSGetAMSComm(PETSC_VIEWER_AMS_(obj->comm),&acomm);CHKERRQ(ierr);
60   ierr      = AMS_Memory_destroy(obj->amem);CHKERRQ(ierr);
61   PetscFunctionReturn(0);
62 }
63 
64