1: #if !defined(PETSCFVTYPES_H) 2: #define PETSCFVTYPES_H 4: /*S 5: PetscLimiter - PETSc object that manages a finite volume slope limiter 7: Level: beginner 9: .seealso: PetscLimiterCreate(), PetscLimiterSetType(), PetscLimiterType 10: S*/ 11: typedef struct _p_PetscLimiter *PetscLimiter; 13: /*S 14: PetscFV - PETSc object that manages a finite volume discretization 16: Level: beginner 18: .seealso: PetscFVCreate(), PetscFVSetType(), PetscFVType 19: S*/ 20: typedef struct _p_PetscFV *PetscFV; 22: /*S 23: PetscFVFaceGeom - Data structure (C struct) for storing information about face geometry for a finite volume method. 25: Level: beginner 27: Note: The components are 28: $ PetscReal normal[3] - Area-scaled normals 29: $ PetscReal centroid[3] - Location of centroid (quadrature point) 30: $ PetscScalar grad[2][3] - Face contribution to gradient in left and right cell 32: .seealso: DMPlexComputeGeometryFVM() 33: S*/ 34: typedef struct { 35: PetscReal normal[3]; /* Area-scaled normals */ 36: PetscReal centroid[3]; /* Location of centroid (quadrature point) */ 37: PetscScalar grad[2][3]; /* Face contribution to gradient in left and right cell */ 38: } PetscFVFaceGeom; 40: /*S 41: PetscFVCellGeom - Data structure (C struct) for storing information about cell geometry for a finite volume method. 43: Level: beginner 45: Note: The components are 46: $ PetscReal centroid[3] - The cell centroid 47: $ PetscReal volume - The cell volume 49: .seealso: DMPlexComputeGeometryFVM() 50: S*/ 51: typedef struct { 52: PetscReal centroid[3]; 53: PetscReal volume; 54: } PetscFVCellGeom; 56: #endif