xref: /petsc/include/petscfvtypes.h (revision e6e75211d226c622f451867f53ce5d558649ff4f)
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 /*S
27   PetscFVFaceGeom - Data structure (C struct) for storing information about face geometry for a finite volume method.
28 
29   Level: beginner
30 
31   Note: The components are
32 $  PetscReal   normal[3]   - Area-scaled normals
33 $  PetscReal   centroid[3] - Location of centroid (quadrature point)
34 $  PetscScalar grad[2][3]  - Face contribution to gradient in left and right cell
35 
36   Concepts: finite volume; geometry; unstructured mesh
37 
38 .seealso: DMPlexComputeGeometryFVM()
39 S*/
40 typedef struct {
41   PetscReal   normal[3];   /* Area-scaled normals */
42   PetscReal   centroid[3]; /* Location of centroid (quadrature point) */
43   PetscScalar grad[2][3];  /* Face contribution to gradient in left and right cell */
44 } PetscFVFaceGeom;
45 
46 /*S
47   PetscFVCellGeom - Data structure (C struct) for storing information about cell geometry for a finite volume method.
48 
49   Level: beginner
50 
51   Note: The components are
52 $  PetscReal   centroid[3] - The cell centroid
53 $  PetscReal   volume      - The cell volume
54 
55   Concepts: finite volume; geometry; unstructured mesh
56 
57 .seealso: DMPlexComputeGeometryFVM()
58 S*/
59 typedef struct {
60   PetscReal centroid[3];
61   PetscReal volume;
62 } PetscFVCellGeom;
63 
64 #endif
65