Actual source code: petscfvtypes.h

  1: #ifndef PETSCFVTYPES_H
  2: #define PETSCFVTYPES_H

  4: /* SUBMANSEC = FV */

  6: /*S
  7:   PetscLimiter - PETSc object that manages a finite volume slope limiter

  9:   Level: beginner

 11: .seealso: `PetscLimiterCreate()`, `PetscLimiterSetType()`, `PetscLimiterType`
 12: S*/
 13: typedef struct _p_PetscLimiter *PetscLimiter;

 15: /*S
 16:   PetscFV - PETSc object that manages a finite volume discretization

 18:   Level: beginner

 20: .seealso: `PetscFVCreate()`, `PetscFVSetType()`, `PetscFVType`
 21: S*/
 22: typedef struct _p_PetscFV *PetscFV;

 24: /*S
 25:   PetscFVFaceGeom - Data structure (C struct) for storing information about face geometry for a finite volume method.

 27:   Level: beginner

 29:   Note: The components are
 30: $  PetscReal   normal[3]   - Area-scaled normals
 31: $  PetscReal   centroid[3] - Location of centroid (quadrature point)
 32: $  PetscScalar grad[2][3]  - Face contribution to gradient in left and right cell

 34: .seealso: `DMPlexComputeGeometryFVM()`
 35: S*/
 36: typedef struct {
 37:   PetscReal   normal[3];   /* Area-scaled normals */
 38:   PetscReal   centroid[3]; /* Location of centroid (quadrature point) */
 39:   PetscScalar grad[2][3];  /* Face contribution to gradient in left and right cell */
 40: } PetscFVFaceGeom;

 42: /*S
 43:   PetscFVCellGeom - Data structure (C struct) for storing information about cell geometry for a finite volume method.

 45:   Level: beginner

 47:   Note: The components are
 48: $  PetscReal   centroid[3] - The cell centroid
 49: $  PetscReal   volume      - The cell volume

 51: .seealso: `DMPlexComputeGeometryFVM()`
 52: S*/
 53: typedef struct {
 54:   PetscReal centroid[3];
 55:   PetscReal volume;
 56: } PetscFVCellGeom;

 58: #endif