Actual source code: petscfv.h
petsc-3.11.4 2019-09-28
1: /*
2: Objects which encapsulate finite volume spaces and operations
3: */
4: #if !defined(PETSCFV_H)
5: #define PETSCFV_H
6: #include <petscdm.h>
7: #include <petscdt.h>
8: #include <petscfvtypes.h>
9: #include <petscdstypes.h>
11: PETSC_EXTERN PetscClassId PETSCLIMITER_CLASSID;
13: /*J
14: PetscLimiterType - String with the name of a PETSc finite volume slope limiter
16: Level: beginner
18: .seealso: PetscLimiterSetType(), PetscLimiter
19: J*/
20: typedef const char *PetscLimiterType;
21: #define PETSCLIMITERSIN "sin"
22: #define PETSCLIMITERZERO "zero"
23: #define PETSCLIMITERNONE "none"
24: #define PETSCLIMITERMINMOD "minmod"
25: #define PETSCLIMITERVANLEER "vanleer"
26: #define PETSCLIMITERVANALBADA "vanalbada"
27: #define PETSCLIMITERSUPERBEE "superbee"
28: #define PETSCLIMITERMC "mc"
30: PETSC_EXTERN PetscFunctionList PetscLimiterList;
31: PETSC_EXTERN PetscErrorCode PetscLimiterCreate(MPI_Comm, PetscLimiter *);
32: PETSC_EXTERN PetscErrorCode PetscLimiterDestroy(PetscLimiter *);
33: PETSC_EXTERN PetscErrorCode PetscLimiterSetType(PetscLimiter, PetscLimiterType);
34: PETSC_EXTERN PetscErrorCode PetscLimiterGetType(PetscLimiter, PetscLimiterType *);
35: PETSC_EXTERN PetscErrorCode PetscLimiterSetUp(PetscLimiter);
36: PETSC_EXTERN PetscErrorCode PetscLimiterSetFromOptions(PetscLimiter);
37: PETSC_STATIC_INLINE PetscErrorCode PetscLimiterViewFromOptions(PetscLimiter A,PetscObject B,const char name[]) {return PetscObjectViewFromOptions((PetscObject)A,B,name);}
38: PETSC_EXTERN PetscErrorCode PetscLimiterView(PetscLimiter, PetscViewer);
39: PETSC_EXTERN PetscErrorCode PetscLimiterRegister(const char [], PetscErrorCode (*)(PetscLimiter));
40: PETSC_EXTERN PetscErrorCode PetscLimiterRegisterDestroy(void);
42: PETSC_EXTERN PetscErrorCode PetscLimiterLimit(PetscLimiter, PetscReal, PetscReal *);
45: PETSC_EXTERN PetscErrorCode PetscFVInitializePackage(void);
47: PETSC_EXTERN PetscClassId PETSCFV_CLASSID;
49: /*J
50: PetscFVType - String with the name of a PETSc finite volume discretization
52: Level: beginner
54: .seealso: PetscFVSetType(), PetscFV
55: J*/
56: typedef const char *PetscFVType;
57: #define PETSCFVUPWIND "upwind"
58: #define PETSCFVLEASTSQUARES "leastsquares"
60: PETSC_EXTERN PetscFunctionList PetscFVList;
61: PETSC_EXTERN PetscErrorCode PetscFVCreate(MPI_Comm, PetscFV *);
62: PETSC_EXTERN PetscErrorCode PetscFVDestroy(PetscFV *);
63: PETSC_EXTERN PetscErrorCode PetscFVSetType(PetscFV, PetscFVType);
64: PETSC_EXTERN PetscErrorCode PetscFVGetType(PetscFV, PetscFVType *);
65: PETSC_EXTERN PetscErrorCode PetscFVSetUp(PetscFV);
66: PETSC_EXTERN PetscErrorCode PetscFVSetFromOptions(PetscFV);
67: PETSC_STATIC_INLINE PetscErrorCode PetscFVViewFromOptions(PetscFV A,PetscObject B,const char name[]) {return PetscObjectViewFromOptions((PetscObject)A,B,name);}
68: PETSC_EXTERN PetscErrorCode PetscFVView(PetscFV, PetscViewer);
69: PETSC_EXTERN PetscErrorCode PetscFVRegister(const char [], PetscErrorCode (*)(PetscFV));
70: PETSC_EXTERN PetscErrorCode PetscFVRegisterDestroy(void);
71: PETSC_EXTERN PetscErrorCode PetscFVSetComponentName(PetscFV, PetscInt, const char []);
72: PETSC_EXTERN PetscErrorCode PetscFVGetComponentName(PetscFV, PetscInt, const char *[]);
74: PETSC_EXTERN PetscErrorCode PetscFVSetLimiter(PetscFV, PetscLimiter);
75: PETSC_EXTERN PetscErrorCode PetscFVGetLimiter(PetscFV, PetscLimiter *);
76: PETSC_EXTERN PetscErrorCode PetscFVSetNumComponents(PetscFV, PetscInt);
77: PETSC_EXTERN PetscErrorCode PetscFVGetNumComponents(PetscFV, PetscInt *);
78: PETSC_EXTERN PetscErrorCode PetscFVSetSpatialDimension(PetscFV, PetscInt);
79: PETSC_EXTERN PetscErrorCode PetscFVGetSpatialDimension(PetscFV, PetscInt *);
80: PETSC_EXTERN PetscErrorCode PetscFVSetComputeGradients(PetscFV, PetscBool);
81: PETSC_EXTERN PetscErrorCode PetscFVGetComputeGradients(PetscFV, PetscBool *);
82: PETSC_EXTERN PetscErrorCode PetscFVSetQuadrature(PetscFV, PetscQuadrature);
83: PETSC_EXTERN PetscErrorCode PetscFVGetQuadrature(PetscFV, PetscQuadrature *);
84: PETSC_EXTERN PetscErrorCode PetscFVSetDualSpace(PetscFV, PetscDualSpace);
85: PETSC_EXTERN PetscErrorCode PetscFVGetDualSpace(PetscFV, PetscDualSpace *);
87: PETSC_EXTERN PetscErrorCode PetscFVRefine(PetscFV, PetscFV *);
89: PETSC_EXTERN PetscErrorCode PetscFVGetDefaultTabulation(PetscFV, PetscReal **, PetscReal **, PetscReal **);
90: PETSC_EXTERN PetscErrorCode PetscFVGetTabulation(PetscFV, PetscInt, const PetscReal[], PetscReal **, PetscReal **, PetscReal **);
91: PETSC_EXTERN PetscErrorCode PetscFVRestoreTabulation(PetscFV, PetscInt, const PetscReal[], PetscReal **, PetscReal **, PetscReal **);
93: PETSC_EXTERN PetscErrorCode PetscFVComputeGradient(PetscFV, PetscInt, PetscScalar[], PetscScalar[]);
94: PETSC_EXTERN PetscErrorCode PetscFVIntegrateRHSFunction(PetscFV, PetscDS, PetscInt, PetscInt, PetscFVFaceGeom *, PetscReal *, PetscScalar[], PetscScalar[], PetscScalar[], PetscScalar[]);
96: PETSC_EXTERN PetscErrorCode PetscFVLeastSquaresSetMaxFaces(PetscFV, PetscInt);
98: PETSC_EXTERN PetscErrorCode PetscDualSpaceApplyFVM(PetscDualSpace, PetscInt, PetscReal, PetscFVCellGeom *, PetscInt, PetscErrorCode (*)(PetscInt, PetscReal, const PetscReal [], PetscInt, PetscScalar *, void *), void *, PetscScalar *);
100: #endif