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,¶ms); 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