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;