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;