xref: /petsc/include/petscfvtypes.h (revision 6d8694c4fbab79f9439f1ad13c0386ba7ee1ca4b)
1 #pragma once
2 
3 /* MANSEC = DM */
4 /* SUBMANSEC = FV */
5 
6 /*S
7   PetscLimiter - PETSc object that manages a finite volume slope limiter
8 
9   Level: beginner
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: beginner
19 
20 .seealso: `PetscFVCreate()`, `PetscFVSetType()`, `PetscFVType`
21 S*/
22 typedef struct _p_PetscFV *PetscFV;
23 
24 /*S
25   PetscFVFaceGeom - Data structure (C struct) for storing information about face geometry for a finite volume method.
26 
27   Level: beginner
28 
29   Note:
30   The components are
31 .vb
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 .ve
36 
37 .seealso: `PetscFVCellGeom`, `DMPlexComputeGeometryFVM()`
38 S*/
39 typedef struct {
40   PetscReal   normal[3];   /* Area-scaled normals */
41   PetscReal   centroid[3]; /* Location of centroid (quadrature point) */
42   PetscScalar grad[2][3];  /* Face contribution to gradient in left and right cell */
43 } PetscFVFaceGeom;
44 
45 /*S
46   PetscFVCellGeom - Data structure (C struct) for storing information about cell geometry for a finite volume method.
47 
48   Level: beginner
49 
50   Note: The components are
51 .vb
52    PetscReal   centroid[3] - The cell centroid
53    PetscReal   volume      - The cell volume
54 .ve
55 
56 .seealso: `PetscFVFaceGeom`, `DMPlexComputeGeometryFVM()`
57 S*/
58 typedef struct {
59   PetscReal centroid[3];
60   PetscReal volume;
61 } PetscFVCellGeom;
62