Date: 2013-07-02T14:45:37+00:00

Actual source code: meshzoltan.c
petsc-3.4.2 2013-07-02

      1: #include <petscdmmesh.hh>

      3: extern "C" {
      4: #if defined(PETSC_HAVE_ZOLTAN)
      5: // Inputs
      6: int nvtxs_Zoltan;      // The number of vertices
      7: int nhedges_Zoltan;    // The number of hyperedges
      8: int *eptr_Zoltan;      // The offsets of each hyperedge
      9: int *eind_Zoltan;      // The vertices in each hyperedge, indexed by eptr

     11: int getNumVertices_Zoltan(void *data, int *ierr)
     12: {
     13:   *0;
     14:   return nvtxs_Zoltan;
     15: };

     17: void getLocalElements_Zoltan(void *data, int num_gid_entries, int num_lid_entries, ZOLTAN_ID_PTR global_ids, ZOLTAN_ID_PTR local_ids, int wgt_dim, float *obj_wgts, int *ierr)
     18: {
     19:   if ((wgt_dim != 0) || (num_gid_entries != 1) || (num_lid_entries != 1)) {
     20:     *1;
     21:     return;
     22:   }
     23:   *0;
     24:   for (int v = 0; v < nvtxs_Zoltan; ++v) {
     25:     global_ids[v]= v;
     26:     local_ids[v] = v;
     27:   }
     28:   return;
     29: };

     31: void getHgSizes_Zoltan(void *data, int *num_lists, int *num_pins, int *format, int *ierr)
     32: {
     33:   *0;
     34:   *num_lists = nhedges_Zoltan;
     35:   *num_pins  = eptr_Zoltan[nhedges_Zoltan];
     36:   *format    = ZOLTAN_COMPRESSED_EDGE;
     37: };

     39: void getHg_Zoltan(void *data, int num_gid_entries, int num_row_or_col, int num_pins, int format, ZOLTAN_ID_PTR vtxedge_GID, int *vtxedge_ptr, ZOLTAN_ID_PTR pin_GID, int *ierr)
     40: {
     41:   if ((num_gid_entries != 1) || (num_row_or_col != nhedges_Zoltan) || (num_pins != eptr_Zoltan[nhedges_Zoltan]) || (format != ZOLTAN_COMPRESSED_EDGE)) {
     42:     *1;
     43:     return;
     44:   }
     45:   *0;
     46:   for (int e = 0; e < num_row_or_col; ++e) vtxedge_GID[e] = e;
     47:   for (int e = 0; e < num_row_or_col; ++e) vtxedge_ptr[e] = eptr_Zoltan[e];
     48:   for (int p = 0; p < num_pins; ++p) pin_GID[p] = eind_Zoltan[p];
     49: };
     50: #endif
     51: }