1 2 #if !defined(_SWARMIMPL_H) 3 #define _SWARMIMPL_H 4 5 #include <petscvec.h> /*I "petscvec.h" I*/ 6 #include <petscmat.h> /*I "petscmat.h" I*/ 7 #include <petscdmswarm.h> /*I "petscdmswarm.h" I*/ 8 #include <petsc/private/dmimpl.h> 9 10 PETSC_EXTERN PetscLogEvent DMSWARM_Migrate; 11 PETSC_EXTERN PetscLogEvent DMSWARM_SetSizes; 12 PETSC_EXTERN PetscLogEvent DMSWARM_AddPoints; 13 PETSC_EXTERN PetscLogEvent DMSWARM_RemovePoints; 14 PETSC_EXTERN PetscLogEvent DMSWARM_Sort; 15 PETSC_EXTERN PetscLogEvent DMSWARM_DataExchangerTopologySetup; 16 PETSC_EXTERN PetscLogEvent DMSWARM_DataExchangerBegin; 17 PETSC_EXTERN PetscLogEvent DMSWARM_DataExchangerEnd; 18 PETSC_EXTERN PetscLogEvent DMSWARM_DataExchangerSendCount; 19 PETSC_EXTERN PetscLogEvent DMSWARM_DataExchangerPack; 20 21 typedef struct _p_DMSwarmDataField* DMSwarmDataField; 22 typedef struct _p_DMSwarmDataBucket* DMSwarmDataBucket; 23 typedef struct _p_DMSwarmSort* DMSwarmSort; 24 25 typedef struct { 26 DMSwarmDataBucket db; 27 28 PetscBool field_registration_initialized; 29 PetscBool field_registration_finalized; 30 /* DMSwarmProjectMethod *swarm_project;*/ /* swarm, geometry, result */ 31 32 /* PetscInt overlap; */ 33 /* PetscErrorCode (*update_overlap)(void); */ 34 35 char vec_field_name[PETSC_MAX_PATH_LEN]; 36 PetscBool vec_field_set; 37 PetscInt vec_field_bs,vec_field_nlocal; 38 39 PetscBool issetup; 40 DMSwarmType swarm_type; 41 DMSwarmMigrateType migrate_type; 42 DMSwarmCollectType collect_type; 43 44 DM dmcell; 45 46 PetscBool migrate_error_on_missing_point; 47 48 PetscBool collect_view_active; 49 PetscInt collect_view_reset_nlocal; 50 DMSwarmSort sort_context; 51 } DM_Swarm; 52 53 typedef struct { 54 PetscInt point_index; 55 PetscInt cell_index; 56 } SwarmPoint; 57 58 struct _p_DMSwarmSort { 59 PetscBool isvalid; 60 PetscInt ncells,npoints; 61 PetscInt *pcell_offsets; 62 SwarmPoint *list; 63 }; 64 65 66 PETSC_INTERN PetscErrorCode DMSwarmMigrate_Push_Basic(DM, PetscBool); 67 PETSC_INTERN PetscErrorCode DMSwarmMigrate_CellDMScatter(DM,PetscBool); 68 PETSC_INTERN PetscErrorCode DMSwarmMigrate_CellDMExact(DM,PetscBool); 69 70 #endif /* _SWARMIMPL_H */ 71