1a4963045SJacob Faibussowitsch #pragma once 2ac09b921SBarry Smith 32c8e378dSBarry Smith #include <petscsys.h> 47c307921SBarry Smith 5ce78bad3SBarry Smith /* MANSEC = Sys */ 6ce78bad3SBarry Smith /* SUBMANSEC = Bag */ 7ac09b921SBarry Smith 87c307921SBarry Smith /*S 97c307921SBarry Smith PetscBag - PETSc object that manages a collection of user data including parameters. 10f588057bSBarry Smith A bag is essentially a C struct with serialization (you can save it and load it from files). 117c307921SBarry Smith 127c307921SBarry Smith Level: beginner 137c307921SBarry Smith 147c307921SBarry Smith Sample Usage: 1587497f52SBarry Smith .vb 1687497f52SBarry Smith typedef struct { 1787497f52SBarry Smith PetscInt height; 1887497f52SBarry Smith PetscScalar root; 1987497f52SBarry Smith PetscReal byebye; 2087497f52SBarry Smith } MyParameters; 2187497f52SBarry Smith 2287497f52SBarry Smith PetscBag bag; 2387497f52SBarry Smith MyParameters *params; 2487497f52SBarry Smith 2587497f52SBarry Smith PetscCall(PetscBagCreate(PETSC_COMM_WORLD,sizeof(MyParameters),&bag)); 26*2a8381b2SBarry Smith PetscCall(PetscBagGetData(bag,¶ms)); 2787497f52SBarry Smith PetscCall(PetscBagSetName(bag,"MyParameters")); 2887497f52SBarry Smith PetscCall(PetscBagRegisterInt(bag,¶ms.height,22,"height","Height of the water tower")); 2987497f52SBarry Smith .ve 305d83a8b1SBarry Smith Note: 315d83a8b1SBarry Smith `PetscBag` is a C struct, it is not a `PetscObject` 327c307921SBarry Smith 33db781477SPatrick Sanan .seealso: `PetscBagSetName()`, `PetscBagGetName()`, `PetscBagView()`, `PetscBagLoad()`, `PetscBagGetData()` 34db781477SPatrick Sanan `PetscBagRegisterReal()`, `PetscBagRegisterInt()`, `PetscBagRegisterBool()`, `PetscBagRegisterScalar()` 35db781477SPatrick Sanan `PetscBagSetFromOptions()`, `PetscBagRegisterVec()`, `PetscBagCreate()`, `PetscBagDestroy()`, `PetscBagRegisterEnum()` 367c307921SBarry Smith S*/ 37b29011acSSatish Balay typedef struct _n_PetscBag *PetscBag; 38b29011acSSatish Balay typedef struct _n_PetscBagItem *PetscBagItem; 39f588057bSBarry Smith 40014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagCreate(MPI_Comm, size_t, PetscBag *); 41014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagDestroy(PetscBag *); 42*2a8381b2SBarry Smith PETSC_EXTERN PetscErrorCode PetscBagGetData(PetscBag, PetscCtxRt); 43014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterReal(PetscBag, void *, PetscReal, const char *, const char *); 44014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterRealArray(PetscBag, void *, PetscInt, const char *, const char *); 45014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterString(PetscBag, void *, PetscInt, const char *, const char *, const char *); 46014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterScalar(PetscBag, void *, PetscScalar, const char *, const char *); 47014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterInt(PetscBag, void *, PetscInt, const char *, const char *); 48bafee8b4SSatish Balay PETSC_EXTERN PetscErrorCode PetscBagRegisterInt64(PetscBag, void *, PetscInt64, const char *, const char *); 49014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterIntArray(PetscBag, void *, PetscInt, const char *, const char *); 50887c112dSJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterEnum(PetscBag, void *, const char *const *, PetscEnum, const char *, const char *); 51014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagRegisterBool(PetscBag, void *, PetscBool, const char *, const char *); 52dd66f111SBlaise Bourdin PETSC_EXTERN PetscErrorCode PetscBagRegisterBoolArray(PetscBag, void *, PetscInt, const char *, const char *); 53ffb7e86cSMatthew G. Knepley PETSC_EXTERN PetscErrorCode PetscBagGetNames(PetscBag, const char *[]); 54f588057bSBarry Smith 55014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagSetFromOptions(PetscBag); 56cc4c1da9SBarry Smith PETSC_EXTERN PetscErrorCode PetscBagGetName(PetscBag, const char **); 57014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagSetName(PetscBag, const char *, const char *); 58014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagSetOptionsPrefix(PetscBag, const char *); 598cbb96b3SSatish Balay 60014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagView(PetscBag, PetscViewer); 61014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscBagLoad(PetscViewer, PetscBag); 62173f9484SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PetscBagViewFromOptions(PetscBag, PetscObject, const char[]); 63f588057bSBarry Smith 64bc2bf880SBarry Smith #define PETSC_BAG_FILE_CLASSID 1211219 65