/[escript]/trunk/dataexporter/src/NodeData.cpp
ViewVC logotype

Diff of /trunk/dataexporter/src/NodeData.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2810 by caltinay, Mon Dec 7 04:13:49 2009 UTC revision 2834 by caltinay, Thu Jan 7 06:06:56 2010 UTC
# Line 79  NodeData::NodeData(NodeData_ptr fullNode Line 79  NodeData::NodeData(NodeData_ptr fullNode
79          float* c = new float[numNodes];          float* c = new float[numNodes];
80          coords.push_back(c);          coords.push_back(c);
81          IndexMap::const_iterator mIt;          IndexMap::const_iterator mIt;
82          for (mIt = indexMap.begin(); mIt != indexMap.end(); mIt++)          for (mIt = indexMap.begin(); mIt != indexMap.end(); mIt++) {
83              c[mIt->second] = origC[mIt->first];              c[mIt->second] = origC[mIt->first];
84            }
85      }      }
86  }  }
87    
# Line 254  bool NodeData::readFromNc(NcFile* ncFile Line 255  bool NodeData::readFromNc(NcFile* ncFile
255  //  //
256  //  //
257  //  //
258  const IntVec& NodeData::getVarDataByName(const std::string& name) const  const IntVec& NodeData::getVarDataByName(const string& name) const
259  {  {
260      if (name == "Nodes_Id")      if (name == "Nodes_Id")
261          return nodeID;          return nodeID;
# Line 300  void NodeData::removeGhostNodes(int ownI Line 301  void NodeData::removeGhostNodes(int ownI
301      int firstId = nodeDist[ownIndex];      int firstId = nodeDist[ownIndex];
302      int lastId = nodeDist[ownIndex+1];      int lastId = nodeDist[ownIndex+1];
303    
304        // no ghost nodes
305        if (lastId-firstId == numNodes)
306            return;
307    
308        // we have at most lastId-firstId nodes, it could be less however if
309        // nodes were culled already
310      numNodes = lastId-firstId;      numNodes = lastId-firstId;
311    
312      CoordArray newCoords;      CoordArray newCoords;
# Line 313  void NodeData::removeGhostNodes(int ownI Line 320  void NodeData::removeGhostNodes(int ownI
320      IntVec newNodeGDOF, newNodeGNI, newNodeGRDFI, newNodeGRNI;      IntVec newNodeGDOF, newNodeGNI, newNodeGRDFI, newNodeGRNI;
321    
322      IndexMap nodeID2idx = getIndexMap();      IndexMap nodeID2idx = getIndexMap();
323            int destIdx = 0;
324      for (int i=firstId; i<lastId; i++) {      for (int i=firstId; i<lastId; i++) {
325          int idx = nodeID2idx[i];          IndexMap::iterator it = nodeID2idx.find(i);
326          for (int j=0; j<numDims; j++) {          if (it == nodeID2idx.end()) {
327              newCoords[j][i-firstId] = coords[j][idx];              continue;
328          }          }
329            int idx = it->second;
330            for (int dim=0; dim<numDims; dim++) {
331                newCoords[dim][destIdx] = coords[dim][idx];
332            }
333            destIdx++;
334          newNodeID.push_back(i);          newNodeID.push_back(i);
335          newNodeTag.push_back(nodeTag[idx]);          newNodeTag.push_back(nodeTag[idx]);
336          newNodeGDOF.push_back(nodeGDOF[idx]);          newNodeGDOF.push_back(nodeGDOF[idx]);
# Line 327  void NodeData::removeGhostNodes(int ownI Line 339  void NodeData::removeGhostNodes(int ownI
339          newNodeGRNI.push_back(nodeGRNI[idx]);          newNodeGRNI.push_back(nodeGRNI[idx]);
340      }      }
341    
342        numNodes = destIdx;
343    
344      for (it = coords.begin(); it != coords.end(); it++)      for (it = coords.begin(); it != coords.end(); it++)
345          delete[] *it;          delete[] *it;
346    

Legend:
Removed from v.2810  
changed lines
  Added in v.2834

  ViewVC Help
Powered by ViewVC 1.1.26