Mesh Oriented datABase  (version 5.4.1)
Array-based unstructured mesh datastructure
ZoltanPartitioner.cpp File Reference
#include <iostream>
#include <cassert>
#include <sstream>
#include <algorithm>
#include "moab/ZoltanPartitioner.hpp"
#include "moab/Interface.hpp"
#include "Internals.hpp"
#include "moab/Range.hpp"
#include "moab/WriteUtilIface.hpp"
#include "moab/MeshTopoUtil.hpp"
#include "MBTagConventions.hpp"
#include "moab/CN.hpp"
#include "moab/IntxMesh/IntxUtils.hpp"
+ Include dependency graph for ZoltanPartitioner.cpp:

Go to the source code of this file.

Defines

#define RR   if( MB_SUCCESS != result ) return result

Functions

int mbGetNumberOfAssignedObjects (void *, int *err)
void mbGetObjectList (void *, int, int, ZOLTAN_ID_PTR gids, ZOLTAN_ID_PTR lids, int wgt_dim, float *obj_wgts, int *err)
int mbGetObjectSize (void *, int *err)
void mbGetObject (void *, int, int, int numObjs, ZOLTAN_ID_PTR, ZOLTAN_ID_PTR lids, int numDim, double *pts, int *err)
void mbGetNumberOfEdges (void *, int, int, int numObjs, ZOLTAN_ID_PTR, ZOLTAN_ID_PTR lids, int *numEdges, int *err)
void mbGetEdgeList (void *, int, int, int numObjs, ZOLTAN_ID_PTR, ZOLTAN_ID_PTR lids, int *, ZOLTAN_ID_PTR nborGlobalIds, int *nborProcs, int wgt_dim, float *edge_wgts, int *err)
void mbGetPart (void *, int, int, int numObjs, ZOLTAN_ID_PTR, ZOLTAN_ID_PTR lids, int *part, int *err)

Variables

static double * Points = NULL
static int * GlobalIds = NULL
static int NumPoints = 0
static int * NumEdges = NULL
static int * NborGlobalId = NULL
static int * NborProcs = NULL
static double * ObjWeights = NULL
static double * EdgeWeights = NULL
static int * Parts = NULL
const bool debug = false

Define Documentation


Function Documentation

void mbGetEdgeList ( void *  ,
int  ,
int  ,
int  numObjs,
ZOLTAN_ID_PTR  ,
ZOLTAN_ID_PTR  lids,
int *  ,
ZOLTAN_ID_PTR  nborGlobalIds,
int *  nborProcs,
int  wgt_dim,
float *  edge_wgts,
int *  err 
)

Definition at line 2211 of file ZoltanPartitioner.cpp.

References EdgeWeights, NborGlobalId, NborProcs, NumEdges, and NumPoints.

Referenced by ZoltanPartitioner::balance_mesh(), ZoltanPartitioner::partition_mesh_and_geometry(), ZoltanPartitioner::partition_owned_cells(), and ZoltanPartitioner::repartition().

{
    int i, id, idSum, j;
    int next = 0;

    for( i = 0; i < numObjs; i++ )
    {
        id = lids[i];

        if( ( id < 0 ) || ( id >= NumPoints ) )
        {
            *err = 1;
            return;
        }

        idSum = 0;

        for( j = 0; j < id; j++ )
            idSum += NumEdges[j];

        for( j = 0; j < NumEdges[id]; j++ )
        {
            nborGlobalIds[next] = NborGlobalId[idSum];
            nborProcs[next]     = NborProcs[idSum];
            if( wgt_dim > 0 ) edge_wgts[next] = EdgeWeights[idSum];
            next++;
            idSum++;
        }
    }
}
int mbGetNumberOfAssignedObjects ( void *  userDefinedData,
int *  err 
)

MOAB, a Mesh-Oriented datABase, is a software component for creating, storing and accessing finite element mesh data.

Copyright 2004 Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. Zoltan: class to get a mesh from MOAB and write a Zoltan partition set for that mesh back into MOAB and to a file

Definition at line 2117 of file ZoltanPartitioner.cpp.

References NumPoints.

Referenced by ZoltanPartitioner::balance_mesh(), ZoltanPartitioner::partition_mesh_and_geometry(), ZoltanPartitioner::partition_owned_cells(), and ZoltanPartitioner::repartition().

{
    *err = 0;
    return NumPoints;
}
void mbGetNumberOfEdges ( void *  ,
int  ,
int  ,
int  numObjs,
ZOLTAN_ID_PTR  ,
ZOLTAN_ID_PTR  lids,
int *  numEdges,
int *  err 
)

Definition at line 2185 of file ZoltanPartitioner.cpp.

References NumEdges, and NumPoints.

Referenced by ZoltanPartitioner::balance_mesh(), ZoltanPartitioner::partition_mesh_and_geometry(), ZoltanPartitioner::partition_owned_cells(), and ZoltanPartitioner::repartition().

{
    int i, id;
    int next = 0;

    for( i = 0; i < numObjs; i++ )
    {
        id = lids[i];

        if( ( id < 0 ) || ( id >= NumPoints ) )
        {
            *err = 1;
            return;
        }

        numEdges[next++] = NumEdges[id];
    }
}
void mbGetObject ( void *  ,
int  ,
int  ,
int  numObjs,
ZOLTAN_ID_PTR  ,
ZOLTAN_ID_PTR  lids,
int  numDim,
double *  pts,
int *  err 
)

Definition at line 2148 of file ZoltanPartitioner.cpp.

References NumPoints, and Points.

Referenced by ZoltanPartitioner::balance_mesh(), ZoltanPartitioner::partition_mesh_and_geometry(), ZoltanPartitioner::partition_owned_cells(), and ZoltanPartitioner::repartition().

{
    int i, id, id3;
    int next = 0;

    if( numDim != 3 )
    {
        *err = 1;
        return;
    }

    for( i = 0; i < numObjs; i++ )
    {
        id = lids[i];

        if( ( id < 0 ) || ( id >= NumPoints ) )
        {
            *err = 1;
            return;
        }

        id3 = lids[i] * 3;

        pts[next++] = Points[id3];
        pts[next++] = Points[id3 + 1];
        pts[next++] = Points[id3 + 2];
    }
}
void mbGetObjectList ( void *  ,
int  ,
int  ,
ZOLTAN_ID_PTR  gids,
ZOLTAN_ID_PTR  lids,
int  wgt_dim,
float *  obj_wgts,
int *  err 
)

Definition at line 2123 of file ZoltanPartitioner.cpp.

References GlobalIds, NumPoints, and ObjWeights.

Referenced by ZoltanPartitioner::balance_mesh(), ZoltanPartitioner::partition_mesh_and_geometry(), ZoltanPartitioner::partition_owned_cells(), and ZoltanPartitioner::repartition().

{
    for( int i = 0; i < NumPoints; i++ )
    {
        gids[i] = GlobalIds[i];
        lids[i] = i;
        if( wgt_dim > 0 ) obj_wgts[i] = ObjWeights[i];
    }

    *err = 0;
}
void mbGetPart ( void *  ,
int  ,
int  ,
int  numObjs,
ZOLTAN_ID_PTR  ,
ZOLTAN_ID_PTR  lids,
int *  part,
int *  err 
)

Definition at line 2253 of file ZoltanPartitioner.cpp.

References NumPoints, and Parts.

Referenced by ZoltanPartitioner::partition_mesh_and_geometry().

{
    int i, id;
    int next = 0;

    for( i = 0; i < numObjs; i++ )
    {
        id = lids[i];

        if( ( id < 0 ) || ( id >= NumPoints ) )
        {
            *err = 1;
            return;
        }

        part[next++] = Parts[id];
    }
}

Variable Documentation

const bool debug = false

Definition at line 69 of file ZoltanPartitioner.cpp.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines