1*a4963045SJacob Faibussowitsch #pragma once 2ac09b921SBarry Smith 32c8e378dSBarry Smith #include <petscsys.h> 47c307921SBarry Smith 5ac09b921SBarry Smith /* SUBMANSEC = Sys */ 6ac09b921SBarry Smith 77c307921SBarry Smith /*S 87c307921SBarry Smith PetscBag - PETSc object that manages a collection of user data including parameters. 9f588057bSBarry Smith A bag is essentially a C struct with serialization (you can save it and load it from files). 107c307921SBarry Smith 117c307921SBarry Smith Level: beginner 127c307921SBarry Smith 137c307921SBarry Smith Sample Usage: 1487497f52SBarry Smith .vb 1587497f52SBarry Smith typedef struct { 1687497f52SBarry Smith PetscInt height; 1787497f52SBarry Smith PetscScalar root; 1887497f52SBarry Smith PetscReal byebye; 1987497f52SBarry Smith } MyParameters; 2087497f52SBarry Smith 2187497f52SBarry Smith PetscBag bag; 2287497f52SBarry Smith MyParameters *params; 2387497f52SBarry Smith 2487497f52SBarry Smith PetscCall(PetscBagCreate(PETSC_COMM_WORLD,sizeof(MyParameters),&bag)); 2587497f52SBarry Smith PetscCall(PetscBagGetData(bag,(void **)¶ms)); 2687497f52SBarry Smith PetscCall(PetscBagSetName(bag,"MyParameters")); 2787497f52SBarry Smith PetscCall(PetscBagRegisterInt(bag,¶ms.height,22,"height","Height of the water tower")); 2887497f52SBarry Smith .ve 297c307921SBarry Smith 30db781477SPatrick Sanan .seealso: `PetscBagSetName()`, `PetscBagGetName()`, `PetscBagView()`, `PetscBagLoad()`, `PetscBagGetData()` 31db781477SPatrick Sanan `PetscBagRegisterReal()`, `PetscBagRegisterInt()`, `PetscBagRegisterBool()`, `PetscBagRegisterScalar()` 32db781477SPatrick Sanan `PetscBagSetFromOptions()`, `PetscBagRegisterVec()`, `PetscBagCreate()`, `PetscBagDestroy()`, `PetscBagRegisterEnum()` 337c307921SBarry Smith S*/ 34b29011acSSatish Balay typedef struct _n_PetscBag *PetscBag; 35b29011acSSatish Balay typedef struct _n_PetscBagItem *PetscBagItem; 36f588057bSBarry Smith 37014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagCreate(MPI_Comm, size_t, PetscBag *); 38014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagDestroy(PetscBag *); 39014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagGetData(PetscBag, void **); 40014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterReal(PetscBag, void *, PetscReal, const char *, const char *); 41014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterRealArray(PetscBag, void *, PetscInt, const char *, const char *); 42014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterString(PetscBag, void *, PetscInt, const char *, const char *, const char *); 43014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterScalar(PetscBag, void *, PetscScalar, const char *, const char *); 44014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterInt(PetscBag, void *, PetscInt, const char *, const char *); 45bafee8b4SSatish Balay PETSC_EXTERN PetscErrorCode PetscBagRegisterInt64(PetscBag, void *, PetscInt64, const char *, const char *); 46014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterIntArray(PetscBag, void *, PetscInt, const char *, const char *); 47887c112dSJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterEnum(PetscBag, void *, const char *const *, PetscEnum, const char *, const char *); 48014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterBool(PetscBag, void *, PetscBool, const char *, const char *); 49dd66f111SBlaise Bourdin PETSC_EXTERN PetscErrorCode PetscBagRegisterBoolArray(PetscBag, void *, PetscInt, const char *, const char *); 50ffb7e86cSMatthew G. Knepley PETSC_EXTERN PetscErrorCode PetscBagGetNames(PetscBag, const char *[]); 51f588057bSBarry Smith 52014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagSetFromOptions(PetscBag); 53014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagGetName(PetscBag, char **); 54014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagSetName(PetscBag, const char *, const char *); 55014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagSetOptionsPrefix(PetscBag, const char *); 568cbb96b3SSatish Balay 57014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagView(PetscBag, PetscViewer); 58014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagLoad(PetscViewer, PetscBag); 59173f9484SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PetscBagViewFromOptions(PetscBag, PetscObject, const char[]); 60f588057bSBarry Smith 61bc2bf880SBarry Smith #define PETSC_BAG_FILE_CLASSID 1211219 62