1 #if !defined(_FORESTIMPL_H)
2 #define _FORESTIMPL_H
3 
4 #include <petscmat.h>       /*I      "petscmat.h"          I*/
5 #include <petscdmforest.h> /*I      "petscdmforest.h"    I*/
6 #include <petscbt.h>
7 #include <petsc/private/dmimpl.h>
8 
9 typedef struct {
10   PetscInt                   refct;
11   void                       *data;
12   PetscErrorCode             (*clearadaptivityforest)(DM);
13   PetscErrorCode             (*getadaptivitysuccess)(DM,PetscBool*);
14   PetscErrorCode             (*transfervec)(DM,Vec,DM,Vec,PetscBool,PetscReal);
15   PetscErrorCode             (*transfervecfrombase)(DM,Vec,Vec);
16   PetscErrorCode             (*createcellchart)(DM,PetscInt*,PetscInt*);
17   PetscErrorCode             (*createcellsf)(DM,PetscSF*);
18   PetscErrorCode             (*destroy)(DM);
19   PetscErrorCode             (*ftemplate)(DM,DM);
20   PetscBool                  computeAdaptSF;
21   PetscErrorCode             (*mapcoordinates)(DM,PetscInt,PetscInt,const PetscReal[],PetscReal[],void*);
22   void                       *mapcoordinatesctx;
23   DMForestTopology           topology;
24   DM                         base;
25   DM                         adapt;
26   DMAdaptFlag                adaptPurpose;
27   PetscInt                   adjDim;
28   PetscInt                   overlap;
29   PetscInt                   minRefinement;
30   PetscInt                   maxRefinement;
31   PetscInt                   initRefinement;
32   PetscInt                   cStart;
33   PetscInt                   cEnd;
34   PetscSF                    cellSF;
35   PetscSF                    preCoarseToFine;
36   PetscSF                    coarseToPreFine;
37   DMLabel                    adaptLabel;
38   DMForestAdaptivityStrategy adaptStrategy;
39   PetscInt                   gradeFactor;
40   PetscReal                  *cellWeights;
41   PetscCopyMode              cellWeightsCopyMode;
42   PetscReal                  weightsFactor;
43   PetscReal                  weightCapacity;
44 } DM_Forest;
45 
46 PETSC_EXTERN PetscErrorCode DMCreate_Forest(DM);
47 PETSC_EXTERN PetscErrorCode DMClone_Forest(DM,DM*);
48 PETSC_EXTERN PetscErrorCode DMSetFromOptions_Forest(PetscOptionItems*,DM);
49 
50 #endif /* _FORESTIMPL_H */
51