1 #pragma once 2 3 /* MANSEC = DM */ 4 /* SUBMANSEC = FV */ 5 6 /*S 7 PetscLimiter - PETSc object that manages a finite volume slope limiter 8 9 Level: beginner 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: beginner 19 20 .seealso: `PetscFVCreate()`, `PetscFVSetType()`, `PetscFVType` 21 S*/ 22 typedef struct _p_PetscFV *PetscFV; 23 24 /*S 25 PetscFVFaceGeom - Data structure (C struct) for storing information about face geometry for a finite volume method. 26 27 Level: beginner 28 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 36 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; 44 45 /*S 46 PetscFVCellGeom - Data structure (C struct) for storing information about cell geometry for a finite volume method. 47 48 Level: beginner 49 50 Note: The components are 51 .vb 52 PetscReal centroid[3] - The cell centroid 53 PetscReal volume - The cell volume 54 .ve 55 56 .seealso: `PetscFVFaceGeom`, `DMPlexComputeGeometryFVM()` 57 S*/ 58 typedef struct { 59 PetscReal centroid[3]; 60 PetscReal volume; 61 } PetscFVCellGeom; 62