xref: /petsc/include/petscbag.h (revision 7c307921e16164bcabd288ffaae1e907d3e04a89)
1*7c307921SBarry Smith 
2*7c307921SBarry Smith #if !defined(__PETSCBAG_H)
3*7c307921SBarry Smith #define __PETSCBAG_H
4*7c307921SBarry Smith #include "petsc.h"
5*7c307921SBarry Smith PETSC_EXTERN_CXX_BEGIN
6*7c307921SBarry Smith 
7*7c307921SBarry Smith 
8*7c307921SBarry Smith /*S
9*7c307921SBarry Smith      PetscBag - PETSc object that manages a collection of user data including parameters.
10*7c307921SBarry Smith 
11*7c307921SBarry Smith    Level: beginner
12*7c307921SBarry Smith 
13*7c307921SBarry Smith     Sample Usage:
14*7c307921SBarry Smith $      typedef struct {
15*7c307921SBarry Smith $         PetscBag     bag;
16*7c307921SBarry Smith $         PetscInt     height;
17*7c307921SBarry Smith $         PetscScalar  root;
18*7c307921SBarry Smith $         PetscReal    byebye;
19*7c307921SBarry Smith $      } MyParameters;
20*7c307921SBarry Smith $
21*7c307921SBarry Smith $      MyParameters *params;
22*7c307921SBarry Smith $
23*7c307921SBarry Smith $      ierr = PetscBagCreate(MyParameters,&params);
24*7c307921SBarry Smith $      ierr = PetscBagSetName(params,"MyParameters");
25*7c307921SBarry Smith $      ierr = PetscBagRegisterInt(params,22,"height","Height of the water tower");
26*7c307921SBarry Smith $
27*7c307921SBarry Smith $
28*7c307921SBarry Smith $
29*7c307921SBarry Smith $
30*7c307921SBarry Smith $
31*7c307921SBarry Smith 
32*7c307921SBarry Smith .seealso:  PetscBagSetName(), PetscBagGetName(), PetscBagSetSize(), PetscBagView(), PetscBagLoad()
33*7c307921SBarry Smith            PetscBagRegisterReal(), PetscBagRegisterInt(), PetscBagRegisterTruth(), PetscBagRegisterScalar()
34*7c307921SBarry Smith            PetscBagSetFromOptions()
35*7c307921SBarry Smith S*/
36*7c307921SBarry Smith typedef struct {
37*7c307921SBarry Smith   size_t bagsize;
38*7c307921SBarry Smith   char*  bagname;
39*7c307921SBarry Smith } PetscBag;
40*7c307921SBarry Smith 
41*7c307921SBarry Smith #define PetscBagCreate(A,B)  PetscNew(A,B) || (*(B)->bagsize = sizeof(A),0)
42*7c307921SBarry Smith extern PetscErrorCode PetscBagDestroy(PetscBag*);
43*7c307921SBarry Smith 
44*7c307921SBarry Smith extern PetscErrorCode PetscBagSetName(PetscBag*,char*);
45*7c307921SBarry Smith extern PetscErrorCode PetscBagGetName(PetscBag*,char**);
46*7c307921SBarry Smith extern PetscErrorCode PetscBagSetSize(PetscBag*,size_t);
47*7c307921SBarry Smith 
48*7c307921SBarry Smith extern PetscErrorCode PetscBagRegisterReal(PetscBag*,PetscReal, char*, char*);
49*7c307921SBarry Smith extern PetscErrorCode PetscBagRegisterScalar(PetscBag*,PetscScalar, char*, char*);
50*7c307921SBarry Smith extern PetscErrorCode PetscBagRegisterInt(PetscBag*,PetscInt, char*, char*);
51*7c307921SBarry Smith extern PetscErrorCode PetscBagRegisterTruth(PetscBag*,PetscTruth, char*, char*);
52*7c307921SBarry Smith 
53*7c307921SBarry Smith extern PetscErrorCode PetscBagSetFromOptions(PetscBag*);
54*7c307921SBarry Smith 
55*7c307921SBarry Smith extern PetscErrorCode PetscBagView(PetscBag*,PetscViewer);
56*7c307921SBarry Smith extern PetscErrorCode PetscBagLoad(PetscViewer,PetscBag**);
57*7c307921SBarry Smith 
58*7c307921SBarry Smith extern PetscErrorCode PetscBagSetViewer(PetscBag*,PetscErrorCode (*)(PetscBag*,PetscViewer));
59*7c307921SBarry Smith extern PetscErrorCode PetscBagSetLoader(PetscBag*,PetscErrorCode (*)(PetscBag*,PetscViewer));
60*7c307921SBarry Smith extern PetscErrorCode PetscBagSetDestroy(PetscBag*,PetscErrorCode (*)(PetscBag*));
61*7c307921SBarry Smith 
62*7c307921SBarry Smith #endif
63