/usr/lib/petscdir/3.4.2/include/petsc-private/dmpleximpl.h is in libpetsc3.4.2-dev 3.4.2.dfsg1-8.1+b1.
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 | #if !defined(_PLEXIMPL_H)
#define _PLEXIMPL_H
#include <petscmat.h> /*I "petscmat.h" I*/
#include <petscdmplex.h> /*I "petscdmplex.h" I*/
#include <petscbt.h>
#include "petsc-private/dmimpl.h"
PETSC_EXTERN PetscLogEvent DMPLEX_Distribute, DMPLEX_Stratify;
/* This is an integer map, in addition it is also a container class
Design points:
- Low storage is the most important design point
- We want flexible insertion and deletion
- We can live with O(log) query, but we need O(1) iteration over strata
*/
struct _n_DMLabel {
PetscInt refct;
char *name; /* Label name */
PetscInt numStrata; /* Number of integer values */
PetscInt *stratumValues; /* Value of each stratum */
PetscInt *stratumOffsets; /* Offset of each stratum */
PetscInt *stratumSizes; /* Size of each stratum */
PetscInt *points; /* Points for each stratum, sorted after setup */
DMLabel next; /* Linked list */
PetscInt pStart, pEnd; /* Bounds for index lookup */
PetscBT bt; /* A bit-wise index */
};
typedef struct {
PetscInt refct;
PetscInt dim; /* Topological mesh dimension */
/* Sieve */
PetscSection coneSection; /* Layout of cones (inedges for DAG) */
PetscInt maxConeSize; /* Cached for fast lookup */
PetscInt *cones; /* Cone for each point */
PetscInt *coneOrientations; /* Orientation of each cone point, means cone traveral should start on point 'o', and if negative start on -(o+1) and go in reverse */
PetscSection supportSection; /* Layout of cones (inedges for DAG) */
PetscInt maxSupportSize; /* Cached for fast lookup */
PetscInt *supports; /* Cone for each point */
PetscBool refinementUniform; /* Flag for uniform cell refinement */
PetscReal refinementLimit; /* Maximum volume for refined cell */
PetscInt hybridPointMax[8]; /* Allow segregation of some points, each dimension has a divider (used in VTK output and refinement) */
PetscInt *facesTmp; /* Work space for faces operation */
/* Submesh */
DMLabel subpointMap; /* Label each original mesh point in the submesh with its depth, subpoint are the implicit numbering */
/* Labels and numbering */
DMLabel labels; /* Linked list of labels */
IS globalVertexNumbers;
IS globalCellNumbers;
/* Preallocation */
PetscInt preallocCenterDim; /* Dimension of the points which connect adjacent points for preallocation */
/* Output */
PetscInt vtkCellHeight; /* The height of cells for output, default is 0 */
PetscReal scale[NUM_PETSC_UNITS]; /* The scale for each SI unit */
/* FEM (should go in another DM) */
PetscErrorCode (*integrateResidualFEM)(PetscInt, PetscInt, PetscInt, PetscQuadrature[], const PetscScalar[],
const PetscReal[], const PetscReal[], const PetscReal[], const PetscReal[],
void (*)(const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[]),
void (*)(const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[]), PetscScalar[]);
PetscErrorCode (*integrateBdResidualFEM)(PetscInt, PetscInt, PetscInt, PetscQuadrature[], const PetscScalar[],
const PetscReal[], const PetscReal[], const PetscReal[], const PetscReal[], const PetscReal[],
void (*)(const PetscScalar[], const PetscScalar[], const PetscReal[], const PetscReal[], PetscScalar[]),
void (*)(const PetscScalar[], const PetscScalar[], const PetscReal[], const PetscReal[], PetscScalar[]), PetscScalar[]);
PetscErrorCode (*integrateJacobianActionFEM)(PetscInt, PetscInt, PetscInt, PetscQuadrature[], const PetscScalar[], const PetscScalar[],
const PetscReal[], const PetscReal[], const PetscReal[], const PetscReal[],
void (**)(const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[]),
void (**)(const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[]),
void (**)(const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[]),
void (**)(const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[]), PetscScalar[]);
PetscErrorCode (*integrateJacobianFEM)(PetscInt, PetscInt, PetscInt, PetscInt, PetscQuadrature[], const PetscScalar[],
const PetscReal[], const PetscReal[], const PetscReal[], const PetscReal[],
void (*)(const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[]),
void (*)(const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[]),
void (*)(const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[]),
void (*)(const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[]), PetscScalar[]);
/* Debugging */
PetscBool printSetValues;
PetscInt printFEM;
} DM_Plex;
PETSC_EXTERN PetscErrorCode DMPlexVTKWriteAll_VTU(DM,PetscViewer);
PETSC_EXTERN PetscErrorCode DMPlexVTKGetCellType(DM,PetscInt,PetscInt,PetscInt*);
PETSC_EXTERN PetscErrorCode VecView_Plex_Local(Vec,PetscViewer);
PETSC_EXTERN PetscErrorCode VecView_Plex(Vec,PetscViewer);
#endif /* _PLEXIMPL_H */
|