xref: /petsc/include/petscdmswarm.h (revision e33ac6ea24f6599a0af4ee74818823cc2536ff6f)
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 PETSC_EXTERN const char* DMSwarmTypeNames[];
26 PETSC_EXTERN const char* DMSwarmMigrateTypeNames[];
27 PETSC_EXTERN const char* DMSwarmCollectTypeNames[];
28 
29 PETSC_EXTERN const char DMSwarmField_pid[];
30 PETSC_EXTERN const char DMSwarmField_rank[];
31 PETSC_EXTERN const char DMSwarmPICField_coor[];
32 
33 
34 PETSC_EXTERN PetscErrorCode DMSwarmCreateGlobalVectorFromField(DM dm,const char fieldname[],Vec *vec);
35 PETSC_EXTERN PetscErrorCode DMSwarmDestroyGlobalVectorFromField(DM dm,const char fieldname[],Vec *vec);
36 PETSC_EXTERN PetscErrorCode DMSwarmCreateGlobalVector(DM, const char[], Vec *);
37 
38 PETSC_EXTERN PetscErrorCode DMSwarmInitializeFieldRegister(DM dm);
39 PETSC_EXTERN PetscErrorCode DMSwarmFinalizeFieldRegister(DM dm);
40 PETSC_EXTERN PetscErrorCode DMSwarmSetLocalSizes(DM dm,PetscInt nlocal,PetscInt buffer);
41 PETSC_EXTERN PetscErrorCode DMSwarmRegisterPetscDatatypeField(DM dm,const char fieldname[],PetscInt blocksize,PetscDataType type);
42 PETSC_EXTERN PetscErrorCode DMSwarmRegisterUserStructField(DM dm,const char fieldname[],size_t size);
43 PETSC_EXTERN PetscErrorCode DMSwarmRegisterUserDatatypeField(DM dm,const char fieldname[],size_t size,PetscInt blocksize);
44 PETSC_EXTERN PetscErrorCode DMSwarmGetField(DM dm,const char fieldname[],PetscInt *blocksize,PetscDataType *type,void **data);
45 PETSC_EXTERN PetscErrorCode DMSwarmRestoreField(DM dm,const char fieldname[],PetscInt *blocksize,PetscDataType *type,void **data);
46 
47 PETSC_EXTERN PetscErrorCode DMSwarmVectorDefineField(DM dm,const char fieldname[]);
48 
49 PETSC_EXTERN PetscErrorCode DMSwarmAddPoint(DM dm);
50 PETSC_EXTERN PetscErrorCode DMSwarmAddNPoints(DM dm,PetscInt npoints);
51 PETSC_EXTERN PetscErrorCode DMSwarmRemovePoint(DM dm);
52 PETSC_EXTERN PetscErrorCode DMSwarmRemovePointAtIndex(DM dm,PetscInt idx);
53 
54 PETSC_EXTERN PetscErrorCode DMSwarmGetLocalSize(DM dm,PetscInt *nlocal);
55 PETSC_EXTERN PetscErrorCode DMSwarmGetSize(DM dm,PetscInt *n);
56 PETSC_EXTERN PetscErrorCode DMSwarmMigrate(DM dm,PetscBool remove_sent_points);
57 
58 PETSC_EXTERN PetscErrorCode DMSwarmCollectViewCreate(DM dm);
59 PETSC_EXTERN PetscErrorCode DMSwarmCollectViewDestroy(DM dm);
60 PETSC_EXTERN PetscErrorCode DMSwarmSetCellDM(DM dm,DM dmcell);
61 PETSC_EXTERN PetscErrorCode DMSwarmGetCellDM(DM dm,DM *dmcell);
62 
63 PETSC_EXTERN PetscErrorCode DMSwarmSetType(DM dm,DMSwarmType stype);
64 
65 #endif
66 
67