xref: /petsc/include/petscfvtypes.h (revision fe998a80077c9ee0917a39496df43fc256e1b478)
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: intermediate
8 
9   Concepts: finite volume, limiter
10 
11 .seealso: PetscLimiterCreate(), PetscLimiterSetType(), PetscLimiterType
12 S*/
13 typedef struct _p_PetscLimiter *PetscLimiter;
14 
15 /*S
16   PetscFV - PETSc object that manages a finite volume discretization
17 
18   Level: intermediate
19 
20   Concepts: finite volume
21 
22 .seealso: PetscFVCreate(), PetscFVSetType(), PetscFVType
23 S*/
24 typedef struct _p_PetscFV *PetscFV;
25 
26 /* Assuming dim <= 3 */
27 typedef struct {
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 } PetscFVFaceGeom;
32 
33 typedef struct {
34   PetscReal centroid[3];
35   PetscReal volume;
36 } PetscFVCellGeom;
37 
38 #endif
39