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