1 #if !defined(_PETSCFVTYPES_H) 2 #define _PETSCFVTYPES_H 3 4 /*S 5 PetscLimiter - PETSc object that manages a finite volume slope limiter 6 7 Level: intermediate 8 9 Concepts: finite volume, limiter 10 11 .seealso: PetscLimiterCreate(), PetscLimiterSetType(), PetscLimiterType 12 S*/ 13 typedef struct _p_PetscLimiter *PetscLimiter; 14 15 /*S 16 PetscFV - PETSc object that manages a finite volume discretization 17 18 Level: intermediate 19 20 Concepts: finite volume 21 22 .seealso: PetscFVCreate(), PetscFVSetType(), PetscFVType 23 S*/ 24 typedef struct _p_PetscFV *PetscFV; 25 26 /*S 27 PetscFVFaceGeom - Data structure (C struct) for storing information about face geometry for a finite volume method. 28 29 Level: beginner 30 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 35 36 Concepts: finite volume; geometry; unstructured mesh 37 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; 45 46 /*S 47 PetscFVCellGeom - Data structure (C struct) for storing information about cell geometry for a finite volume method. 48 49 Level: beginner 50 51 Note: The components are 52 $ PetscReal centroid[3] - The cell centroid 53 $ PetscReal volume - The cell volume 54 55 Concepts: finite volume; geometry; unstructured mesh 56 57 .seealso: DMPlexComputeGeometryFVM() 58 S*/ 59 typedef struct { 60 PetscReal centroid[3]; 61 PetscReal volume; 62 } PetscFVCellGeom; 63 64 #endif 65