Ignore:
Timestamp:
10/06/22 12:50:04 (21 months ago)
Author:
jderouillat
Message:

Backport commits [1977, 2181, 2200-2202, 2250, 2252] related to UGRID in XIOS3 beta

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS3/branches/xios-3.0-beta/src/node/mesh.cpp

    r2284 r2417  
    430430    if (nvertex == 1) 
    431431    { 
     432      if (nodesAreWritten) return ; 
     433 
    432434      nbNodes_ = lonvalue.numElements(); 
    433435      node_lon.resize(nbNodes_); 
     
    435437      node_lon = lonvalue; 
    436438      node_lat = latvalue; 
     439 
     440      unsigned long nodeCount = nbNodes_; 
     441      unsigned long nodeStart, nbNodes; 
     442      MPI_Scan(&nodeCount, &nodeStart, 1, MPI_UNSIGNED_LONG, MPI_SUM, comm); 
     443      int nNodes = nodeStart; 
     444      MPI_Bcast(&nNodes, 1, MPI_UNSIGNED_LONG, mpiSize-1, comm); 
     445      nbNodesGlo = nNodes; 
     446 
     447      nodeStart -= nodeCount; 
     448      node_start = nodeStart; 
     449      node_count = nodeCount; 
    437450 
    438451      // Global node indexes 
     
    444457        for (size_t nh = 0; nh < 4; ++nh) 
    445458        { 
    446           nodeHash2IdxGlo[hashValues[nh]].push_back(mpiRank*nbNodes_ + nn); 
     459          nodeHash2IdxGlo[hashValues[nh]].push_back(nodeStart + nn); 
    447460        } 
    448461      } 
     
    453466    else if (nvertex == 2) 
    454467    { 
     468      if (edgesAreWritten) return ; 
     469 
    455470      nbEdges_ = bounds_lon.shape()[1]; 
    456471      edge_lon.resize(nbEdges_); 
     
    463478      unsigned long nbEdgesOnProc = nbEdges_; 
    464479      unsigned long nbEdgesAccum; 
     480      unsigned long nbEdgesGlo; 
    465481      MPI_Scan(&nbEdgesOnProc, &nbEdgesAccum, 1, MPI_UNSIGNED_LONG, MPI_SUM, comm); 
     482      nbEdgesGlo = nbEdgesAccum ; 
     483      MPI_Bcast(&nbEdgesGlo, 1, MPI_UNSIGNED_LONG, mpiSize-1, comm); 
    466484      nbEdgesAccum -= nbEdges_; 
     485      edge_start = nbEdgesAccum ; 
     486      edge_count = nbEdgesOnProc ; 
    467487 
    468488      CClientClientDHTSizet::Index2VectorInfoTypeMap edgeHash2IdxGlo; 
     
    674694    } //nvertex = 2 
    675695 
    676     else 
    677     { 
     696    else // nvertex > 2 
     697    { 
     698      if (facesAreWritten) return ; 
     699 
    678700      nbFaces_ = bounds_lon.shape()[1]; 
    679701      face_lon.resize(nbFaces_); 
Note: See TracChangeset for help on using the changeset viewer.