xref: /petsc/include/petscbag.h (revision ac09b9214d23ea9ad238aa607de9fa447fd4e91b)
17c307921SBarry Smith 
226bd1501SBarry Smith #if !defined(PETSCBAG_H)
326bd1501SBarry Smith #define PETSCBAG_H
4*ac09b921SBarry Smith 
52c8e378dSBarry Smith #include <petscsys.h>
67c307921SBarry Smith 
7*ac09b921SBarry Smith /* SUBMANSEC = Sys */
8*ac09b921SBarry Smith 
97c307921SBarry Smith /*S
107c307921SBarry Smith      PetscBag - PETSc object that manages a collection of user data including parameters.
11f588057bSBarry Smith            A bag is essentially a C struct with serialization (you can save it and load it from files).
127c307921SBarry Smith 
137c307921SBarry Smith    Level: beginner
147c307921SBarry Smith 
157c307921SBarry Smith     Sample Usage:
167c307921SBarry Smith $      typedef struct {
177c307921SBarry Smith $         PetscInt     height;
187c307921SBarry Smith $         PetscScalar  root;
197c307921SBarry Smith $         PetscReal    byebye;
207c307921SBarry Smith $      } MyParameters;
217c307921SBarry Smith $
22b29011acSSatish Balay $      PetscBag     bag;
237c307921SBarry Smith $      MyParameters *params;
247c307921SBarry Smith $
259566063dSJacob Faibussowitsch $      PetscCall(PetscBagCreate(PETSC_COMM_WORLD,sizeof(MyParameters),&bag));
269566063dSJacob Faibussowitsch $      PetscCall(PetscBagGetData(bag,(void **)&params));
279566063dSJacob Faibussowitsch $      PetscCall(PetscBagSetName(bag,"MyParameters"));
289566063dSJacob Faibussowitsch $      PetscCall(PetscBagRegisterInt(bag,&params.height,22,"height","Height of the water tower"));
297c307921SBarry Smith $
307c307921SBarry Smith 
31db781477SPatrick Sanan .seealso: `PetscBagSetName()`, `PetscBagGetName()`, `PetscBagView()`, `PetscBagLoad()`, `PetscBagGetData()`
32db781477SPatrick Sanan           `PetscBagRegisterReal()`, `PetscBagRegisterInt()`, `PetscBagRegisterBool()`, `PetscBagRegisterScalar()`
33db781477SPatrick Sanan           `PetscBagSetFromOptions()`, `PetscBagRegisterVec()`, `PetscBagCreate()`, `PetscBagDestroy()`, `PetscBagRegisterEnum()`
347c307921SBarry Smith S*/
35b29011acSSatish Balay typedef struct _n_PetscBag*     PetscBag;
36b29011acSSatish Balay typedef struct _n_PetscBagItem* PetscBagItem;
37f588057bSBarry Smith 
38014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagCreate(MPI_Comm,size_t,PetscBag*);
39014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagDestroy(PetscBag*);
40014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagGetData(PetscBag,void **);
41014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterReal(PetscBag,void*,PetscReal, const char*, const char*);
42014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterRealArray(PetscBag,void*,PetscInt, const char*, const char*);
43014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterString(PetscBag,void*,PetscInt,const char*, const char*, const char*);
44014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterScalar(PetscBag,void*,PetscScalar,const  char*,const  char*);
45014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterInt(PetscBag,void*,PetscInt,const  char*,const  char*);
46bafee8b4SSatish Balay PETSC_EXTERN PetscErrorCode PetscBagRegisterInt64(PetscBag,void*,PetscInt64,const  char*,const  char*);
47014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterIntArray(PetscBag,void*,PetscInt,const  char*,const  char*);
48887c112dSJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterEnum(PetscBag,void*,const char*const*,PetscEnum,const char*,const  char*);
49014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterBool(PetscBag,void*,PetscBool ,const  char*,const  char*);
50dd66f111SBlaise Bourdin PETSC_EXTERN PetscErrorCode PetscBagRegisterBoolArray(PetscBag,void*,PetscInt,const  char*,const  char*);
51ffb7e86cSMatthew G. Knepley PETSC_EXTERN PetscErrorCode PetscBagGetNames(PetscBag, const char *[]);
52f588057bSBarry Smith 
53014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagSetFromOptions(PetscBag);
54014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagGetName(PetscBag, char **);
55014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagSetName(PetscBag, const char *, const char *);
56014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagSetOptionsPrefix(PetscBag, const char *);
578cbb96b3SSatish Balay 
58014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagView(PetscBag,PetscViewer);
59014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagLoad(PetscViewer,PetscBag);
60173f9484SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PetscBagViewFromOptions(PetscBag,PetscObject,const char[]);
61f588057bSBarry Smith 
62014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagSetViewer(PetscBag,PetscErrorCode (*)(PetscBag,PetscViewer));
63014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagSetLoader(PetscBag,PetscErrorCode (*)(PetscBag,PetscViewer));
64014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagSetDestroy(PetscBag,PetscErrorCode (*)(PetscBag));
657c307921SBarry Smith 
66bc2bf880SBarry Smith #define PETSC_BAG_FILE_CLASSID 1211219
67bc2bf880SBarry Smith 
687c307921SBarry Smith #endif
69