xref: /petsc/include/petscdmswarm.h (revision e2d107db826654ae5ceb41f42932c0068b201924)
1 #if !defined(__PETSCDMSWARM_H)
2 #define __PETSCDMSWARM_H
3 
4 #include <petscdm.h>
5 
6 typedef enum {
7   DMSWARM_BASIC=0,
8   DMSWARM_PIC
9 } DMSwarmType;
10 
11 typedef enum {
12   DMSWARM_MIGRATE_BASIC=0,
13   DMSWARM_MIGRATE_DMCELLNSCATTER,
14   DMSWARM_MIGRATE_DMCELLEXACT,
15   DMSWARM_MIGRATE_USER
16 } DMSwarmMigrateType;
17 
18 typedef enum {
19   DMSWARM_COLLECT_BASIC=0,
20   DMSWARM_COLLECT_DMDABOUNDINGBOX,
21   DMSWARM_COLLECT_GENERAL,
22   DMSWARM_COLLECT_USER
23 } DMSwarmCollectType;
24 
25 typedef enum {
26   DMSWARMPIC_LAYOUT_REGULAR=0,
27   DMSWARMPIC_LAYOUT_GAUSS,
28   DMSWARMPIC_LAYOUT_SUBDIVISION,
29 } DMSwarmPICLayoutType;
30 
31 PETSC_EXTERN const char* DMSwarmTypeNames[];
32 PETSC_EXTERN const char* DMSwarmMigrateTypeNames[];
33 PETSC_EXTERN const char* DMSwarmCollectTypeNames[];
34 
35 PETSC_EXTERN const char DMSwarmField_pid[];
36 PETSC_EXTERN const char DMSwarmField_rank[];
37 PETSC_EXTERN const char DMSwarmPICField_coor[];
38 PETSC_EXTERN const char DMSwarmPICField_cellid[];
39 
40 PETSC_EXTERN PetscErrorCode DMSwarmCreateGlobalVectorFromField(DM,const char[],Vec*);
41 PETSC_EXTERN PetscErrorCode DMSwarmDestroyGlobalVectorFromField(DM,const char[],Vec*);
42 PETSC_EXTERN PetscErrorCode DMSwarmCreateLocalVectorFromField(DM,const char[],Vec*);
43 PETSC_EXTERN PetscErrorCode DMSwarmDestroyLocalVectorFromField(DM,const char[],Vec*);
44 
45 PETSC_EXTERN PetscErrorCode DMSwarmInitializeFieldRegister(DM);
46 PETSC_EXTERN PetscErrorCode DMSwarmFinalizeFieldRegister(DM);
47 PETSC_EXTERN PetscErrorCode DMSwarmSetLocalSizes(DM,PetscInt,PetscInt);
48 PETSC_EXTERN PetscErrorCode DMSwarmRegisterPetscDatatypeField(DM,const char[],PetscInt,PetscDataType);
49 PETSC_EXTERN PetscErrorCode DMSwarmRegisterUserStructField(DM,const char[],size_t);
50 PETSC_EXTERN PetscErrorCode DMSwarmRegisterUserDatatypeField(DM,const char[],size_t,PetscInt);
51 PETSC_EXTERN PetscErrorCode DMSwarmGetField(DM,const char[],PetscInt*,PetscDataType*,void**);
52 PETSC_EXTERN PetscErrorCode DMSwarmRestoreField(DM,const char[],PetscInt*,PetscDataType*,void**);
53 
54 PETSC_EXTERN PetscErrorCode DMSwarmVectorDefineField(DM,const char[]);
55 
56 PETSC_EXTERN PetscErrorCode DMSwarmAddPoint(DM);
57 PETSC_EXTERN PetscErrorCode DMSwarmAddNPoints(DM,PetscInt);
58 PETSC_EXTERN PetscErrorCode DMSwarmRemovePoint(DM);
59 PETSC_EXTERN PetscErrorCode DMSwarmRemovePointAtIndex(DM,PetscInt);
60 
61 PETSC_EXTERN PetscErrorCode DMSwarmGetLocalSize(DM,PetscInt*);
62 PETSC_EXTERN PetscErrorCode DMSwarmGetSize(DM,PetscInt*);
63 PETSC_EXTERN PetscErrorCode DMSwarmMigrate(DM,PetscBool);
64 
65 PETSC_EXTERN PetscErrorCode DMSwarmCollectViewCreate(DM);
66 PETSC_EXTERN PetscErrorCode DMSwarmCollectViewDestroy(DM);
67 PETSC_EXTERN PetscErrorCode DMSwarmSetCellDM(DM,DM);
68 PETSC_EXTERN PetscErrorCode DMSwarmGetCellDM(DM,DM*);
69 
70 PETSC_EXTERN PetscErrorCode DMSwarmSetType(DM,DMSwarmType);
71 
72 #endif
73 
74