1: #pragma once 3: /* MANSEC = DM */ 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: 30: The components are 31: .vb 32: PetscReal normal[3] - Area-scaled normals 33: PetscReal centroid[3] - Location of centroid (quadrature point) 34: PetscScalar grad[2][3] - Face contribution to gradient in left and right cell 35: .ve 37: .seealso: `PetscFVCellGeom`, `DMPlexComputeGeometryFVM()` 38: S*/ 39: typedef struct { 40: PetscReal normal[3]; /* Area-scaled normals */ 41: PetscReal centroid[3]; /* Location of centroid (quadrature point) */ 42: PetscScalar grad[2][3]; /* Face contribution to gradient in left and right cell */ 43: } PetscFVFaceGeom; 45: /*S 46: PetscFVCellGeom - Data structure (C struct) for storing information about cell geometry for a finite volume method. 48: Level: beginner 50: Note: The components are 51: .vb 52: PetscReal centroid[3] - The cell centroid 53: PetscReal volume - The cell volume 54: .ve 56: .seealso: `PetscFVFaceGeom`, `DMPlexComputeGeometryFVM()` 57: S*/ 58: typedef struct { 59: PetscReal centroid[3]; 60: PetscReal volume; 61: } PetscFVCellGeom;