xref: /petsc/include/petscbag.h (revision 421e10b8f79bbed49dcc4e803c884835d979c6ea)
1 
2 #if !defined(__PETSCBAG_H)
3 #define __PETSCBAG_H
4 #include "petsc.h"
5 PETSC_EXTERN_CXX_BEGIN
6 
7 /*S
8      PetscBag - PETSc object that manages a collection of user data including parameters.
9            A bag is essentially a C struct with serialization (you can save it and load it from files).
10 
11    Level: beginner
12 
13     Sample Usage:
14 $      typedef struct {
15 $         PetscInt     height;
16 $         PetscScalar  root;
17 $         PetscReal    byebye;
18 $      } MyParameters;
19 $
20 $      PetscBag     bag;
21 $      MyParameters *params;
22 $
23 $      ierr = PetscBagCreate(PETSC_COMM_WORLD,sizeof(MyParameters),&bag);
24 $      ierr = PetscBagGetData(bag,(void **)&params);
25 $      ierr = PetscBagSetName(bag,"MyParameters");
26 $      ierr = PetscBagRegisterInt(bag,&params.height,22,"height","Height of the water tower");
27 $
28 
29 .seealso:  PetscBagSetName(), PetscBagGetName(), PetscBagView(), PetscBagLoad(), PetscBagGetData()
30            PetscBagRegisterReal(), PetscBagRegisterInt(), PetscBagRegisterTruth(), PetscBagRegisterScalar()
31            PetscBagSetFromOptions(), PetscBagRegisterVec(), PetscBagCreate(), PetscBagDestroy(), PetscBagRegisterEnum()
32 S*/
33 typedef struct _n_PetscBag*     PetscBag;
34 typedef struct _n_PetscBagItem* PetscBagItem;
35 
36 extern PetscErrorCode PetscBagCreate(MPI_Comm,size_t,PetscBag*);
37 extern PetscErrorCode PetscBagDestroy(PetscBag);
38 extern PetscErrorCode PetscBagGetData(PetscBag,void **);
39 extern PetscErrorCode PetscBagRegisterReal(PetscBag,void*,PetscReal, const char*, const char*);
40 extern PetscErrorCode PetscBagRegisterString(PetscBag,void*,PetscInt,const char*, const char*, const char*);
41 extern PetscErrorCode PetscBagRegisterScalar(PetscBag,void*,PetscScalar,const  char*,const  char*);
42 extern PetscErrorCode PetscBagRegisterInt(PetscBag,void*,PetscInt,const  char*,const  char*);
43 extern PetscErrorCode PetscBagRegisterEnum(PetscBag,void*,const  char*[],PetscEnum,const char*,const  char*);
44 extern PetscErrorCode PetscBagRegisterTruth(PetscBag,void*,PetscTruth,const  char*,const  char*);
45 
46 extern PetscErrorCode PetscBagSetFromOptions(PetscBag);
47 extern PetscErrorCode PetscBagGetName(PetscBag, char **name);
48 extern PetscErrorCode PetscBagSetName(PetscBag, const char *, const char *);
49 
50 extern PetscErrorCode PetscBagView(PetscBag,PetscViewer);
51 extern PetscErrorCode PetscBagLoad(PetscViewer,PetscBag*);
52 
53 extern PetscErrorCode PetscBagSetViewer(PetscBag,PetscErrorCode (*)(PetscBag,PetscViewer));
54 extern PetscErrorCode PetscBagSetLoader(PetscBag,PetscErrorCode (*)(PetscBag,PetscViewer));
55 extern PetscErrorCode PetscBagSetDestroy(PetscBag,PetscErrorCode (*)(PetscBag));
56 
57 PETSC_EXTERN_CXX_END
58 #endif
59