1: #if !defined(PETSCFVTYPES_H) 2: #define PETSCFVTYPES_H 4: /*S 5: PetscLimiter - PETSc object that manages a finite volume slope limiter 7: Level: intermediate 9: Concepts: finite volume, limiter 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: intermediate 20: Concepts: finite volume 22: .seealso: PetscFVCreate(), PetscFVSetType(), PetscFVType 23: S*/ 24: typedef struct _p_PetscFV *PetscFV; 26: /*S 27: PetscFVFaceGeom - Data structure (C struct) for storing information about face geometry for a finite volume method. 29: Level: beginner 31: Note: The components are 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 36: Concepts: finite volume; geometry; unstructured mesh 38: .seealso: DMPlexComputeGeometryFVM() 39: S*/ 40: typedef struct { 41: PetscReal normal[3]; /* Area-scaled normals */ 42: PetscReal centroid[3]; /* Location of centroid (quadrature point) */ 43: PetscScalar grad[2][3]; /* Face contribution to gradient in left and right cell */ 44: } PetscFVFaceGeom; 46: /*S 47: PetscFVCellGeom - Data structure (C struct) for storing information about cell geometry for a finite volume method. 49: Level: beginner 51: Note: The components are 52: $ PetscReal centroid[3] - The cell centroid 53: $ PetscReal volume - The cell volume 55: Concepts: finite volume; geometry; unstructured mesh 57: .seealso: DMPlexComputeGeometryFVM() 58: S*/ 59: typedef struct { 60: PetscReal centroid[3]; 61: PetscReal volume; 62: } PetscFVCellGeom; 64: #endif