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