xref: /petsc/include/petscfvtypes.h (revision 26bd150190f26c623f12d3ed48c77abbffd51c93)
1*26bd1501SBarry Smith #if !defined(PETSCFVTYPES_H)
2*26bd1501SBarry Smith #define PETSCFVTYPES_H
3f62f30faSMatthew G. Knepley 
4f62f30faSMatthew G. Knepley /*S
5ab2453f0SMatthew G. Knepley   PetscLimiter - PETSc object that manages a finite volume slope limiter
6ab2453f0SMatthew G. Knepley 
7ab2453f0SMatthew G. Knepley   Level: intermediate
8ab2453f0SMatthew G. Knepley 
9ab2453f0SMatthew G. Knepley   Concepts: finite volume, limiter
10ab2453f0SMatthew G. Knepley 
11ab2453f0SMatthew G. Knepley .seealso: PetscLimiterCreate(), PetscLimiterSetType(), PetscLimiterType
12ab2453f0SMatthew G. Knepley S*/
13ab2453f0SMatthew G. Knepley typedef struct _p_PetscLimiter *PetscLimiter;
14ab2453f0SMatthew G. Knepley 
15ab2453f0SMatthew G. Knepley /*S
16f62f30faSMatthew G. Knepley   PetscFV - PETSc object that manages a finite volume discretization
17f62f30faSMatthew G. Knepley 
18f62f30faSMatthew G. Knepley   Level: intermediate
19f62f30faSMatthew G. Knepley 
20f62f30faSMatthew G. Knepley   Concepts: finite volume
21f62f30faSMatthew G. Knepley 
22f62f30faSMatthew G. Knepley .seealso: PetscFVCreate(), PetscFVSetType(), PetscFVType
23f62f30faSMatthew G. Knepley S*/
24f62f30faSMatthew G. Knepley typedef struct _p_PetscFV *PetscFV;
25f62f30faSMatthew G. Knepley 
26891a9168SMatthew G. Knepley /*S
27891a9168SMatthew G. Knepley   PetscFVFaceGeom - Data structure (C struct) for storing information about face geometry for a finite volume method.
28891a9168SMatthew G. Knepley 
29891a9168SMatthew G. Knepley   Level: beginner
30891a9168SMatthew G. Knepley 
31891a9168SMatthew G. Knepley   Note: The components are
32891a9168SMatthew G. Knepley $  PetscReal   normal[3]   - Area-scaled normals
33891a9168SMatthew G. Knepley $  PetscReal   centroid[3] - Location of centroid (quadrature point)
34891a9168SMatthew G. Knepley $  PetscScalar grad[2][3]  - Face contribution to gradient in left and right cell
35891a9168SMatthew G. Knepley 
36891a9168SMatthew G. Knepley   Concepts: finite volume; geometry; unstructured mesh
37891a9168SMatthew G. Knepley 
38891a9168SMatthew G. Knepley .seealso: DMPlexComputeGeometryFVM()
39891a9168SMatthew G. Knepley S*/
40523f37fcSMatthew G. Knepley typedef struct {
41523f37fcSMatthew G. Knepley   PetscReal   normal[3];   /* Area-scaled normals */
42523f37fcSMatthew G. Knepley   PetscReal   centroid[3]; /* Location of centroid (quadrature point) */
43523f37fcSMatthew G. Knepley   PetscScalar grad[2][3];  /* Face contribution to gradient in left and right cell */
44523f37fcSMatthew G. Knepley } PetscFVFaceGeom;
45523f37fcSMatthew G. Knepley 
46891a9168SMatthew G. Knepley /*S
47891a9168SMatthew G. Knepley   PetscFVCellGeom - Data structure (C struct) for storing information about cell geometry for a finite volume method.
48891a9168SMatthew G. Knepley 
49891a9168SMatthew G. Knepley   Level: beginner
50891a9168SMatthew G. Knepley 
51891a9168SMatthew G. Knepley   Note: The components are
52891a9168SMatthew G. Knepley $  PetscReal   centroid[3] - The cell centroid
53891a9168SMatthew G. Knepley $  PetscReal   volume      - The cell volume
54891a9168SMatthew G. Knepley 
55891a9168SMatthew G. Knepley   Concepts: finite volume; geometry; unstructured mesh
56891a9168SMatthew G. Knepley 
57891a9168SMatthew G. Knepley .seealso: DMPlexComputeGeometryFVM()
58891a9168SMatthew G. Knepley S*/
59523f37fcSMatthew G. Knepley typedef struct {
60523f37fcSMatthew G. Knepley   PetscReal centroid[3];
61523f37fcSMatthew G. Knepley   PetscReal volume;
62523f37fcSMatthew G. Knepley } PetscFVCellGeom;
63523f37fcSMatthew G. Knepley 
64f62f30faSMatthew G. Knepley #endif
65