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_DM 14 } DMSwarmMigrateType; 15 16 typedef enum { 17 DMSWARM_COLLECT_BASIC=0, 18 DMSWARM_COLLECT_DMDABOUNDINGBOX, 19 DMSWARM_COLLECT_GENERAL 20 } DMSwarmCollectType; 21 22 PETSC_EXTERN PetscErrorCode DMSwarmCreateGlobalVectorFromField(DM dm,const char fieldname[],Vec *vec); 23 PETSC_EXTERN PetscErrorCode DMSwarmDestroyGlobalVectorFromField(DM dm,const char fieldname[],Vec *vec); 24 25 PETSC_EXTERN PetscErrorCode DMSwarmInitializeFieldRegister(DM dm); 26 PETSC_EXTERN PetscErrorCode DMSwarmFinalizeFieldRegister(DM dm); 27 PETSC_EXTERN PetscErrorCode DMSwarmSetLocalSizes(DM dm,PetscInt nlocal,PetscInt buffer); 28 PETSC_EXTERN PetscErrorCode DMSwarmRegisterPetscDatatypeField(DM dm,const char fieldname[],PetscInt blocksize,PetscDataType type); 29 PETSC_EXTERN PetscErrorCode DMSwarmRegisterUserStructField(DM dm,const char fieldname[],size_t size); 30 PETSC_EXTERN PetscErrorCode DMSwarmRegisterUserDatatypeField(DM dm,const char fieldname[],size_t size); 31 PETSC_EXTERN PetscErrorCode DMSwarmGetField(DM dm,const char fieldname[],PetscInt *blocksize,PetscDataType *type,void **data); 32 PETSC_EXTERN PetscErrorCode DMSwarmRestoreField(DM dm,const char fieldname[],PetscInt *blocksize,PetscDataType *type,void **data); 33 34 PETSC_EXTERN PetscErrorCode DMSwarmVectorDefineField(DM dm,const char fieldname[]); 35 36 PETSC_EXTERN PetscErrorCode DMSwarmAddPoint(DM dm); 37 PETSC_EXTERN PetscErrorCode DMSwarmAddNPoints(DM dm,PetscInt npoints); 38 PETSC_EXTERN PetscErrorCode DMSwarmRemovePoint(DM dm); 39 PETSC_EXTERN PetscErrorCode DMSwarmRemovePointAtIndex(DM dm,PetscInt idx); 40 41 PETSC_EXTERN PetscErrorCode DMSwarmGetLocalSize(DM dm,PetscInt *nlocal); 42 PETSC_EXTERN PetscErrorCode DMSwarmGetSize(DM dm,PetscInt *n); 43 PETSC_EXTERN PetscErrorCode DMSwarmMigrate(DM dm,PetscBool remove_sent_points); 44 45 PETSC_EXTERN PetscErrorCode DMSwarmCollectViewCreate(DM dm); 46 PETSC_EXTERN PetscErrorCode DMSwarmCollectViewDestroy(DM dm); 47 PETSC_EXTERN PetscErrorCode DMSwarmSetCellDM(DM dm,DM dmcell); 48 PETSC_EXTERN PetscErrorCode DMSwarmGetCellDM(DM dm,DM *dmcell); 49 50 #endif 51 52