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