Actual source code: petscfvtypes.h

  1: #pragma once

  3: /* SUBMANSEC = FV */

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

  8:   Level: beginner

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

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

 17:   Level: beginner

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

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

 26:   Level: beginner

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

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

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

 47:   Level: beginner

 49:   Note: The components are
 50: .vb
 51:    PetscReal   centroid[3] - The cell centroid
 52:    PetscReal   volume      - The cell volume
 53: .ve

 55: .seealso: `PetscFVFaceGeom`, `DMPlexComputeGeometryFVM()`
 56: S*/
 57: typedef struct {
 58:   PetscReal centroid[3];
 59:   PetscReal volume;
 60: } PetscFVCellGeom;