xref: /petsc/include/petscdmswarm.h (revision 480eef7b45975a89e98bc4cecdc59060a0a0bd97)
13d5c7219SDave May #if !defined(__PETSCDMSWARM_H)
23d5c7219SDave May #define __PETSCDMSWARM_H
33d5c7219SDave May 
43d5c7219SDave May #include <petscdm.h>
53d5c7219SDave May 
6*480eef7bSDave May typedef enum {
7*480eef7bSDave May   DMSWARM_BASIC=0,
8*480eef7bSDave May   DMSWARM_PIC
9*480eef7bSDave May } DMSwarmType;
10*480eef7bSDave May 
11*480eef7bSDave May typedef enum {
12*480eef7bSDave May   DMSWARM_MIGRATE_BASIC=0,
13*480eef7bSDave May   DMSWARM_MIGRATE_DM
14*480eef7bSDave May } DMSwarmMigrateType;
15*480eef7bSDave May 
16*480eef7bSDave May typedef enum {
17*480eef7bSDave May   DMSWARM_COLLECT_BASIC=0,
18*480eef7bSDave May   DMSWARM_COLLECT_DMDABOUNDINGBOX,
19*480eef7bSDave May   DMSWARM_COLLECT_GENERAL
20*480eef7bSDave May } DMSwarmCollectType;
21*480eef7bSDave May 
22b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmCreateGlobalVectorFromField(DM dm,const char fieldname[],Vec *vec);
23b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmDestroyGlobalVectorFromField(DM dm,const char fieldname[],Vec *vec);
24b5bcf523SDave May 
25b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmInitializeFieldRegister(DM dm);
26b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmFinalizeFieldRegister(DM dm);
27b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmSetLocalSizes(DM dm,PetscInt nlocal,PetscInt buffer);
28b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmRegisterPetscDatatypeField(DM dm,const char fieldname[],PetscInt blocksize,PetscDataType type);
29b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmRegisterUserStructField(DM dm,const char fieldname[],size_t size);
30b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmRegisterUserDatatypeField(DM dm,const char fieldname[],size_t size);
31b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmGetField(DM dm,const char fieldname[],PetscInt *blocksize,PetscDataType *type,void **data);
32b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmRestoreField(DM dm,const char fieldname[],PetscInt *blocksize,PetscDataType *type,void **data);
33b5bcf523SDave May 
34b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmVectorDefineField(DM dm,const char fieldname[]);
353d5c7219SDave May 
36cb1d1399SDave May PETSC_EXTERN PetscErrorCode DMSwarmAddPoint(DM dm);
37cb1d1399SDave May PETSC_EXTERN PetscErrorCode DMSwarmAddNPoints(DM dm,PetscInt npoints);
38cb1d1399SDave May PETSC_EXTERN PetscErrorCode DMSwarmRemovePoint(DM dm);
39cb1d1399SDave May PETSC_EXTERN PetscErrorCode DMSwarmRemovePointAtIndex(DM dm,PetscInt idx);
40cb1d1399SDave May 
41dcf43ee8SDave May PETSC_EXTERN PetscErrorCode DMSwarmGetLocalSize(DM dm,PetscInt *nlocal);
42dcf43ee8SDave May PETSC_EXTERN PetscErrorCode DMSwarmGetSize(DM dm,PetscInt *n);
43dcf43ee8SDave May PETSC_EXTERN PetscErrorCode DMSwarmMigrate(DM dm,PetscBool remove_sent_points);
44dcf43ee8SDave May 
45fe39f135SDave May PETSC_EXTERN PetscErrorCode DMSwarmCollectViewCreate(DM dm);
46fe39f135SDave May PETSC_EXTERN PetscErrorCode DMSwarmCollectViewDestroy(DM dm);
47b16650c8SDave May PETSC_EXTERN PetscErrorCode DMSwarmSetCellDM(DM dm,DM dmcell);
48fe39f135SDave May PETSC_EXTERN PetscErrorCode DMSwarmGetCellDM(DM dm,DM *dmcell);
492712d1f2SDave May 
503d5c7219SDave May #endif
513d5c7219SDave May 
52