Date: 2022-03-04T17:40:02+00:00

Actual source code: dmswarmimpl.h

      2: #if !defined(_SWARMIMPL_H)
      3: #define _SWARMIMPL_H

      5: #include <petscvec.h>
      6: #include <petscmat.h>
      7: #include <petscdmswarm.h>
      8: #include <petsc/private/dmimpl.h>

     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;

     21: typedef struct _p_DMSwarmDataField* DMSwarmDataField;
     22: typedef struct _p_DMSwarmDataBucket* DMSwarmDataBucket;
     23: typedef struct _p_DMSwarmSort* DMSwarmSort;

     25: typedef struct {
     26:   DMSwarmDataBucket db;
     27:   PetscInt  refct;
     28:   PetscBool field_registration_initialized;
     29:   PetscBool field_registration_finalized;
     30:   /* DMSwarmProjectMethod *swarm_project;*/ /* swarm, geometry, result */

     32:   /* PetscInt overlap; */
     33:   /* PetscErrorCode (*update_overlap)(void); */

     35:   char      vec_field_name[PETSC_MAX_PATH_LEN];
     36:   PetscBool vec_field_set;
     37:   PetscInt  vec_field_bs,vec_field_nlocal;

     39:   PetscBool          issetup;
     40:   DMSwarmType        swarm_type;
     41:   DMSwarmMigrateType migrate_type;
     42:   DMSwarmCollectType collect_type;

     44:   DM        dmcell;

     46:   PetscBool migrate_error_on_missing_point;

     48:   PetscBool collect_view_active;
     49:   PetscInt  collect_view_reset_nlocal;
     50:   DMSwarmSort sort_context;
     51: } DM_Swarm;

     53: typedef struct {
     54:   PetscInt point_index;
     55:   PetscInt cell_index;
     56: } SwarmPoint;

     58: struct _p_DMSwarmSort {
     59:   PetscBool isvalid;
     60:   PetscInt ncells,npoints;
     61:   PetscInt *pcell_offsets;
     62:   SwarmPoint *list;
     63: };

     65: PETSC_INTERN PetscErrorCode DMSwarmMigrate_Push_Basic(DM, PetscBool);
     66: PETSC_INTERN PetscErrorCode DMSwarmMigrate_CellDMScatter(DM,PetscBool);
     67: PETSC_INTERN PetscErrorCode DMSwarmMigrate_CellDMExact(DM,PetscBool);

     69: #endif /* _SWARMIMPL_H */