/usr/lib/petscdir/3.7.7/x86_64-linux-gnu-complex-debug/include/petsc/private/petscfvimpl.h is in libpetsc-complex-3.7.7-dbg 3.7.7+dfsg1-2build5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | #if !defined(_PETSCFVIMPL_H)
#define _PETSCFVIMPL_H
#include <petscfv.h>
#include <petsc/private/petscimpl.h>
PETSC_EXTERN PetscBool PetscLimiterRegisterAllCalled;
PETSC_EXTERN PetscBool PetscFVRegisterAllCalled;
PETSC_EXTERN PetscErrorCode PetscLimiterRegisterAll(void);
PETSC_EXTERN PetscErrorCode PetscFVRegisterAll(void);
typedef struct _PetscLimiterOps *PetscLimiterOps;
struct _PetscLimiterOps {
PetscErrorCode (*setfromoptions)(PetscLimiter);
PetscErrorCode (*setup)(PetscLimiter);
PetscErrorCode (*view)(PetscLimiter,PetscViewer);
PetscErrorCode (*destroy)(PetscLimiter);
PetscErrorCode (*limit)(PetscLimiter, PetscReal, PetscReal *);
};
struct _p_PetscLimiter {
PETSCHEADER(struct _PetscLimiterOps);
void *data; /* Implementation object */
};
typedef struct {
PetscInt dummy;
} PetscLimiter_Sin;
typedef struct {
PetscInt dummy;
} PetscLimiter_Zero;
typedef struct {
PetscInt dummy;
} PetscLimiter_None;
typedef struct {
PetscInt dummy;
} PetscLimiter_Minmod;
typedef struct {
PetscInt dummy;
} PetscLimiter_VanLeer;
typedef struct {
PetscInt dummy;
} PetscLimiter_VanAlbada;
typedef struct {
PetscInt dummy;
} PetscLimiter_Superbee;
typedef struct {
PetscInt dummy;
} PetscLimiter_MC;
typedef struct _PetscFVOps *PetscFVOps;
struct _PetscFVOps {
PetscErrorCode (*setfromoptions)(PetscFV);
PetscErrorCode (*setup)(PetscFV);
PetscErrorCode (*view)(PetscFV,PetscViewer);
PetscErrorCode (*destroy)(PetscFV);
PetscErrorCode (*computegradient)(PetscFV, PetscInt, const PetscScalar[], PetscScalar []);
PetscErrorCode (*integraterhsfunction)(PetscFV, PetscDS, PetscInt, PetscInt, PetscFVFaceGeom *, PetscReal *, PetscScalar[], PetscScalar[], PetscScalar[], PetscScalar[]);
};
struct _p_PetscFV {
PETSCHEADER(struct _PetscFVOps);
void *data; /* Implementation object */
PetscLimiter limiter; /* The slope limiter */
PetscDualSpace dualSpace; /* The dual space P', usually simple */
PetscInt numComponents; /* The number of field components */
PetscInt dim; /* The spatial dimension */
PetscBool computeGradients; /* Flag for gradient computation */
PetscScalar *fluxWork; /* The work array for flux calculation */
PetscQuadrature quadrature; /* Suitable quadrature on the volume */
PetscReal *B, *D, *H; /* Tabulation of pseudo-basis and derivatives at quadrature points */
char **componentNames; /* Names of the component fields */
};
typedef struct {
PetscInt cellType;
} PetscFV_Upwind;
typedef struct {
PetscInt maxFaces, workSize;
PetscScalar *B, *Binv, *tau, *work;
} PetscFV_LeastSquares;
#undef __FUNCT__
#define __FUNCT__ "PetscFVInterpolate_Static"
PETSC_STATIC_INLINE PetscErrorCode PetscFVInterpolate_Static(PetscFV fv, const PetscScalar x[], PetscInt q, PetscScalar interpolant[])
{
PetscInt Nc, fc;
PetscErrorCode ierr;
PetscFunctionBeginHot;
ierr = PetscFVGetNumComponents(fv, &Nc);CHKERRQ(ierr);
for (fc = 0; fc < Nc; ++fc) {interpolant[fc] = x[fc];}
PetscFunctionReturn(0);
}
#endif
|