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); 36*e33ac6eaSMatthew 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); 64853ec3c6SDave May 653d5c7219SDave May #endif 663d5c7219SDave May 67