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