1f62f30faSMatthew G. Knepley #if !defined(_PETSCFVTYPES_H) 2f62f30faSMatthew G. Knepley #define _PETSCFVTYPES_H 3f62f30faSMatthew G. Knepley 4f62f30faSMatthew G. Knepley /*S 5ab2453f0SMatthew G. Knepley PetscLimiter - PETSc object that manages a finite volume slope limiter 6ab2453f0SMatthew G. Knepley 7ab2453f0SMatthew G. Knepley Level: intermediate 8ab2453f0SMatthew G. Knepley 9ab2453f0SMatthew G. Knepley Concepts: finite volume, limiter 10ab2453f0SMatthew G. Knepley 11ab2453f0SMatthew G. Knepley .seealso: PetscLimiterCreate(), PetscLimiterSetType(), PetscLimiterType 12ab2453f0SMatthew G. Knepley S*/ 13ab2453f0SMatthew G. Knepley typedef struct _p_PetscLimiter *PetscLimiter; 14ab2453f0SMatthew G. Knepley 15ab2453f0SMatthew G. Knepley /*S 16f62f30faSMatthew G. Knepley PetscFV - PETSc object that manages a finite volume discretization 17f62f30faSMatthew G. Knepley 18f62f30faSMatthew G. Knepley Level: intermediate 19f62f30faSMatthew G. Knepley 20f62f30faSMatthew G. Knepley Concepts: finite volume 21f62f30faSMatthew G. Knepley 22f62f30faSMatthew G. Knepley .seealso: PetscFVCreate(), PetscFVSetType(), PetscFVType 23f62f30faSMatthew G. Knepley S*/ 24f62f30faSMatthew G. Knepley typedef struct _p_PetscFV *PetscFV; 25f62f30faSMatthew G. Knepley 26*523f37fcSMatthew G. Knepley /* Assuming dim <= 3 */ 27*523f37fcSMatthew G. Knepley typedef struct { 28*523f37fcSMatthew G. Knepley PetscReal normal[3]; /* Area-scaled normals */ 29*523f37fcSMatthew G. Knepley PetscReal centroid[3]; /* Location of centroid (quadrature point) */ 30*523f37fcSMatthew G. Knepley PetscScalar grad[2][3]; /* Face contribution to gradient in left and right cell */ 31*523f37fcSMatthew G. Knepley } PetscFVFaceGeom; 32*523f37fcSMatthew G. Knepley 33*523f37fcSMatthew G. Knepley typedef struct { 34*523f37fcSMatthew G. Knepley PetscReal centroid[3]; 35*523f37fcSMatthew G. Knepley PetscReal volume; 36*523f37fcSMatthew G. Knepley } PetscFVCellGeom; 37*523f37fcSMatthew G. Knepley 38f62f30faSMatthew G. Knepley #endif 39