xref: /petsc/include/petscbag.h (revision 193ac0bc5128976c4ec2c1a67f3f9cb026b77f22)
1 
2 #if !defined(__PETSCBAG_H)
3 #define __PETSCBAG_H
4 #include "petscsys.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(), PetscBagRegisterBool(), 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  PetscBagRegisterBool(PetscBag,void*,PetscBool ,const  char*,const  char*);
45 
46 extern PetscErrorCode  PetscBagSetFromOptions(PetscBag);
47 extern PetscErrorCode  PetscBagGetName(PetscBag, char **);
48 extern PetscErrorCode  PetscBagSetName(PetscBag, const char *, const char *);
49 extern PetscErrorCode  PetscBagSetOptionsPrefix(PetscBag, const char *);
50 
51 extern PetscErrorCode  PetscBagView(PetscBag,PetscViewer);
52 extern PetscErrorCode  PetscBagLoad(PetscViewer,PetscBag*);
53 
54 extern PetscErrorCode  PetscBagSetViewer(PetscBag,PetscErrorCode (*)(PetscBag,PetscViewer));
55 extern PetscErrorCode  PetscBagSetLoader(PetscBag,PetscErrorCode (*)(PetscBag,PetscViewer));
56 extern PetscErrorCode  PetscBagSetDestroy(PetscBag,PetscErrorCode (*)(PetscBag));
57 
58 PETSC_EXTERN_CXX_END
59 #endif
60