1: #ifndef PETSCFVTYPES_H
2: #define PETSCFVTYPES_H
4: /* SUBMANSEC = FV */
6: /*S
7: PetscLimiter - PETSc object that manages a finite volume slope limiter
9: Level: beginner
11: .seealso: `PetscLimiterCreate()`, `PetscLimiterSetType()`, `PetscLimiterType`
12: S*/
13: typedef struct _p_PetscLimiter *PetscLimiter;
15: /*S
16: PetscFV - PETSc object that manages a finite volume discretization
18: Level: beginner
20: .seealso: `PetscFVCreate()`, `PetscFVSetType()`, `PetscFVType`
21: S*/
22: typedef struct _p_PetscFV *PetscFV;
24: /*S
25: PetscFVFaceGeom - Data structure (C struct) for storing information about face geometry for a finite volume method.
27: Level: beginner
29: Note: The components are
30: $ PetscReal normal[3] - Area-scaled normals
31: $ PetscReal centroid[3] - Location of centroid (quadrature point)
32: $ PetscScalar grad[2][3] - Face contribution to gradient in left and right cell
34: .seealso: `DMPlexComputeGeometryFVM()`
35: S*/
36: typedef struct {
37: PetscReal normal[3]; /* Area-scaled normals */
38: PetscReal centroid[3]; /* Location of centroid (quadrature point) */
39: PetscScalar grad[2][3]; /* Face contribution to gradient in left and right cell */
40: } PetscFVFaceGeom;
42: /*S
43: PetscFVCellGeom - Data structure (C struct) for storing information about cell geometry for a finite volume method.
45: Level: beginner
47: Note: The components are
48: $ PetscReal centroid[3] - The cell centroid
49: $ PetscReal volume - The cell volume
51: .seealso: `DMPlexComputeGeometryFVM()`
52: S*/
53: typedef struct {
54: PetscReal centroid[3];
55: PetscReal volume;
56: } PetscFVCellGeom;
58: #endif