xref: /petsc/include/petscfvtypes.h (revision 6d8694c4fbab79f9439f1ad13c0386ba7ee1ca4b)
1a4963045SJacob Faibussowitsch #pragma once
2f62f30faSMatthew G. Knepley 
3*ce78bad3SBarry Smith /* MANSEC = DM */
4ac09b921SBarry Smith /* SUBMANSEC = FV */
5ac09b921SBarry Smith 
6f62f30faSMatthew G. Knepley /*S
7ab2453f0SMatthew G. Knepley   PetscLimiter - PETSc object that manages a finite volume slope limiter
8ab2453f0SMatthew G. Knepley 
988f5f89eSMatthew G. Knepley   Level: beginner
10ab2453f0SMatthew G. Knepley 
11db781477SPatrick Sanan .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 
1888f5f89eSMatthew G. Knepley   Level: beginner
19f62f30faSMatthew G. Knepley 
20db781477SPatrick Sanan .seealso: `PetscFVCreate()`, `PetscFVSetType()`, `PetscFVType`
21f62f30faSMatthew G. Knepley S*/
22f62f30faSMatthew G. Knepley typedef struct _p_PetscFV *PetscFV;
23f62f30faSMatthew G. Knepley 
24891a9168SMatthew G. Knepley /*S
25891a9168SMatthew G. Knepley   PetscFVFaceGeom - Data structure (C struct) for storing information about face geometry for a finite volume method.
26891a9168SMatthew G. Knepley 
27891a9168SMatthew G. Knepley   Level: beginner
28891a9168SMatthew G. Knepley 
2916a05f60SBarry Smith   Note:
3016a05f60SBarry Smith   The components are
3116a05f60SBarry Smith .vb
3216a05f60SBarry Smith   PetscReal   normal[3]   - Area-scaled normals
3316a05f60SBarry Smith   PetscReal   centroid[3] - Location of centroid (quadrature point)
3416a05f60SBarry Smith   PetscScalar grad[2][3]  - Face contribution to gradient in left and right cell
3516a05f60SBarry Smith .ve
36891a9168SMatthew G. Knepley 
3716a05f60SBarry Smith .seealso: `PetscFVCellGeom`, `DMPlexComputeGeometryFVM()`
38891a9168SMatthew G. Knepley S*/
39523f37fcSMatthew G. Knepley typedef struct {
40523f37fcSMatthew G. Knepley   PetscReal   normal[3];   /* Area-scaled normals */
41523f37fcSMatthew G. Knepley   PetscReal   centroid[3]; /* Location of centroid (quadrature point) */
42523f37fcSMatthew G. Knepley   PetscScalar grad[2][3];  /* Face contribution to gradient in left and right cell */
43523f37fcSMatthew G. Knepley } PetscFVFaceGeom;
44523f37fcSMatthew G. Knepley 
45891a9168SMatthew G. Knepley /*S
46891a9168SMatthew G. Knepley   PetscFVCellGeom - Data structure (C struct) for storing information about cell geometry for a finite volume method.
47891a9168SMatthew G. Knepley 
48891a9168SMatthew G. Knepley   Level: beginner
49891a9168SMatthew G. Knepley 
50891a9168SMatthew G. Knepley   Note: The components are
5116a05f60SBarry Smith .vb
5216a05f60SBarry Smith    PetscReal   centroid[3] - The cell centroid
5316a05f60SBarry Smith    PetscReal   volume      - The cell volume
5416a05f60SBarry Smith .ve
55891a9168SMatthew G. Knepley 
5616a05f60SBarry Smith .seealso: `PetscFVFaceGeom`, `DMPlexComputeGeometryFVM()`
57891a9168SMatthew G. Knepley S*/
58523f37fcSMatthew G. Knepley typedef struct {
59523f37fcSMatthew G. Knepley   PetscReal centroid[3];
60523f37fcSMatthew G. Knepley   PetscReal volume;
61523f37fcSMatthew G. Knepley } PetscFVCellGeom;
62