xref: /petsc/include/petscdmswarm.h (revision fb1bcc12063f9e4f058963d8c73423b163bfa0e5)
13d5c7219SDave May #if !defined(__PETSCDMSWARM_H)
23d5c7219SDave May #define __PETSCDMSWARM_H
33d5c7219SDave May 
43d5c7219SDave May #include <petscdm.h>
53d5c7219SDave May 
6480eef7bSDave May typedef enum {
7480eef7bSDave May   DMSWARM_BASIC=0,
8480eef7bSDave May   DMSWARM_PIC
9480eef7bSDave May } DMSwarmType;
10480eef7bSDave May 
11480eef7bSDave May typedef enum {
12480eef7bSDave May   DMSWARM_MIGRATE_BASIC=0,
13853ec3c6SDave May   DMSWARM_MIGRATE_DMCELLNSCATTER,
14853ec3c6SDave May   DMSWARM_MIGRATE_DMCELLEXACT,
15853ec3c6SDave May   DMSWARM_MIGRATE_USER
16480eef7bSDave May } DMSwarmMigrateType;
17480eef7bSDave May 
18480eef7bSDave May typedef enum {
19480eef7bSDave May   DMSWARM_COLLECT_BASIC=0,
20480eef7bSDave May   DMSWARM_COLLECT_DMDABOUNDINGBOX,
21853ec3c6SDave May   DMSWARM_COLLECT_GENERAL,
22853ec3c6SDave May   DMSWARM_COLLECT_USER
23480eef7bSDave May } DMSwarmCollectType;
24480eef7bSDave May 
25853ec3c6SDave May PETSC_EXTERN const char* DMSwarmTypeNames[];
26853ec3c6SDave May PETSC_EXTERN const char* DMSwarmMigrateTypeNames[];
27853ec3c6SDave May PETSC_EXTERN const char* DMSwarmCollectTypeNames[];
28853ec3c6SDave May 
29853ec3c6SDave May PETSC_EXTERN const char DMSwarmField_pid[];
30853ec3c6SDave May PETSC_EXTERN const char DMSwarmField_rank[];
31853ec3c6SDave May PETSC_EXTERN const char DMSwarmPICField_coor[];
32853ec3c6SDave May 
33853ec3c6SDave May 
34b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmCreateGlobalVectorFromField(DM dm,const char fieldname[],Vec *vec);
35b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmDestroyGlobalVectorFromField(DM dm,const char fieldname[],Vec *vec);
36e33ac6eaSMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmCreateGlobalVector(DM, const char[], Vec *);
37b5bcf523SDave May 
38b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmInitializeFieldRegister(DM dm);
39b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmFinalizeFieldRegister(DM dm);
40b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmSetLocalSizes(DM dm,PetscInt nlocal,PetscInt buffer);
41b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmRegisterPetscDatatypeField(DM dm,const char fieldname[],PetscInt blocksize,PetscDataType type);
42b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmRegisterUserStructField(DM dm,const char fieldname[],size_t size);
43320740a0SDave May PETSC_EXTERN PetscErrorCode DMSwarmRegisterUserDatatypeField(DM dm,const char fieldname[],size_t size,PetscInt blocksize);
44b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmGetField(DM dm,const char fieldname[],PetscInt *blocksize,PetscDataType *type,void **data);
45b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmRestoreField(DM dm,const char fieldname[],PetscInt *blocksize,PetscDataType *type,void **data);
46b5bcf523SDave May 
47b5bcf523SDave May PETSC_EXTERN PetscErrorCode DMSwarmVectorDefineField(DM dm,const char fieldname[]);
483d5c7219SDave May 
49cb1d1399SDave May PETSC_EXTERN PetscErrorCode DMSwarmAddPoint(DM dm);
50cb1d1399SDave May PETSC_EXTERN PetscErrorCode DMSwarmAddNPoints(DM dm,PetscInt npoints);
51cb1d1399SDave May PETSC_EXTERN PetscErrorCode DMSwarmRemovePoint(DM dm);
52cb1d1399SDave May PETSC_EXTERN PetscErrorCode DMSwarmRemovePointAtIndex(DM dm,PetscInt idx);
53cb1d1399SDave May 
54dcf43ee8SDave May PETSC_EXTERN PetscErrorCode DMSwarmGetLocalSize(DM dm,PetscInt *nlocal);
55dcf43ee8SDave May PETSC_EXTERN PetscErrorCode DMSwarmGetSize(DM dm,PetscInt *n);
56dcf43ee8SDave May PETSC_EXTERN PetscErrorCode DMSwarmMigrate(DM dm,PetscBool remove_sent_points);
57dcf43ee8SDave May 
58fe39f135SDave May PETSC_EXTERN PetscErrorCode DMSwarmCollectViewCreate(DM dm);
59fe39f135SDave May PETSC_EXTERN PetscErrorCode DMSwarmCollectViewDestroy(DM dm);
60b16650c8SDave May PETSC_EXTERN PetscErrorCode DMSwarmSetCellDM(DM dm,DM dmcell);
61fe39f135SDave May PETSC_EXTERN PetscErrorCode DMSwarmGetCellDM(DM dm,DM *dmcell);
622712d1f2SDave May 
63853ec3c6SDave May PETSC_EXTERN PetscErrorCode DMSwarmSetType(DM dm,DMSwarmType stype);
64*fb1bcc12SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmCreateLocalVectorFromField(DM,const char[],Vec*);
65*fb1bcc12SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmDestroyLocalVectorFromField(DM,const char[],Vec*);
66853ec3c6SDave May 
673d5c7219SDave May #endif
683d5c7219SDave May 
69