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 25*e2d107dbSDave May typedef enum { 26*e2d107dbSDave May DMSWARMPIC_LAYOUT_REGULAR=0, 27*e2d107dbSDave May DMSWARMPIC_LAYOUT_GAUSS, 28*e2d107dbSDave May DMSWARMPIC_LAYOUT_SUBDIVISION, 29*e2d107dbSDave May } DMSwarmPICLayoutType; 30*e2d107dbSDave May 31853ec3c6SDave May PETSC_EXTERN const char* DMSwarmTypeNames[]; 32853ec3c6SDave May PETSC_EXTERN const char* DMSwarmMigrateTypeNames[]; 33853ec3c6SDave May PETSC_EXTERN const char* DMSwarmCollectTypeNames[]; 34853ec3c6SDave May 35853ec3c6SDave May PETSC_EXTERN const char DMSwarmField_pid[]; 36853ec3c6SDave May PETSC_EXTERN const char DMSwarmField_rank[]; 37853ec3c6SDave May PETSC_EXTERN const char DMSwarmPICField_coor[]; 38*e2d107dbSDave May PETSC_EXTERN const char DMSwarmPICField_cellid[]; 39853ec3c6SDave May 40934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmCreateGlobalVectorFromField(DM,const char[],Vec*); 41934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmDestroyGlobalVectorFromField(DM,const char[],Vec*); 42fb1bcc12SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmCreateLocalVectorFromField(DM,const char[],Vec*); 43fb1bcc12SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmDestroyLocalVectorFromField(DM,const char[],Vec*); 44853ec3c6SDave May 45934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmInitializeFieldRegister(DM); 46934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmFinalizeFieldRegister(DM); 47934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmSetLocalSizes(DM,PetscInt,PetscInt); 48934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmRegisterPetscDatatypeField(DM,const char[],PetscInt,PetscDataType); 49934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmRegisterUserStructField(DM,const char[],size_t); 50934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmRegisterUserDatatypeField(DM,const char[],size_t,PetscInt); 51934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmGetField(DM,const char[],PetscInt*,PetscDataType*,void**); 52934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmRestoreField(DM,const char[],PetscInt*,PetscDataType*,void**); 53934315b8SMatthew G. Knepley 54934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmVectorDefineField(DM,const char[]); 55934315b8SMatthew G. Knepley 56934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmAddPoint(DM); 57934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmAddNPoints(DM,PetscInt); 58934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmRemovePoint(DM); 59934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmRemovePointAtIndex(DM,PetscInt); 60934315b8SMatthew G. Knepley 61934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmGetLocalSize(DM,PetscInt*); 62934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmGetSize(DM,PetscInt*); 63934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmMigrate(DM,PetscBool); 64934315b8SMatthew G. Knepley 65934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmCollectViewCreate(DM); 66934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmCollectViewDestroy(DM); 67934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmSetCellDM(DM,DM); 68934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmGetCellDM(DM,DM*); 69934315b8SMatthew G. Knepley 70934315b8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMSwarmSetType(DM,DMSwarmType); 71934315b8SMatthew G. Knepley 723d5c7219SDave May #endif 733d5c7219SDave May 74